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 GreyLoud University in an effort to share our hard earned lessons with the rest of the startup community, and to help our other people realize their ideas quickly and cost effectively.
Without further ado, we present Part 1 of our first GreyLoud University course and hope that you will benefit from our experience.
"The GreyLoud Guide to Software Project Management- Part 1: How to Ensure Software Project Success"
If you are thinking about starting a software development project, you should read this post and all of the other articles we have produced in our first GreyLoud University series: The GreyLoud Guide to Software Project Success. I am going to lead you through the best approach in a few easy articles. This first article will give you some overall context – and then I’ll look a bit more closely at the various stages in later articles.
- Knowing What you Need – The Requirements
- Firming up the Specification
- Establishing the Prototype and Stakeholder Buy-in [Coming soon! Subscribe to our Email List so get it the moment we publish this post]
- Confirming the Plan, Technology, and Resources [Coming soon! Subscribe to our Email List so get it the moment we publish this post]
- The Main Development Stage [Coming soon! Subscribe to our Email List so get it the moment we publish this post]
- Accepting the Final Product [Coming soon! Subscribe to our Email List so get it the moment we publish this post]
I will point the way for you and keep the jargon to a minimum. 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’. Do they 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 – and how to avoid failure: Better still, how to 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. Rest easy, I’m not going heavy on miserable statistics – I’ll be positive. The flip side of those numbers is that 70% of projects succeed and 60% actually do meet their business case within one year. ( 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 ones cited are
- Incomplete requirements (business and technical)
- Lack of user involvement
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 to your development partner.
Getting from A to B: Why a structured approach matters
A structured approach matters because if 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, it can work very 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 MLP (minimum learnable product – a prototype) to the MVP (the minimum viable product – 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).
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 (who 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.
So, the key stages of an effective SDLC are:
- 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 need 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 SDLC in a software project and the importance of iteration whatever the technology to be employed. And, if you are planning to engage with a software development partner, you can use the information in this article as a way of assessing whether they stick to the key elements of an effective process – and whether they can deliver success for you.
In the next article I will be looking in more depth at how you identify what you really want – ‘Knowing What You Need – the Business Requirements’.