Honest confession about my professional life: I am not the best programmer out there. To be honest, I am not even the best of the programmers to exist in the team of programmers that I work with. In fact, most programmers I help are already way better programmers than I am. The problems I have been playing with tend to be way bigger than what a programmer of my caliber usually ends up playing with.
Most of the times when I am giving a training session within my organization or to an external group of developers and I see eyes staring at me almost as-if I am this super-alpha-geek who know so much, deep down inside, I know really well that it is not the 'knowing so much' that is making my presentation tick. It is the articulately explaining what I know with a hugely different perspective that is keeping people's asses glued to their chair.
Then every once in a while, during these discussions or training sessions, depending on where I am conducting them, absurdly strange but rather funny and appropriate analogies will come out of my mouth. I will come out and pass random but relevant statements which were heard years ago or which are just formed at the runtime.
Things like, 'exchange of ideas and excessive dose of inspiration is nothing more than masturbation for your intellect' or 'knowing what interfaces are, is like knowing what sex is; truly realizing what they are and using them is what I call loosing your programmer virginity'.
Maybe this explains why Scott Berkun's video on Attention and Sex is one of my favorite videos on the topic of multitasking.
When it comes to technical discussion, maybe it is the philosophical, psychological and sometimes event the down-right weird perspective of looking at things which my mind tends to deploy, that comes to my rescue.
Maybe there is nothing very 'technical' about my 'technical' presentations after all.
When it comes to my work life, I tend to get approached by seriously kick-ass programmers who are looking for solutions to complicated problems. Or should I say problems begging to be solved with a really simple solution that no one seems to be thinking about. People also tend to come to me with problems that do not require solving in the first place. Problems where no one has even asked why the problem needs solving before they got down to solving it.
Maybe the techniques that I employ to solve the most 'technical' of the problems that I get approached with, are also not that 'technical' after all.
As someone who is a programmer at heart, a huge part of my programming life has been about realizing that programming languages are means to express your intent and while it is important to become really good and articulate at expressing your intent, working on having a really interesting intent in the first place is also equally important.
Even this blog, is my humble attempt at asking the questions that I would have otherwise never had the time or the spine to ask. Why for example, is using the F-word in a meeting considered so very sinister, why do you really need more features in an application before you go out to sell it, why is it so bad to suck at things and a truck load of other questions that I was never allowed to asked during my painful school life.
School taught me that being weird or different was a bad thing.
But then, I became a programmer early on and started doing a full time job while doing my college. What I learnt from the very first day of my very first job was that you actually got rewarded for being different. Since then, a huge part of my life has been about realizing that it was ok to be a purple cow at heart. That being a purple cow was in fact a good thing and it did not require fixing.
As a matter of fact, for months now, I have been consciously keeping some time every week to exercise my brain and allow it to wander into unchartered territories. I am not so sure you realize it, but I am doing it right now as I flip the keys on my keyboard and try to bring this post to life.
To a young and budding programmer who might be reading this, or to a veteran programmer who might be too busy building enterprise applications and who might be skimming through this post, I leave you with a gentle suggestion: As you pick up programming languages, tools and technologies, be sure that you set some time aside and that you spend this time at becoming the best purple cow that you can become.
I wish you good luck.