Before getting into defining a Systems Development Lifecycle (SDLC) lets look at some of the main problems experienced by Software Engineers when it is done badly.
- No time allocated for good design and architecture
- Code becomes unreadable and unmaintainable
- Code is disorganised limiting amount of software engineers and/or changes to be active at any time.
- Makes full and patch releases difficult or impossible without severe downtime or refactoring of code.
- Simple configuration or system administration requires a code change not variable/parameter change.
- Makes change extremely difficult – not scalable or object orientated.
Duplication of solutions i.e. not sharing such as application and hardware servers - Makes releases extremely difficult i.e. No thought how to release the project – to many manual processes in a release. Releases take several hours and even days. Build an object to large to get through the door.
- Lack of necessary documentation or to much unnecessary documentation
- No or very little enterprise development, testing, or security standards
- Don’t manage what you don’t understand. Non technical staff getting involved in making technical decisions causes the two most common features in struggling and/or failing technology projects:
- Pressure from business to implement change fast. Management scheduling without understanding impact and risk
- Inability of IT to explain and the business to understand the intricate nature of technology projects.