Wildfalcon

Laurie Young: Scrum Master, Dancer, Photographer and Entrepreneur

Software Craftsmanship

Last night I went to a debate on Software Craftsmanship at SPA2010. The general consensus seemed to be that Software Craftsmanship is bad, but software craftsmanship is good. Notice the capital letters.

I want to pick up a point Ade made. He said: “I don’t believe that good software comes from a process or an environment. It comes from the skill of individual developers”. He went on to say that once you accept this, the question of how to grow your skills is impossible to ignore. This is the core of craftsmanship to him.

Personally I would rephrase his statement: “Good software comes when individuals working on it take responsibility for doing a good job. They take  responsibility for quality, and for growing their skills”. In my mind software craftsmanship is about individual developers taking responsibility. I don’t think this applies just to code quality – but to all aspects of “delivering great software”

The word responsibility is used a lot. Let me define it. It means recognising “This particular problem is only going to be fixed if I personally make it happen”. It does not mean a manager saying “you are now responsible for this area”. You, as an individual, have to take responsibility, it doesn’t count if it is assigned to you.

Now we can come back to Ade’s point about whether or not this comes from a process or environment. I suspect he is talking about Agile (with or without a capital letter) which is often held up as a solution to all development problems :)

The Agile approach can best be summed up by a quote by David Heinemeier Hansson. “Most average people will be awesome if you create an awesome environment”. He isn’t specially describing Agile, but his comment resonates with the Agile ideas. However his idea is hard to turn into specific action. I’m not surprised that Ade doesn’t want to trust the growth of his personal skills to such a vague environment or process.

However I do not think they are that different.

In my mind, individual responsibility is one of the two cores of Agile (the other being iteration). Just look at a successful daily stand up. Every team member steps up and takes responsibility for a story or an action. “I am going to complete this story. I may not know what is required for this, but I will learn it and do it”. Contrast to the alternative approach of a manager telling the team “David will do this story. Tim you work on that”. The former is an example of craftsmen taking responsibility. The latter is an example of mortgage driven developers coming to work, and “getting through the day”.

It’s impossible to force anyone to start taking responsibility, and encouraging them to do so is hard. Most agile conferences talk about it in one form or another, often with little or no success. If software craftsmanship (with or without capital letters) results in more developers accepting responsibility for the quality of the work they do, then it can only be a good thing.

Tagged as: , ,
  • techdoer

    Good post, thanks for sharing. It makes me think of the findings from Dan Pink and also much earlier from the two-factor theory regarding what is required to both motivate and not demotivate creative types. Pink suggests that in the end, creative types are motivated by autonomy, mastery and purpose, and money serves to not demotivate them, but is not a motivator in itself.

    I equate your reference to responsibility in this case to the responsibility a creative type should have to stay motivated, pursue mastery in their discipline while finding purpose. This is the responsibility of staying effective, which peter drucker taught us was the single responsibility of a knowledge worker.

  • http://wildfalcon.com Wildfalcon

    To me this is not quite the same as the topic of motivation.

    Most of the motivational stuff I have seen is on the subject of how do you motivate a team. Intrinsic vs Extrinsic motivation etc.

    Responsibility I think comes before motivation. When I take responsibility for an action or a project, my motivation goes up.

    I think the link is in allowing team members to take responsibility. I said above that you cannot give people responsibility. However you can prevent them from doing so. The sad thing is that many attempts at motivation, when looked at this way, are very good examples of preventing people from taking responsibility :-(

  • techdoer

    Thanks for the reply. Let me explain better what i meant by linking your concept of 'responsibility' to motivation, although i agree with you 'responsibility' does come before motivation.

    First i would say the context here is that creative people cannot be extrinsically motivated, but can easily be extrinsically demotivated. This is nothing new as i'm borrowing from two-factor theory here. This implies that the motivation you want more of comes from within.

    If you believe this then I would say the concept of effectiveness, i.e. the ability to do the right thing, whether at the organization, team or individual level is what, in my opinion, ultimately determines the level of an individual's intrinsic motivation.

    So rather than linking your concept of 'responsibility' to motivation, i think it's directly linked to what i refer to as effectiveness, e.g. I will grow my skills so i can complete this story, because it's the right thing to do for the team.

    We may be talking the same thing, and if so I believe effectiveness depends largely on the trust that underlies it. Trust in your ability to learn, trust in your colleagues abilities to produce what you need, trust in your organization's ability to find and satisfy customers, Trust that you're using the right tools etc. This trust makes you more confident of taking on more responsibility. With this autonomy to do the right thing and with the right purpose is where (as Dan Pink says) motivation comes into play.

    The model would show individual and collective trust enabling effectiveness (taking on responsibility) which empowers you to achieve your natural levels of intrinsic motivation.

    You said:
    >I think the link is in allowing team members to take responsibility. I said above that you cannot give people
    >responsibility. However you can prevent them from doing so.

    As an agile manager I think you can give people the autonomy to do the right thing. Anything else would be micromanaging and we know how demotivating that can be. Interestingly, isn't a manager responsible for assigning work to people? Wouldn't this be a form of giving responsibility?

  • http://wildfalcon.com Wildfalcon

    This is getting interesting. Let me try and sort though it :-)

    There are three concepts we are discussing here:
    * Responsibility: The act/decision of an individual committing to getting actions done
    * Motivation: The desire of an individual to take responsibility for actions
    * Effectiveness: The ability of an individual to get things done

    They seem to be linked in a cycle:
    Effectiveness -> Motivation -> Responsibility -> Effectiveness -> Motivation (and so on)

    Better effectiveness drives motivation, which encourages taking responsibility. Taking responsibility in turn forces your effectiveness to increase, leading to more motivation.

    What do you think – a fair summary of the conversation so far?

    You are right in pointing out that a lot has been said on these ideas, though the formulation I just suggested is new to me, at least in its clarity. I haven't yet started to think about how trust enters the picture :D

    You are right, a manager is responsible for giving work to people. Which is why traditional management fails so often.

    An agile manager, to the extent that such things exist, is responsible only for removing impediments the team has while they are doing the work they have pulled from the pool of available work.

  • techdoer

    >There are three concepts we are discussing here:
    >* Responsibility: The act/decision of an individual committing to getting actions done
    >* Motivation: The desire of an individual to take responsibility for actions
    >* Effectiveness: The ability of an individual to get things done

    A minor correction – effectiveness is the ability o an individual “to get the right things” done.

    >They seem to be linked in a cycle:
    >Effectiveness -> Motivation -> Responsibility -> Effectiveness -> Motivation (and so on)

    Now this is very interesting. I'm sure zealous over achievers will confirm the presence of this cycle. I believe it absolutely does exist. It's self feeding and explains how someone can appear so tireless, and persistent in a pursuit of a goal. You're on to something here.

    >Better effectiveness drives motivation, which encourages taking responsibility. Taking responsibility >in turn forces your effectiveness to increase, leading to more motivation.

    I totally agree that effectiveness drives motivation. On this we are completely in sync. I'm just trying to integrate responsibility into all this. I understand what you mean and am inclined to agree that the apex of the cycle is responsibility which cycles back into effectiveness.

    To help convince you of where trust fits into all of this i would point you to this presentation by Diana Larsen http://www.slideshare.net/victorhg/trust-diana-…

    Her definition of trust is key to why I think trust is the foundation of effectiveness. Good stuff.

Featured Categories

Get Adobe Flash playerPlugin by wpburn.com wordpress themes