What is a mistake? According to Oxford Dictionaries a mistake is “an act or judgement that is misguided or wrong”. And what is a problem? A problem is “a matter or situation regarded as unwelcome or harmful and needing to be dealt with and overcome”.
A misguided judgement or an act for a purpose then will naturally create situations that would be regarded as unwelcome or needing to be dealt with. In other words, the roots of a problem arising during execution of any task lie in the mistakes committed while executing that task. In software development, the common problems arise due to the mistakes that are committed repeatedly, due to external and internal influences such as competition, lack of right skills, lack of budget etc.
Last month I wrote a piece on Classic Mistakes of Software Development and How to Avoid Them based on the white paper Software Development’s Classic Mistakes 2008, v1.02, published by Construx. There I have listed 10 mistakes which have ‘serious to catastrophic’ impact on software development (refer to List #2 in the article).
This article is on similar lines. The 5 common problems in software development that I am going to write about here have their roots in the 10 classic mistakes of software development. I am segregating these problems based on different stages of an SDLC:
Problem stage #1: Requirements gathering
Many projects still follow Waterfall SDLC. If the requirements are not very clear and exhaustive, then the team will find it difficult to proceed on schedule. The team will find it especially difficult to provide deliverables as per customer’s expectations since the requirements were unclear or incomplete at the beginning.
You may be saved if you decide to go for Agile SDLC, but then that again requires that the end-user involvement be high. Else, requirements gathering will suffer.
Problem stage #2 Scheduling & Estimation
Many a time project managers cram too much work within too less man-hours either because of inexperience or because of other constraints such as limited budget or lack of clarity in customer’s business. Bad scheduling is bound to have a ripple effect on development, testing and deployment stages of an SDLC.
Problem stage #3 Development
Mistakes committed during the above two stages cause problems that are inevitable during the development stage. Unclear requirements at the beginning may mean that you have to be ready for lot of feature creep-in. The business side of the customer may consider adding features during development stage as minor changes. But it may throw the whole development team very much off the schedule and cost estimates if the team has to keep revising the code to add features often.
Similarly, bad project schedule estimation will build pressure on the developers, which means more scope for bugs.
Problem stage #4 Testing
Due to bad scheduling it may be possible that there is not enough time for testing, bug fixing and re-testing. It is not possible to have bug free software development. So an overly optimistic schedule (one of the mistakes considered to have serious to catastrophic impact on software development projects) will most certainly create problems as there will not be adequate testing done before deployment.
Problem stage #5 Communication and Collaboration
Though communication and collaboration are not the stages of an SDLC, communication is the backbone for collaborating and getting things done. Whether communication is done through documentation, stand-up meetings and virtual brainstorming or through web-based SDLC management tools, information sharing and knowledge exchange is required for the project to meet quality standards and deliver on schedule.