Let me begin with a quotation: “If you love your job, you’ll never work a day in your life”.
This has been attributed to Confucius, James Worsham, Mark Jackson, and Anonymous. I don’t know who the credits go to, but it’s someone of the above.
It is a fact that people who love their jobs are in general more productive than others and get things done. I see a strange phenomenon here, though. This one has to do with how programmers love their jobs compared to normal people.
Why do people love their jobs? I would imagine the answer to this is that they love what they achieve through them. A manager loves the teamwork spirit he has established in his team. A salesman loves the revenue coming from the many products he sold. A craftsman loves the product he created. I can go on like this forever. Until… I reach the obvious exception – programmers. Programmers don’t like what they create – they like the means they used to create it. I know most of them don’t admit it, but what programmers like is code and coding, not the outstanding web app coming out of it – or the slick 3D game.
I might be wrong at this one, but the longer I think about it, the more real it seems. We (yes, I consider myself a programmer) love the means we use, not the final product. I’ve tried to explain this to myself since I realized it, but I reach dead end all the time. Finally I just decided to accept it, like anything else that seems weird about programmers.
Here are some examples:
- Programmers fall in love with development practices (Agile or TDD)
- Programmers fall in love with frameworks (.NET, Ruby on Rails)
- Programmers fall in love with programming languages (like… you know)
- Programmers fall in love with operating systems (Linux)
Recently there’s been a lot of hype on similar phenomena. I’ve witnessed brutal debates on what practice to use, or what framework to use when developing a product. The question I ask all the time is “Does it really matter?” What if we concentrate on what is coming out as a result and see what happens? What if we try to use what we create and constantly improve it until we love it? This is what our customers and users do and this is what causes the gap between us and them. We can try and change, but then we would be going against the community. After all, we’ve always done it this way.