A recent survey by Evans Data Corp revealed that, depending on a geographical region, up to 75% of software development projects fall behind schedule. This is worrying news in an industry where deadlines really matter and being late with an application or a script can produce a knock-on effect on other parts of a business. Luckily, most programmers report delays of no more than two-three weeks, with a minority admitting longer retardation. Anyway, the results of this survey provide ample motivation to ask why software development has to be so strongly affected by delays and if anything can be done to change this rather inconvenient state of affairs?
One common cause of delays is constantly changing requirements. The final product is something of a moving target as clients have to adapt to market demands and introduce ongoing modifications. This is especially visible in early stage projects when business plan concepts are beginning to be tested against reality. Early-stage feedback or first users can impact the scope and specifications of an application or a solution, which naturally affects its duration in relation to initial scheduling. A solid requirements analysis and systematic reporting as the project develops can help minimize the fallout that changes can have on the project timescale. Communication with clients is another key to solving this problem.
Another reason why so many software development projects are delayed is an inherent difficulty planning them. Most IT project managers or development managers realize perfectly well that plenty of tasks are hard, if not impossible, to predict at the onset. How can you know in advance where you will have to face bugs and how much time and resources you will need to allocate to get rid of it? A buffer of a week or two should be considered something of a standard, especially if it is necessary to strengthen the quality of the release. One good example is Symfony2, a development framework which was running late with its stable release date for a simple reason that it still requires critical improvements. It is not so much a question of time as it is a question of quality. Iterative methodologies can help software developers avoid running late as they gradually build and add functionality.
Resources management is also at the center of why some projects suffer delays. Either because they fail to ensure strong approval from stakeholders in terms of budget or organizational effort, or because they do badly in competition with other initiatives, otherwise healthy projects begin to drag and break schedules due to insufficient resources. What can help is creating a sense of urgency to help decision-makers realize the sooner something is completed, which might require extra energy, the better in terms of reducing risk. Using software development outsourcing is another option if you find it hard to muster resources in-house.