Monday, September 14, 2009

The passionate developer: I do like my profession, I don't like my job

Update 2009-09-14: There are interesting discussions of this post on hackernews. Thanks!

To only a fraction of the human race does God give the privilege of earning one’s bread doing what one would have gladly pursued free, for passion. I am very thankful.

The Mythical Man Month, p. 291


Architects, designers, and developers of corporate systems usually have little or no voice in what gets built, or how, or why. They don't sign on, they get assigned. I know that individual developers do care passionately about their work, but usually have no way to really make a difference

Why Do Enterprise Applications Suck?


images.jpg I consider myself an alpha-geek. I think I have met quite some other alpha-geeks.

I tend to think that there is hardly any other group of professionals that care so much for their profession like alpha-geeks.

Regarding passion, dedication and motivation alpha-geeks are very similar to artists or master craftsmen.

Alpha-geeks usually don't (want to) make a difference between their job and their hobby:
"Tenet of professionalism: Work 40 hours for your employer and another 20 hours improving yourself." (tweet by unclebobmartin)

... at least that would be the case in an ideal world ...

In reality I have almost never met a passionate developer, that is really happy with his job.

In reality it's more likely that the alpha-geek is working the additional 20 hours, because he is frustrated with the 40 hours he had to spend for his employer... because he could not realize his ideas of real development, because he was bogged down with fabricated complexity, because he lost his way in a maze of legacy code and because he had to spend so much time and energy for bureaucratic overhead ...

This is a schizophrenic situation, and I wonder why it is so common?

cubicle.jpg Probably a lot can be credited to the Office Space clich├ęs that can be found in corporate environments. And to the fact, that in a lot of those environments it's impossible to deliver software that matters.

But I think it's too easy to lay all the blame on corporate environments.


I think a part of this schizophrenic situation can be credited to a blame-the-others-syndrome. If things are hard and if there is friction, it's always easier to blame the others. It's only self-protection to assume the stance "If I only could do things my way, everything would be good!"

I also think software development is especially susceptible to this schizophrenia, because nowadays it almost exclusively deals with intellectual constructs. It is very easy to create a clean, wonderful notion of a perfect software system and to imagine an ideal software development process. That's because we can let our imagination run wild, since there are no real constraints in theory. At least in theory there always exists a perfect solution. That's a major difference to other (real) engineering disciplines.
It's very convenient to think that we could realize the perfect solution, if only we could do things our way...
...only in our perfect solutions we did not consider those accidental constraints like people, time, economic factors ...

image_thumb.png
A third aspect is that there are hardly any measurable characteristics in software development. Therefore personal taste, preferences and gut feelings become important. And since these are very individual, it's a logical consequence that we always have to deal with compromises when we are working with other people.


I believe that leveraging the passion and motivation of developers is a key factor for forming highly productive teams. This has been shown with different studies.
But to a certain degree this is a blade with two edges. Highly passionate developers are much more susceptible to the schizophrenia mentioned above. I think the key is to accept, that real-world software development is never perfect. Our job is it to pragmatically live with this imperfection.

10 comments:

  1. hehe cool post Jonas.. it reminds me of a chat we had at Pablo's wedding :)

    The alpha geek must have the balls to take risks! He sometimes bets on the wrong horse, sure, but learns from his mistakes.

    Keep fighting the corporate mediocracy.

    Pascal

    ReplyDelete
  2. Glad I was brought to this post from HackerNews, I didn't know about AlphaGeeks and it gave me insight on what it is that I really am.

    I quit my last job because I wasn't nearly satisfied with the level of organization in the development process. They had so much legacy and crappy code, wouldn't consider other more efficient frameworks, etc. Basically, I was ignoring economic and bureaucratic aspects, favoring passion and optimality in using the latest technologies available.

    Inspiring post. I've actually quit my job to concentrate on bettering myself and the web. Been spending countless hours learning on my own and experimenting with any of the latest and most interesting technology available.

    I'm not even a coder! I'm learning to code as I go, but I'm more design-inclined (user interfaces and integrating them). Coding is extremely interesting too, I'm glad to code, but I don't necessarily like all the processes implied in testing code. I want to prototype and go on creating the next best thing without needing to consider rules or conventions slowing me down.

    Anyways, great post. Makes me think a lot. I'll be subscribing to your blog.

    ReplyDelete
  3. Hi

    Can you share some links to the studies that correlate motivation with productivity in software development teams?

    I'd very interested in that kind of research.

    Thanks

    ReplyDelete
  4. One of the pitfalls of choosing any profession, is that one becomes intimately familiar with it's dark side. This is as true with software development as any other profession.

    ReplyDelete
  5. If you don't like your job, then you should do something abuot it or quit and spare us all your self-pittying metaphor.

    ReplyDelete
  6. jeromegn: good luck with unemployment. You'll likely get used to it...

    ReplyDelete
  7. It's been a blast for a few months, but now I've applied on a job I think will fuel my passion.

    ReplyDelete
  8. still a bit confused by the term alpha-geek. is this kind of opposite to engineer?

    ReplyDelete
  9. @Anonymous

    Concerning studies that relate motivation and productivity:

    I am quoting Steve McConnel's "Classic Mistakes Enumerated":

    Mistake #1: Undermined motivation. Study after study has shown that motivation probably has a larger effect on productivity and quality than any other factor (Boehm 1981).

    He again quotes Barry Boehm's "Software Engineering Economics"

    ReplyDelete
  10. Man, you rock.... I am so sorry of reading all your articles after 2 years....

    ReplyDelete

Related Posts Plugin for WordPress, Blogger...