There are some bits of wisdom that are so often repeated that we become desensitized to the need to take action based on that truth.
For example, we have all heard and agreed with some version of:
"Insanity is doing the same thing, over and over again, but expecting different results." - Rita Mae Brown
“Progress ... depends on retentiveness.
Those who cannot remember the past are condemned to repeat it.” - George Santayana
"Always make new mistakes" - Esther Dyson
Yet it is common for software ventures to repeat the same mistakes made in the past. Why is that?
I don't claim to know the full answer, but here are some contributing factors:
1) Reactive vs. Proactive mind-set
If you manage by waiting for bad things to happen and then reacting to them you are more likely to fall in the same bad patterns again and again.
If you manage by proactively defining and driving an agenda for change you are more likely to avoid old mistakes and discover new ones.
2) Deferred Gratification and Impulse Control
Organizations with poor impulse control tend to repeat the same mistakes again and again. Software ventures that master the art of deferred gratification will have better long term results.
3) Wish-based Planning
You often see old mistakes repeated anew, when organizations make plans based on how they "wish" things were rather than based on a more realistic assessment.
Lots of examples of this sort of behavior in:
4) Urgent vs. Important
Organizations that only react to the urgent and never focus on the important, tend let avoidable mistakes occur and than run a fire-drill to respond to them. They then repeat the process again and again.
It is critical that you know how to distinguish urgent from important and why that matters.
5) Low Investment in Lessons Learned Exercises
One important activity that is often pushed aside in favor of more urgent ones, is the "lesson learned exercise." This goes by different names in different organizations: "after action report", "debriefing", and "postmortem" (my least favorite term). In all cases it involves a conscious systematic process to look at what as been going well, what has been going badly, and how the team can learn and improve.
Investing in a "lessons learned" process will decrease the chance of repeating old mistakes.
6) Split Incentives
If different parts of the organization have different incentives and
priorities you can easily create situations where specific individuals are motivated to lead the team into making the same mistake
again and again.
If you build an engineering team that is motivated by a desire to
"build frameworks" and you don't clearly communicate the organizational
imperatives that might motivate them to "buy the framework and build a
solution on top" than you will repeatedly err on the side of investing
too much in building frameworks and not enough in building solutions.
If you have a sales team where there cash compensation is based 100% on
"signing new contracts" and 0% on "keeping customers happy through
deployment and use", than you will consistently make mistakes around
over-committing and under-executing.
In both the above examples the motivations of parts of the team are out of alignment with the organization as a whole.
copyright 2007 Kerry Champion