Let’s face it, I’m a technologist: I will gladly debate with you for hours on the merits of Java vs Scala, SQL vs NoSQL, Google vs Apple or what have you.
But in fact, none of this matters. Statistics show that more than half of software projects are failures; I’ve been doing software projects in various positions for more than 10 years and root cause for failures was never the technology.
In my carreer, I’ve identifed these top 3 sources for project failures (in no particular order):
- Lack of decision
As an architect, I try to provide for different solutions that more or less meet the requirements, each one with its associated cost and risks. What I expect in return is a clear decision from management in regard to those alternatives. When higher-ups eschew their decision-making responsibility, projects lack vision and are doomed to fail sooner or later, but probably sooner.
- No expressed business needs
Legacy waterfall methodologies require a formalized specification document, while more modern agile methodologies insist on having the product owner available on site. In both cases, however, the goal is for IT to know what to develop. A requirement of a successful project is for the business users to be able to work on their needs: express them, define them, refine them. Sure signs of future failure are talks like "we don’t have time to write it down" or "it’s evident". While the former is understandable - the business also has a business to run, so to speak - both show a lack of commitment that where the only logical conclusion will be rejection by the end-users.
Projects have to be realistic. More precisely, people should be asked in how much time they expect to finish a task and the project planning has to be based on that. When it’s the other way around, you’d better prepare for lack of success. Meeting deadlines is not easy when planning is realistic: sometimes, it’s as if everything on Earth conspires to slow you down. But with unrealistic deadlines from the start, there are only so few tasks that can be run in parallel, so pressure will begin to rise to attain unreachable goals, motivation will decrease and at some point, the PM will have to provide for plan B: a realistic planning.
So, instead of trying to search for better technologies, we should sometimes focus on those subjects and try to remove those obstacles from our projects, even if they don’t belong to our sphere of interest. To be frank, as an engineer, I was not prepared to tackle those challenges: they are completely unrelated to technologies but only once they are eliminated can we again focus on our core business, building better applications.