Writing code is a creative process and not one that can wait for inspiration to manifest. This is where coffee − often a lot of it − comes in.
It is a pressured, deadline-driven business environment peppered with roadblocks. Client expectations naturally run high for mission-critical software development projects and delays are unacceptable to both the customer and development team.
Let’s unpack some of the challenges that routinely crop up.
Gartner’s peer community reports meeting deadlines, managing project complexities, cyber security considerations, plus attracting and retaining talent, to be the more common, yet significant, hurdles.
Certainly, achieving deadline success can often be no mean feat in the face of complex software development projects involving numerous phases.
Delays can be attributed to various issues, including insufficient planning, unrealistic expectations due to a client urgently requiring a solution to a key business problem and the developer striving to achieve success for the customer, etc. The list goes on and the Gartner peer group mirrors these sentiments.
A project is only successful if it meets the original goals the business set out to achieve.
While the focus must always be to deliver as much value as possible in the shortest timeframe, it is important to note that project success does not stop with meeting the delivery deadline. A project is only successful if it meets the original goals the business set out to achieve.
In my experience, successful projects typically have strong ownership and drive from middle management, with a dedicated focus on completing tasks on time, and within budget. I’ve seen that projects succeed when there is a product owner who takes full accountability for the outcome.
However, the business vision often comes from the executive level, while those responsible for execution and meeting deadlines are further down the management chain. This gap in communication between stakeholders can lead to misalignment.
While roadblocks are not necessarily common to all projects, I would say they can often be broken down into these main areas:
The team: A combination of inexperience and insufficient skills will lead to delays, increased costs, and the inability to manage increasingly complex modern software systems. What’s the solution? Well, that’s obvious – make sure you select the right team of highly-experienced developers with a proven track record of successful, timeous and within-budget delivery.
The landscape: A situation where legacy systems and architecture are not fully understood. Legacy systems often form the backbone of an organisation's technical infrastructure. In general, inexperience tends to preach a rebuild of a fairly significant system. This carries considerable risk and investment for businesses.
A study by McKinsey and the University of Oxford found that large-scale IT projects run 45% over budget and 7% over time, while delivering 56% less value than expected.
So why risk it?
The odds are against us from day one. There are a few strategies that I recommend to address these issues:
- Detailed assessment and reverse engineering of the code to understand its structures, functions and integration points. This facilitates building a reasonable understanding of a legacy system with a significant investment in rebuilding it.
- In knowledge mining, one virtually needs to physically sit next to individuals who have knowledge of the system, to gather as much information as possible.
- Incremental integration approach. This is a strategy that facilitates commitment to adding small features instead of all at once. This results in limiting testing and integration to more manageable pieces and reduces risk.
- Create new documentation. One of the key contributions software developers can make to an organisation is transferring and documenting our understanding of a legacy system as more details are discovered. This ensures there is no knowledge gap when we leave, providing valuable information for the organisation's future initiatives.
- Risk management and contingency planning. With the uncertainties inherent in outdated and poorly understood legacy systems, it is crucial to highlight potential risks and implement mitigation strategies. This includes preparing for scenarios where the integration fails, system incompatibilities arise and delays affect the timeline.
- Modernising strategies. In some cases, it is not feasible to completely understand a legacy system. Implementing a phased approach that involves gradually replacing parts of the system with modern components makes it easier to integrate and maintain the system.
Software has come a long way in the last decade. Holding onto legacy systems that have become impossible to maintain will prove futile. There are strategies that allow us to move to more modern technologies with limited risk.
Transparency and brutal honesty that asks the right questions, is required.
As consultants, our primary goal is to deeply understand the reasons behind building a solution. Software is merely a tool for solving problems; switching to a new technology adds no value if it doesn't address the actual issue.
It’s necessary to constantly ask why a solution is being built, what problem it aims to solve, and then delve into the problem to find the most effective solution.
Creating custom software with the assumption that simply automating a process will resolve a problem is a recipe for failure. It is necessary to challenge clients' proposed solutions to ensure they genuinely address the underlying issues. This often requires brutal honesty.
Do not be afraid to raise unpopular opinions or tell clients their desired product is likely to fail. Nobody wants to work on projects destined for failure. Remember the client’s success is the developer’s success.
It takes a particular type of person to voice an unpopular opinion in a room of 40 people without worrying about ruffling feathers. Going against the prevailing opinion can increase tension.
However, providing a clear view of the client's current situation, backed by facts and data, even when it's uncomfortable, builds trust, fosters long-term relationships, and truly benefits the client.
When pointing out to a client that a project they’ve worked on for the last two years is doomed to fail, professionalism and empathy are crucial. Brutal honesty, when handled well, can transform difficult situations into opportunities.
Share