Failure has become an IT industry norm in the last decade. According to Standish group, last year only 32% of the software projects were successful, 44% challenged and 24%failed (cancelled OR delivered & never used). But it gets you thinking to why the failure rate is so high? A good starting point will be to highlight and address some of the key factors contributing to it.
Most notable cause of failure of startups is the Technology illiteracy of their senior management. Management’s eagerness to see the results quickly is usual but that in no way means they start micromanaging every stage of the development. Unnecessary involvement & lack of technical knowledge makes them create and enforce unrealistic deadlines. To satisfy the management, the development team starts focusing more on rapid deliverables than a quality product. In this hastiness they either skip a few phases of software development life-cycle (SDLC) or don’t spend enough time on each one of them. Such compromises made during this race against time push the venture towards a definite failure. Who is at fault in this scenario, developer or the management? I would say both are equally responsible for this.
- Management needs to realize that micromanagement never works in the software business and delegation is the only key to success. Their over involvement at any stage of development without sufficient domain knowledge would lead to a disaster. The estimation of software development time and effort is a very specialized skill; extensive experience in parametric, size-based and group estimation models is required. If management not conversant with these techniques tries to create a software development plan they end up forming impractical timelines and estimates.
- Development team is also at fault because they blindly follow these unrealistic deadlines without even conveying their concerns about the negative consequences to their management. The worst part is that they know for a fact that skipping any of the mandatory phases of SDLC will lead to a failure and they deliberately do it. What makes them do it when they know that they will eventually have to bear the brunt of failure? Their job insecurity never lets them question management’s wrong decisions in the first place. Even when issues start to surface and are noticed by the management, developers still prefer not pointing out the managements initial mistake of wrong estimation. Instead they try to play safe and blame it on the process model being used. It is a baseless justification as SDLC is an integral part of all process models and no process model gives you liberty to skip any of the SDLC phases.
Two of the most commonly neglected phases of SDLC are Requirement Analysis and Design. Management’s impatience doesn’t give sufficient time to the development team for eliciting, documenting and validating the complete requirements. Leaping straight on to the development without having any specified requirements is a proven factor of software failure. Detailed documentation (Software Requirement Specification) is very critical in describing the behavior of the intended system and serves as an input to the next phase. If requirements of the project are not clearly documented in the beginning, management will be left with unclear or ambiguous expectations around what will be delivered. This is likely to lead to disappointment when work is actually delivered and can create credibility and communication issues, as expectations have to be revised. This leads to unnecessary delay and rework which increases project costs and demotivates the team.
Logical system of the product is developed in design phase therefore skipping it can be disastrous. Product design describes the desired features and operations in detail, including screen layouts, business rules, process diagrams, pseudo code and other documentation. Completed design is later converted to the code. Imagine if you don’t have any design and you start coding, the resulting product will definitely not be usable. It would have issues which would be very expensive and difficult to solve. It will take less time and money to develop the product from scratch rather than fixing it. Reworking on such a product will cause a never ending “fix and run” loop. Therefore skipping the design phase would be like taking out the logic from the product.
Other major factors causing failure are lack of user involvement in all phases, lack of executive support, changing requirements and specifications, technology incompetence, lack of planning etc. If you are starting a new online venture keep these things in mind and you would be going ahead with fewer risks.
Good read on how Tumblr and Instagram reached viral growth : Key Viral Factor For Internet Marketing Plan