Updated: Dec 1, 2021
If you are in the software development field, then you have probably been involved in some of the following classic pitfalls during a software development project:
Is the project running behind schedule?
Add more people
Do we need to reduce the schedule?
Adjust the schedule, make it more aggressive
Are you working towards a tight schedule?
Start coding as soon as possible
Are you running out of time in the end?
Reduce QA testing
These are just some of the classic mistakes. I like to call these PPT – Process, People, and Technology. I for one, have made some of these mistakes. By writing them down and defining them, just like in history, we can learn from past mistakes and use them to guide future project planning and risk management. If this article saves just one project from failure, then it is worthwhile.
Overly Optimistic Schedules
Schedule creation is one of the primary sources of failure. More often than not, schedules are overly optimistic. Creating an over-optimistic schedule upfront can unnecessarily add pressure to the development and QA teams and ultimately result in a failure to deliver the project on time. Pretty much no schedule ever executes with all best case scenarios, and some hiccups best are accounted for in the schedule.
Ineffective Risk Management
Risk must be planned and actively managed throughout a project; only one thing has to go wrong, and the entire project could be in jeopardy. The problem is particularly true for a rapid application development project and especially true for a Minimal Viable Product (MVP). Potential high risks could be long pole tasks; complicated tasks are automatically high-risk, scarce skills sets, and external customer development.
Wasting time at the “warm and fuzzy” stage
Just like in a new relationship, the beginning is full of excitement and anticipation. Often Business Analysts (BAs), planners and developers are still transitioning off a recent project when the new one starts. In considering a new project that is a year away from completion, the tendency is to kick back and relax a little. The developers may be waiting for the BAs to complete requirements and the schedule may not be fully flushed out. It is critical not to fall behind schedule at this juncture because it is far more difficult to try to gain back these few weeks near the finish line. Perhaps development work can be staggered to start on those requirements that are completed. You need to stay ahead of the game when you can to make up for those unexpected problems. To keep on schedule, you constantly need to be prepared to make adjustments.
Lacking or Rushed Design
For new features, there is often a rush to jump into coding. The thinking is to get something out there as soon as possible. If you are lucky, this approach may result in software that works on a basic level for a couple of users, but often does not scale or interface correctly with other parts of the application or is ill-designed to support new features supporting the company vision. This then results in "tweaking" the software until you have a coding hell and a situation where if one business requirement changes, then the whole system breaks down or becomes very fragile.
The result is that the real time taken for the feature far exceeds what it would have been if time had been initially allotted for a proper design.
Failing to Learn From History
In the stock market, there is a saying “past performance does not indicate future results.”
However, in software development, past performance is a great way to forecast future development schedules. It is critical that you maintain statistics on previous projects. Imagine you are in a meeting with your management and you are asked: “We have around 400 requirements for customer ABC, can we do this in six months?” Unless you have tracked history, you will be unable to provide a ballpark figure on the spot. However, if you had gathered statistics, you could answer with something like, “In prior projects with around 400 requirements, no project has been completed in less than 12 months.”
No matter how good your requirements are, the typical project experiences around a 25% change in requirements during its lifetime. These are requirements that the customer may not have considered at the beginning but become essential. Typically, this adds about 25% to the project schedule. It is very important this known variable is factored into the schedule. Do not submit to wishful thinking or management pressure to hope for the best.
Motivation and Weak Staff
Motivation and personnel lacking the necessary skill sets are the biggest factors affecting productivity. If staff feel undervalued or feel like they are “just another number” or even worse, they work so many hours their bonus amounts to $1 an hour, then productivity will suffer.
If the company hiring process is geared towards hiring staff quickly instead of hiring the best person fit for the job, then although the work may start sooner, it will end up taking longer overall. Hiring the wrong person can delay the project more than if the person was never hired in the first place.
Adding People Late in the Project
Adding more people is the classic mistake. If the project is running behind schedule, then the thinking is that by adding people, more can be done in the same amount of time. However, in reality adding more staff just takes time away from existing employees who end up needing to train the new people. Additionally, the new staff members will make more mistakes, further wasting time in QA and development rework. Also, some types of tasks cannot effectively be spread among multiple people.
Work Environment – Open Offices vs. Cubes. vs. Private Offices. vs. Work From Home
Open offices vs. cubes. vs. private offices, is often hotly debated. The open office was originally conceived by a team from Hamburg, Germany, in the nineteen-fifties, to facilitate communication and idea flow. Many companies have made this very popular, especially in Silicon Valley such as Google.
But a growing body of evidence suggests that the open office configuration undermines the very things that it was designed to achieve. A 2013 study found that many workers in open offices are frustrated by distractions that lead to poorer work performance.
Noise in the office has always been a source of distraction to workers. It is the type of noise that is critical. If you can hear every conversation around you, then you will naturally listen in case, “are they talking about me?”
Starting in early 2019, working from home became essential due to the COVID-19 pandemic. Many people were quickly asked to work from home in often a very rushed approach.
COVID-19 has changed the way we work forever.
Now, in 2022, many folks continue to work from home. Some are heading back to the office either full-time or a hybrid 2 days in the office approach.
Which option is best? My recommendation is to keep it flexible. I have all my team remote and find that productivity AND innovation are still fantastic. The key to success is selecting the right people who are intelligent and excited about our work. If you have that, it does not matter where the work is performed.
Lack of Effective Project Sponsorship
High-level project sponsorship is essential to ensure realistic planning, change control and control of scope. Without an effective executive sponsor to control planning and scope control between the vendor and the customer, this virtually guarantees project failure. Unfortunately, even the best software development and management team cannot make up for this.
Overreliance on a New Development Method or Technique
Often, developers and managers jump on the latest technology bandwagon. The latest buzzword appears online, and everyone is adding it to his or her resumes.
"Google is using it. It must be great!"
Yes, it probably is a great solution for Google. But unless you are solving Google-sized problems, then the best tool for your problem is unlikely to be the same as for Google. Choose the solution that best meets your needs. If a new development method or technique is needed, then account for this uncertainty in your schedule. The time saving from object oriented development and reuse from previous project code is often not as dramatic as expected.
These are just some of the more common mistakes in managing a modern software development project. If you would like to avoid making any of these in an ongoing or future project, please feel free to contact us. I would be happy to help.