How to Ensure Software Project Success
Perfected over the course of dozens of successful projects and tens of thousands of development hours, our process brings together all critical inputs to building great software products.
We decided to create Visichain University in an effort to share hard won lessons with the wider community, and to help other people realize their ideas quickly and at minimal cost necessary. We hope that you will benefit from our experience.
Without further ado, we present Part 1 of the first in a special 7-part series of Visichain University we like to call The Visichain Guide to Software Project Success.
This first article will give you some overall context – and then we’ll look closely at the various stages of the development process in later articles:
Part 2: Knowing What you Need: The Requirements
Part 3: Firming up the Specification
Part 4: Establishing the Prototype & Stakeholder Buy-in
Part 5: Confirming the Plan, Technology, and Resources
Part 6: The Main Development Stage
Part 7: Accepting the Final Product
How to Ensure Software Project Success
Now, it may seem like a pain, but for a successful project, it’s important to understand some of the principles of the software development process.
How do you make sure that you actually get the software you need from your development team or partner? A key measure is ‘best practice’. Does your development partner or internal team follow it?
Best Practice includes developing software within a framework.
A software application, whether a smartphone app or a utility billing system, follows a Software Development Life Cycle (SDLC) during its conception, development, and final delivery, and during that life cycle it undergoes processes which move it through distinct ‘stages’.
Understanding this framework will help you follow the path to software project success.
Firstly, let’s take a look at the reasons why projects fail and how we avoid those within an SDLC.
Why Projects Fail – How to Avoid Failure and Ensure Success!
Now, you’ve probably heard the statistic that 30% of IT projects fail and 40% of projects don’t meet their business case within one year of go-live.
The flip side of those numbers is that 70% of projects succeed and 60% actually do meet their business case within one year, according to The Chaos Report.
So, let’s face failure – and learn from it.
When we look at the reasons for project failure in The Chaos Report, the top reasons cited are:
- Incomplete requirements (business and technical)
- Lack of user involvement
These reasons are closely followed by:
- Lack of Resources
- Unrealistic expectations
Apart from Resources, all these reasons for failure are avoidable using a well-defined SDLC – with, of course, effective managers, but that’s down to you and your colleagues or it’s the responsibility of your development partner.
Getting from A to B: Why a Structured Approach Matters
A structured approach matters because when all the state changes of an SDLC are followed properly then the main reasons for software development project failure are eliminated.
It is not rocket science (though a structured SDLC is certainly used for space projects), and need not be bureaucratic and top heavy. In fact, a structured approach can work well within an overall agile development approach where collaboration and flexibility are the norm.
An experienced project manager will be able to tailor the process having assessed the risks. The result should be a lean process which will build the software through the minimum learnable product, MLP, to the minimum viable product, MVP, including all the base functionality.
At the various stages of the SDLC the development team will:
- Confirm the business and technical requirements with you
- Identify technical risks and highlight costly functionality
- Confirm the technology to be used
- Plan to deliver a base product that is sufficiently useful and usable (e.g. by offering an efficient user experience, UX)
- Enable you to confirm that it will meet your budget
- Offer you a prototype to review. This should be ready for final polishing before release to the formal user acceptance testing stage.
- Deliver a final acceptance test version. That’s when you finally confirm that it does what you expect it to. It also ensures the buy-in of all stakeholders – that’s you and other interested parties (see next article for more on this).
Plan the Work and Work the plan: Key Stages of the SDLC
There are several key stages in an SDLC, which may be more, or less, complex depending on the project.
For example, if you want a simple web rtc app for your own smartphone and nothing more, then you are the only stakeholder. Or are you?
What about the smartphone manufacturer, maybe even Google, they supply the Android operating system – a new release might screw your app – or even worse, brick your phone! One way or another they should be taken into account.
And the issues are not always technical – there is your phone’s service provider. It could hit you in the pocket. You don’t necessarily need to talk to them, but their perspective has to be considered.
The 7 Key Stages of an Effective Software Development Life Cycle:
- Ensuring that all project stakeholders are identified and involved
- Defining a clear, agreed and shared vision of the target solution
- Identifying and aggressively managing risks
- Capturing all the business and technical requirements
- Carefully assessing and ruthlessly prioritizing expensive and/or technically risky software components
- Following an iterative development process with continuous testing and close involvement of the ultimate users (and beneficiaries)
- Building on what works and delivering the solution in increments
Improving the Focus of Ideas: Why Iteration is Important
You need to recognize what happens in real projects – and plan for it.
Each iteration will deliver a planned increment – new features, better performance and so on.
This iteration process needs to be stable and repeatable as your software may go through several versions during its lifetime, as business requirements and technical requirements change – and they surely will.
So, whatever the stage of the project you it’s wise to:
- Establish that the stage’s products (e.g. Define the Requirements or build the MLP)
- Test the stage products
- Rework or enhance the stage products until the stakeholders agree the stage is complete
- Move on
This iterative process is a reflection of what happened historically in successful projects, and is a key concept underlying modern agile project management approaches.
Iteration operates at a higher level of cycle too, by creating a production process which is able to continue enhancing the released product in response to an enhancement or build-out plan – or to market pressures.
For example, Microsoft release a new version of Word every 1-2 years, but Facebook releases a new version of their website twice a day!
Closing Words: Planning, Structure and Iteration are the Keys to Success
Hopefully, you now have a feel for how you should start to prepare for a successful software project.
You now understand elements of an effective Software Development Life Cycle, SDLC, in project and the importance of iteration whatever the technology to be employed.
And, when you are planning to engage with a software development partner, you can use the information in this article as a way of assessing whether your vendor sticks to the key elements of an effective process – and whether they can deliver success for you.
In the next part we will be looking in more depth at how you identify what you really need developed – Knowing What You Need: the Business Requirements.