Software development is a complicated activity. Hence the people work in the project can do mistakes that could affect the project. Researchers have reviewed number of software projects and identified a set of mistakes that can be seen throughout projects. They have mentioned that those mistakes might not be only causes for slow development. To slip a project into slow development, all you need to do is to make one big mistake. However to achieve efficient development, you need to avoid all mistakes.
The set of mistakes that researchers have identified is known as “Classic Mistakes”. Those bad practices have been chosen so often, by so many people. And those mistakes have predictable bad-results on the development of the project.
Four categories of classic mistakes:
- People related
- Process related
- Product related
- Technology related
People related classic mistakes
This kind of mistakes talks about how to avoid mistakes among team mates. This kind of mistakes affect directly to the development speed and it is crucial to rectify those.
Undermined motivation – Studies have shown that giving suspicious talks at the beginning, asking to work overtime reduces the motivation of the people. Sometimes team leaders take long vacations while team is working overnights. The researchers highlighted that team lead has to work along with other team members is a positive motivation.
Weak personnel – If a team need an efficient development throughout the project, the recruitment needs to hire talented developers. Also carefully filter people who could do most of the work until the end of the project.
Uncontrolled problem employees – Failure to take actions for problems with team members and team leads will eventually affect the development speed. Some higher management should actively look into those and sort out.
Heroics – Heroics within the team increases the risk and discourages cooperation among the other members of the team
Adding people to a late project – Adding new people when the project is behind schedule, can take more productivity away from team members.
Noisy, crowded offices
Friction between developers and customers – Need to increase the communication between customers and developers.
Unrealistic expectations – Setting deadlines earlier without any proper reasons can lengthen the development schedule.
Process related classic mistakes
This type of mistakes talks about issues that may arise in management and technical methodologies.
Overly optimistic schedules – This sort of scheduling will result in failure by under-scoping the project and hurt long-term morale and productivity of the developers.
Insufficient risk management – If projects risks are not actively managed, the project will lead in to slow-development mode.
Contractor failure – weak relationship with contractors can lead to slow-down the project
Short-changed upstream activities – Start coding without properly design the project plans will costs 10 or 100 times than doing it with properly designed plans.
Short-changed quality assurance – Eliminating design and code reviews, eliminating test planning and do only perfunctory testing will reduce the development of the project and ends up with major bugs.
Omitting necessary tasks from estimates – People forget about the less visible tasks and those tasks add up.
Code-like-hell programming – Developers should be sufficiently motivated rather forcing them to work hard.
Product related classic mistakes
This type of mistakes talks about which can affect the outcome of the project.
Requirements gold-planting – More requirements that are not really necessary, and pay less attention on complex features
Feature creep – On average 25% of requirements can be changed and affect the project schedule.
Developer gold planting – It is frequent that developers attempt to try new technologies that they saw in other projects, which is not actually necessary.
Technology related classic mistakes
This type of mistakes is about technologies use during the project.
Silver-bullet syndrome – Thinking that certain approach will solve every issue, and that approach has not already used by developers (eg: Object oriented design)
Overestimated savings from new tools or methods – New practices will introduce a new risk as team has to go through a learning-curve to become familiar.
Switching tools in the middle of a project – Using new tools will add a learning curve, rework and inevitable mistakes to project schedule
Lack of automated source-code control – If two or more developers are working on the same part of the project, it is necessary to adhere to source-code control practices. If not developers have to spend time on resolving conflicting changes.
In this article I have mentioned several mistakes that could done by people during a project life time. There could be many other mistakes which can lead to slow-down a project. However at least you should avoid these well-known classic mistakes.