Do We Learn From Our Mistakes?

I like this quote from singer/songwriter Martyn Joseph:

They say we learn from our mistakes and then we carry on, sometimes I’m not sure

Everyone makes mistakes and, in theory at least, learning from your mistakes helps you grow and improve. But is this true in practice? And, just as importantly, is the software development industry learning from its mistakes?

Back in 1996 Steve McConnell published a list of software engineering classic mistakes in his book Rapid Application Development. In 2007 he (and his colleagues at Construx) conducted a survey to see what classic mistakes are being made today. Eight of the top ten mistakes happening today were written about by Steve McConnell in Rapid Application Development over ten years ago. What’s more, Steve McConnell detailed in his book pragmatic methods that anyone can apply to avoid making them. If the software development industry is learning from its mistakes it is sure hiding it very well.

Why are we, as an industry, not learning from our mistakes? Frankly I don’t know. But here are some possible theories:

Long learning cycles

The time-span for most software projects is measured in years (especially when you measure from initial concept through to several years of support). Any one individual is unlikely to experience the full life-cycle of more than 20 software development projects. What’s more they are likely to take on vastly changing roles in each project as their career progresses.

There are two possible solutions here:

  1. Accelerate the learning cycle (by using fast development cycles as suggested by XP or Scrum or training in an accelerated environment like Jim McCarthy’s BootCamp
  2. Learn from other people’s mistakes (which generally means listening to people and reading books and articles)

Always finding someone else to blame

All too often if a project goes badly people are quick to lay the blame at someone else’s door. Most people are not quite as bad as Wally in this Dilbert cartoon but frequently I hear things like:

  • Designer: The functional specification was inadequate.
  • Developer: It was badly designed.
  • Project manager: The developers’ estimates were poor.

The obvious corollaries to these are:

  • The designer accepted the functional specification. They could have rejected it or, even better, improved it.
  • The developer accepted the poor designs.
  • The project manager accepted the estimates. A project manager should not just blindly accept every number that is given to them.

It is always easy to blame someone else. But if you want to learn from mistakes the first step is to accept responsibility and ask yourself “What could I have done better?”

Post rationalisation

It is natural for people to look back on a project that went badly and think “I did the best I could” or “The decisions I made were the right ones given the information I had”. However you very well might be fooling yourself.

Scientists from Lund University, Sweden and New York University carried out this research that involved showing people two photos of different female faces. Participants were asked to pick the one that they felt was most attractive. After they chose one, both cards were turned face down and then they were shown the card they chose and asked to explain why they felt that face was the most appealing.

Unbeknownst to the participants a card manipulation technique was used so that the card they were shown as the one they chose was actually the card they didn’t choose. Amazingly over 80% of participants didn’t notice the switch. What’s more they went on to justify, in detail, the decision that they didn’t even make. This shows that once a decision has been made by someone they will find ways to justify it whether it was the right one or not. This fundamental ability of the human mind to post rationalise any decision can be a strong barrier to learning from your mistakes.

A lack of time for reflection

Evaluating and reflecting on what you have done is a crucial step towards self improvement. And it is a step that takes time. Many people have work and home lives that are so hectic that it is hard for them to make time for this. But without setting aside this time you could easily find that you make the same mistakes again and again.


3 comments so far

  1. aedjp on

    Why are so many mistakes made in software engineering?
    Maybe one could ask, why are there so many software engineering books with titles like “learn [technology x] in 21 days!”

  2. craig brown on

    Hi David

    Great post. Reflection and sharing experiences is a great way for us to learn. And your blog looks like a great place for people to access information on their (our) journey.


  3. […] in “Enterprise 2.0? The Difference Difference Makes Trading Places with Indian Outsourcers Do We Learn From Our Mistakes? Women In Management: Shirts or Skirts – Who’s The Better Manager? Middle-Management […]

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: