There are many software development projects that are classed as successful because they delivered on time and/or on budget and delivered the functionality requested – but survived a short while in the production environment due to their lack of scalability, and high maintenance costs due to lack of planning and foresight during the software’s initial production. These projects often require a complete rewrite, that is not successful. Every opportunity must be taken to make sure that software is written with maintenance, readability, skills availability, and scalability in mind so the software lasts for many years – future proof.
Keeping the maintenance cost down is paramount to a software project being successful; it is no use being a one hit wonder. A project must also be able to implement fixes and/or enhancements and release these speedily and in isolation to on-going development, this means having at least two separate streams of development. Firstly, there is the on-going development stream where we can create new features without impacting the ability to produce fixes. Secondly, there is a maintenance stream where we can fix any problems that arise in the production environment and release these without also releasing any work included in on-going development. Thirdly, we must make sure that fixes and enhancements made in each stream can be included in the other so one release does not overwrite fixes in the previous release.
With a good Software Development Manager and Systems Development Lifecycle (SDLC) the following will be achieved.
- Prevent Failure
- Have knowledge of the true state of any project
- Enables far more accurate planning and costing
- Better Management of expectation
- Improved Communication
- Less disputes
- Better vision of what is expected
- Better efficiency, less duplicity
- More control – top down
- Interoperability between projects and the business
- Prevention of Process Creep – where one process takes authority from another