In the pantheon of programmers there are gods like Anders Heilsberg and John Resig — whose abilities and talents are beyond the reach of mortal coders — and there are the Heroes: coders whose talents may be within mortal comprehension but whose feats are the stuff of legend.
The primary drive for their respective passions however appears to be subtly different.
The joy motivation (this is neat!)
Atwood appears to be primarily driven by the joy of what he does. There is constant sense of awe and wonder in his posts and podcasts, and it is immensely infectious.
The strength of this approach is the seemingly unlimited font of energy and excitement he taps into. He is as passionately excited about the user experience as he is about the code.
The joy motivation prevents burnout and keeps a level of energy in the pursuit that is hard to match. This is also the weakness of the joy driven developer. Purely pursuing joy may sometimes look like a cat chasing a laser beam to outsiders: chaotic and unorganized. If your joy manages to take you where you need to go, fantastic. But if not, you may not be paying enough attention to other subjects (say your code’s security) as you need to.
The guilt motivation (why aren’t we better developers?)
Hanselman’s motivation sometimes appears to be a guilt that he isn’t a better programmer. He relentlessly strives for perfection in his craft and as a result often achieves a level of excellence that is unmatched by many.
He certainly exudes joy as well (listening to him and Jeff discuss hardware and movies on this podcast is an experience in joy and excitement in itself), but what seems to drive his passion as a developer is a professional craftman’s guilt and desire to be better.
The strengths of this approach is that you stay on task and end up being a much better professional developer. The two main weaknesses are that either you will burn out quickly or that you will get tunnel vision. Some of Hanselman’s views (like 100% unit test coverage) in my mind start allowing perfect to become the enemy of good. If you become too focused on the guilt of what you have not accomplished you may not be able to take a good look at the landscape and pace yourself on the journey to becoming a better developer.
You need both motivations
All developer’s, to some degree, possess both motivations.
Without finding the joy in what we do we would burn out rather quickly. The joy is why we enjoy building our own machines, learning a new language, or tackling the difficult problems.
Without that professional guilt we might half-ass important, but less exciting, aspects of our code (like security). You need both motivations if you’re going to be a developer for a long time, but most developers do have a primary motivation.
My primary motivation
I tend to fall into Jeff’s camp (that’s neat!), but acknowledge that cultivating some professional guilt will make me a better developer.
Which is your primary motivation?