Search This Blog


Tuesday, April 1, 2008

Passion Does Not Mean Total Indifference of Other Things

Mark Dennehy wrote a post entitled "The case against passion", in which he ranted against the seemly overrated importance of passion in programming. I am quite happy to know that my post triggered his response. Although I don't think he was directly responding to me, but I will like to comment on some of his points.

Mark started by saying that

to claim (or even worse, to imply) that good programmers are the ones who are so taken up in their code that they pay no attention to piddly little real world things like pay, stock options, pensions, health insurance, mortgages, taxes, politics, love lives, children, family or worst of all, hobbies that have nothing to do with programming, is utter nonsense.

Wait, who said that passionate about something means totally uninterested in other things else? Of course I understand that programmers are mere humans. Like other humans, programmers need food, cloth, job security etc. In fact, I recognized that economics incentive is important in producing commercial software that the users want, as opposed to the software that the programmers want. But one can be passionate about programming and at the same time, does not neglect his other commitments, such as running startups, or taking a dip into the business world and caring about his family.

Mark went on to suggest on keys to become a good programmer. His answer was persistence, talent and process-- but not passion. Passion is a fleeting thing. What is important is professionalism:
You want to know what a good programmer is? He or she is a professional. They get a job, they do it to the best of their ability, and they continually, dispassionately and deliberately improve how good that best is. They’re balanced people, with families and homes and jobs that they leave behind when they stop working, they include rest as part of their daily life, they take holidays and read widely and generally you find they’re more productive as a result. They take a task and they do it well and they do that consistently, instead of trying to do that one quick thing that will give them instant fame and ego-stroking. And maybe they’ll never have fanboys cheering them on when they put up slides in a conference that say “fuck you” to other developers; but when you get prostate cancer and the oncologist puts you into the IMRT machine to zap an area close to your gonads with a dozen different beams of radiation, you’ll probably find yourself hopeful that a professional wrote the controller’s software rather than someone who was always chasing the next hot thing in computing (and maybe never worrying about stupid dull things like documentation, specifications, tests, code reviews, quality control or that sort of old-fogie stuff).

Wow, I think he was stressing the definition of professionalism a bit too far. According to his definition, only 20% of all programmers are professional and the rest 80% of the programmers are merely vocational. I don't think that definition is fair to the vocational programmers. Vocational programmers are professionals, they do everything you tell them to do, they follow every process strictly, and they don't fail to deliver ( at least, not conspicuously). By any accounts, they are competent.

But when you look at their ways of doing things, you will find that the sparking of love and excitement to get things done are missing. Yes, they deliver. But they do only the bare minimum. They don't participate in process improvement; They don't read books or blogs to self-improve; they don't even care to improve; they take only whatever that has been given to them and show little or no initiative to question the status-quo.

At the session of code review, you look at their code and decide that some functions need tidy up. Some classes need to be bound together by a common interface, some duplicated logic need to be eliminated and some custom functions should be replaced by the available functions in the framework.

You suggest all manners of improvements, and the vocational programmers just give you a hurt look, "why are you suggesting changes when the programs can run smoothly?"

Oops, their pride is piqued. Congratulations, you've just hurt them. They don't understand why you need to refactor the code? After all, if the code is running so it should be fine right?

You explain that it is for the general good of the software. Code smells, like debts, tend to accumulate over time and it's best to eliminate them while early. Grudgingly, they comply and make the changes.

At the next meeting, you discover that they make the same mistakes, again.

They can be the Average Joe or ABC. They can do their job and give their best, but they are not the kind of people who care anything beyond their current job and skill sets.

Vocational programmers are not lacking in professionalism, they may not even be lacking in IQ either. What they are lacking, is passion.


Tom Pridham said...

My priorities in life are:

1. God
2. Wife
3. Job

I am very passionate about Java Enterprise programming and I treat all programs I am involved with with a personal touch. If you don't have some passion in your job, no matter what the job is, then change jobs!

Life is too short to not have passion in what you do.

Regards & God Bless,

Anonymous said...

It looks to me like Mark Dennehy has confused "passion" with "obsession". You can be passionate about something without being obsessed.

mlsci said...

Your post inspired me to think more on this concept of passion:

That's not to say passion isn't important. In fact, to remain professional, a professional has to have the passion for what they're doing so they would continue to learn and upgrade what they know. I wouldn't trust a doctor who stopped caring for the latest advances in medicine, for example, or who stopped having a passion for the latest techniques and protocols.

So we come back to what I meant by passion: the long lasting, enduring kind of fondness, enthusiasm, or desire. Clearly a professional has to have that to remain a professional in the long run. They probably need persistence, talent, and a focus on the process too.
Rest at: