Technology with opinion

Monday, April 04, 2011

The Way of Kung Fu Programming

Kung Fu's literally meaning is the skill achieved through hard work. I was watching my kids watch the new version of Karate Kid and caught the scene where the kid is taking of his jacket and putting it back on repeatedly.

In the original Karate Kid the student was doing chores for his master, however, in politically correct times such as these this would be considered child labor so they decided to have him put on his jacket over and over again. Nevertheless, the point that is being made in both films (and throughout all martial arts movies and dojos) is that skill is achieved through hard work and practice.

This is something that is severely lacking from most of our occupations and lives. Our society is full of quick fixes for people in search of a quick buck within a culture that is driven more by money than passion. For the uber ambitious you can trade your weekends and in a few years have an MBA (weekend MBA programs). For the technically inclined, you can become Microsoft certified within one week even if you lack real world experience. Nothing is wrong with either of these in of itself however they are more/less marketing tools for yourself to land a job.

Trades used to have apprenticeship where individuals would be mentored within their occupation and people were given time to mature based upon their natural abilities and ambition. Repetition and practice is the key to becoming good at anything, but these two things are also great at filtering out people from a career for which they have no ambition. Of course, management and programming are part of many careers which people seek out without any true ambition of the subject. Unfortunately, the natural filters which used to exist that required someone to practice something no longer exist. Today with enough money, charisma or connection just about anybody can be anything, but that doesn't mean they can achieve anything.

Having Kung fu programming would mean that you are skilled. It doesn't mean that you're a a "Senior Developer" or "Architect"; these are just titles that our employers give to us. Seek your passion and if that passion is programming then follow in the ways of Kung fu programmers such as: Jimmy Bogard, Oren (AKA Ayande), Derick Bailey, Jeremy Miller or anyone blogging at Los Techies or CodeBetter. Also don't forget to practice even things that originally seem like basics and take some risks. It will help you improve and open up opportunities.

Tuesday, March 29, 2011

"Whatever happens is the only thing..

that could have happened" ....  this is the creed of Open Spaces:

"Whatever Happens is the Only Thing that Could have Happened"

To some people, this saying sounds ludicrous, and honestly when I first heard it I laughed.  Since the time I first heard it a few years ago at the first Open Spaces I attended, it seems more true every day.

Obviously there are no absolutes in life.  Self help books are one of the most popular categories in nonfiction but there is very little progress, why is this?  Perhaps because there is a difference between wanting your problems to go away and being ambitious & forward thinking enough for the fix.

One of the first books that I read early in my career was Code Complete and the Software Project Survival Guide.  Both were good books however the psychology of a project team is not often a discussed topic.  The purpose of this creed and the point behind Open Spaces is empowerment.  When people are empowered they will make the most honest decisions, work harder and be happier.

So why don't we do this more often and why does the word "deadline" even exist since it's only used to drive fear?  I asked a question on Twitter not too long ago, it was: "serious question, have you ever seen a project that was on time, on schedule and on budget (within the original scope)?".  Not one response from someone saying, "yes, we did".  One reply sums this up from @sdether "@kibbled_bits I've yet to see a product that finished with original scope".

Do projects ever finish on time, scope & budget?  It's probably very uncommon but I'm sure it has happened before.  The magical question is why the mass delusion?  Collectively, programmers, analysts & project managers on any team have been on dozens of projects that have been late, over budget or delivered with less scope.

Do we all suffer from a God complex, thinking we can fix everything with the power of our brains and refuse to accept the things that are outside of our control?  Or is the pressure of accepting the reality so great that denying the ultimate reality is easier than dealing with the pressure of knowing that you aren't tracking or worse, that you will miss the target.

Agile projects are the reality, whether you are practicing this discipline or not.  The only thing that is released is the only thing that could have been released.  Unfortunately, this mindset is hard for some to accept so you can either accept the reality or keep living in the dark.