Ever imagined yourself to be Michael Schumacher or Fernando Alonso when you drive your car? I hope most of the formula one aficionado at some point would have wondered what it takes to be a formula one driver. Other than amazing levels of fitness (click here to understand the level of fitness we talk about), a formula one driver should also be mentally strong, with supreme driving abilities and split level reflexes.
Compare a formula one driver to a good driver on the road. Though it is nice to have the talents and skills of a formula one driver, it is not necessary that all those are needed to be a good driver on the road. People say that you don’t have to do anything different, but it is enough if you avoid doing the common mistakes. The common mistakes can be anything like talking on a cell phone while driving or driving aggressively or over speeding or tailgating.
The point is that to be a good driver, you don’t necessarily need the driving skills of a F1 driver, and most of the times it is enough if we don’t do the well known mistakes. What holds for driving also holds for Project Management. Most of the projects that we do, doesn’t require the equivalent of a F1 driving skill in project management. It is enough if we ‘not do’ certain mistakes. If you are wondering what these ‘mistakes’ are, just read on…
Documented history of projects is available since 1960s. The study of the data available has shown that some acts of people are repeated often, irrespective of the fact that ‘it’ has an adverse impact on the outcome of the project. Books have been written around some of these topics. For e.g. the case of uncontrolled problem employees is covered by Gerald Weinberg’s Psychology of Computer Programming. Adding late people to a project is cited as a mistake by Fred Brooks in his book the Mythical Man Month. The effect of noisy and over crowded offices on programmers is studied in the book Peopleware by Tom DeMarco and Lister.
While browsing Steve McConnell’s book Rapid Development: Taming Wild Software Schedules over the week end, I came across this chapter called Classic Mistakes Enumerated. Steve McConnell* say’s that some of the mistakes are so often repeated (like adding more people to a project that is already running late or believing in Heroic Acts to salvage projects), that they deserve to be called Classic Mistakes. These are classified into four categories, namely
- People related mistakes.
- Process related mistakes.
- Product related mistakes.
- Technology related mistakes.
Following is the detailed list of those mistakes, listed under the four different categories.
- Undermined Motivation
- Weak Personnel
- Uncontrolled Problem employees
- Adding people to a late project
- Noisy Crowded offices
- Friction between developers and customers
- Unrealistic expectations
- Lack of effective sponsorship
- Lack of Stake holder buy in
- Lack of user input
- Politics placed over substance
- Wishful thinking
- Overly Optimistic Schedules
- Insufficient risk management
- Contractor failure
- Insufficient planning
- Abandonment of planning under pressure
- Wasted time during fuzzy front end
- Short Changed upstream activities
- Inadequate design
- Short changed quality assurance
- Insufficient management control
- Premature or too frequent convergence
- Omitting necessary tasks from estimates
- Planning to catch up later
- Code like hell development
- Requirements gold plating
- Feature Creep
- Developer Gold plating
- Push me – Pull me negotiation
- Research Oriented Development
- Silver Bullet Syndrome
- Overestimating savings from new tools or methods
- Switching tools in the middle of a project
- Lack of automatic source code control
I hope we get to manage most of the projects we do, by avoiding these mistakes and committing new mistakes (we all make them most of the time, don’t we?). Not only will the projects be successful, we also get to contribute to the History of Software Engineering, through a new mistake. Ok. That part was just a joke. :-)
I personally believe that the list is so comprehensive that any so called new mistake is actually a manifestation of one of the mistakes mentioned above.Most of the mistakes mentioned above are self explanatory. By understanding these mistakes in detail, I hope we won’t repeat these mistakes when we manage our projects.