Passionate Programming versus Caring Programming

by Krishna on September 13, 2011

Oren Eini (aka Ayende @ Rahien) replies to a job seeker who doesn't have any source code outside of work:

Put simply, we are looking for a .NET developer and one of the most important things that we look for is passion. In general, we have found that people that care and are interested in what they are doing tend to do other stuff rather than just their work assignments.

In other words, they have their own pet projects, it can be a personal site, a project for a friend, or just some code written to get familiar with some technology.

When you tell me that your only projects outside of work are 5+ years old, that is a bad indication for us.

While I think there is a strong correlation between programming skill and having pet projects, it has less to do with passion than other objective measures, such as:

  • A programmer with a toy project will spend several hours extra doing programming. Even 1 hour per day is over 9 weeks extra programming experience every year. Over time, that adds up.
  • The time spent is usually entire programming as opposed to meetings, documentation, fielding calls, etc. Also likely fewer interruptions and more time to think through the design than a deadline-driven work environment.
  • Such a programmer has a greater opportunity for challenging programming tasks compared to work, where if you belong in a team, things get divided up.
  • There is more scope for experimenting with third party software tools, especially open source that are sometimes not allowed in companies because of the legal implications. Sometimes the tool of choice of a software firm may be outdated in the market, but they are still using it because of the investment.

The number of hours spent is the key measure. Or perhaps number of hours per toy project. If a programmer has several toy projects, each taking a few hours, they haven’t learnt as much as someone who has spent weeks on a single project, because they wouldn’t have been able to explore different dimensions of programming such as performance, security, etc.

But let us go back to hiring. Oren is a little misguided when he cites passion as the necessary criterion for hiring. A programmer may have a lot of passion for programming in general, but could have little passion for a specific project or for working in a specific language or tool set. Sometimes, he or she may be more passionate and involved in the pet project than in the day job. For an employee to care about the project is just as much in the hands of the employer as it is in those of the employee. The employer has to make the work rewarding and challenging, as well as provide a good working environment.

Actually it is not even “passion” because what Oren is interested in is “caring for doing the appropriate thing”. But passion and caring are two different things, even though sometimes they are both manifested in the same person. Passion is about solving problems and it is short-term. Caring is about ensuring good health (of the project) and it is long-term. A passionate programmer can be great for solving challenging technical issues. But the solutions of a caring programmer are more thought through and will be less brittle. Passion implies enthusiasm; caring implies thoughtfulness. This may seem quibbling between two words, but there are real-world consequences.

For example, a caring programmer may decide *not* to take on a technical problem, even though it seems exciting, because the implications for the product in the long-term can be negative. It is possible to come up with an elegant solution that sometimes minimizes the impact of a programming addition, but the effects on future program analysis and design can be huge. This is not to choose between either style of programmer. You need the passionate type because you want some team members ready to jump on solving challenges (even if they seem frightening). You also need thinking developers who can understand the long-term vision of the product.

Reading Oren’s post, I am not sure if he is looking for one of those types or somebody who embodies both attributes. But if it is the caring type, he really should look for senior programmers who have a track history of working with projects over several releases to different customers. Such a developer would have lived through mistakes of wrongly selected or implemented features, and understood what customers look for. The life of a software product is such that it spends most of its time in maintenance and the caring programmer makes that time easier.

 

{ 5 comments }

Bhaskar Chowdhury September 14, 2011 at 1:32 am

This article most probably I will take with me everywhere!! indeed. Wonderfully written Krishna. You just hit the nail on the head by so beautifully describe the thin line between those.But having said that,becoming a Caring programmer takes time..for someone even more time..but you can get a problem solver at any time at your next door( most of the time..).

All the problem solving programmer should have the goal to be caring programmer,the more they spend time on it..more quickly they became caring,because they come to know the intricacies of the internals.Plus understanding the business objective of a project takes some taking..which no academics can teach. The best possible way to understand the business method of the project to spend time with it…no other way.

I do believe “passion” is the utmost important thing in professional life.Am I kidding?? No I am not.Because if someone don’t have the passion for any specific thing they are doing ..just can not extract out best of it.I have had noticed many a occasion that people are just doing thing like robot do and what they are asked to do. That should not be the case ,no matter what happen.Because meta information regarding anything just cannot come out if someone do just ordinary thing everyday.To go extra mile..one has to have the courage and passion(read love) towards the work.

Most of the programmer these days failed to be in love to their work.Because they have been injected and instilled in the mind that ..you are not able to provide me this ..you are out and considered not good enough.Yes , one more important thing ,the mindset of the programmer is very important.Alas!! I have been attached with open source and found that huge pool of developers/programmers so “Close” in their mind .It is a scenario in most of the cases.They missed so so many thing to be an effective real open source programmer and contributor.

On a side note: Pet projects is good. If S(he) good enough to learn..it help them produce better result at work place.

You might disagree with my thoughts..but those are mine. :)

Once again very well pointed out Krishna.

Krishna September 14, 2011 at 4:39 pm

Thanks for the comment, Bhaskar. You made a great point there – passionate programmer have to grow into caring programmers. And yes, passion should be there at the beginning. Otherwise they won’t go the extra mile.

TechSlam September 14, 2011 at 11:55 pm

Wonderfully written. Great post. Thanks.

Ahmed September 15, 2011 at 6:04 am

Interesting post KRISHNA .

Pet projects is the main thing that distinguish passion programmers from others.

The main difference btw job and home projects are depth of experience, cos at home projects you have plenty of time to play and experiment the new technology while applying it.

Ahmed.

Krishna September 15, 2011 at 9:26 am

True, Ahmed. Thanks for your comment.

Comments on this entry are closed.

{ 1 trackback }

Previous post:

Next post: