Thursday, February 02, 2006

The Mystique of Software Craftsmanship, Part 2

[Previous part]

Second Discipline : Be a Hero

We know that learning is mainly based on imitation and imitation can only happen when we are exposed to valuable models. These models constitute the good food our brains need. Either by reading books or attending conferences, we feed us with the result of years, if not decade, of experience and reflection in a few hours. These models, when incarnated in human beings, become the league of heroes we should desire to join.

What, in the case of software craftsmanship, could it mean to be a hero. How in our field of activity, could we exercise valiance, courage and wit? Here are some suggestions:

  • let us be a hero for our clients: they are the prime reason we wake up in the morning and the true motivation of our professional endeavors, so we must embrace their cause and deliver the best value possible, even on the things we build but they do not see,

  • let us be valiant for always walking the extra mile: when the little bell that warns us of a potentially crappy line of code start ringing in our head, we should not turn our back on it but refactor as soon as possible, and, if we are too tired to solve the issue right away, at the very least we should comment the risks or doubts so nothing remains in the shadows,

  • let us do supernatural things like: stealing the overhead projector of your favorite salesperson, plugging it into your workstation to explore interactive programming or design sessions with your peers ; hacking an AmbientDevice to display your test coverage status or the time left before the next release ; training a RoboSapien to pick-up the phone when you do not want to be disturbed by your favorite salesperson (looking for his OHP)...

While pursuing this quest for software craftsmanship heroism, let us not aim the wrong goals. Though they might be reached in the journey, this is not glory and fame that we are seeking: we are looking for doing the right thing at the right time, and that will be heroic enough.


alex said...


Interesting post (like all the others IMHO of non-technical participant in your industry). Especially because you are showing how heroic it can be to "merely" perform "all those things that everybody consider normal and yet are so rare in real life" can be...

How about a different viewpoint?

Let me tell you about something that Joseph Campbell found out about heroes after studying myths, legends and popular stories in different civilizations. Campbell says that in all those stories, as in "real" life indeed, a hero goes through different stages: it's called "the hero's journey".

1. There is a call to action that the hero hears
2. The hero accepts the call and takes up the challenge it represents for her / him
3. A threshold is passed and the hero goes out of their comfort zone. A point of no return has been reached.
4. The hero looks for mentors and guardians to be supported in their journey.
5. The hero faces the demon, sometimes "merely" a projection of his / her own shadow...
6. The hero transforms the demon into a resource or an advisor. He does not necessarily beat the demon for the demon is not what seems (e.g. the Lord of Mordor is not necessarily the demon in the Lord of Rings... if one cares to look for the deeprer meaning of this magnificent work of art)
7. The hero finishes the task
8. The hero returns home, for the cycle is complete only when the hero is seen by other peoplen, often his peers as having achieved their mission

Why is this relevant to you? (1) Because I know you are an inspiration and a mentor for many people, (2) because step 6 shows the real task lies in transformation of the demon and (3) because it is important to complete the cycle by having the hero return to their starting point to be "seen" / recognized by their peers, else the adventure cannot be fruitful for anyone but the hero (even though the very fact of not being recognized as having achieved the task may jeopardize the hero's process too)...

It's a different viewpoint and you will see how to use it in your thinking about the Mystique of Software Craftsmanship. I know you are witty, smart and wise beyond your years. Enjoy the journey!


David Dossot said...


Thanks for your comment.

I have the feeling that your viewpoint is as different and complementary to mine as horizontality is different and complementary to verticality: they consider different dimensions but work together perfectly well!

In my post I merely discuss the goals not the way to reach them, mostly because I think everybody has to find its own. This said, there is a common progression and the stages you list are a very relevant proposal. Of course each of these stages will be realized in a different manner for everyone.

I am particularly sensitive to point 3: you will be amazed to learn that the original subtitle of this series of posts was "Is good software development about stepping outside the comfort zone?".

Concerning point 6: I have given a name to my personal archnemesis 14 years ago.

And being able to name it was a crucial step...


Anonymous said...

some useful IT mystique links :
The Art of Evangelism

I’m not a Guy kind of Evangelist

But i prefer this link
The Difference between Marketecture and Tarchitecture (by Luke Hohmann)
When we think about software architecture, we usually think about its technical architecture. But there's also another important architecture - the one we use to communicate with the customers of the software: the marketing architecture. Neglecting this "marketecture", and its relationship with the "tarchitecture", can get development projects into a lot of trouble.

no time to crate an acount.

David Dossot said...

Thanks for the great links!

David Dossot said...

Interestingly, Alex Payne has a counterpoint when he advocates for not being hero.

I think we're simply not talking about the same kind of heroism, and actually I won't qualify as heroes the kind of people Alex describes in his blog.