Plan > Project Process
Why
“Those who plan do better than those who do not plan, even though they rarely stick to their plan.” – Winston Churchill
A process or a methodical approach makes software product engineering both predictable and repeatable. This also helps with communication by making all stakeholders aware of what needs to be done and the benchmark to access success at each product development stage.
How
A product development process should cover requirements coming from the three following different sources:
- Feature requirements originated by customers.
- Technical tasks to achieve non-functional requirements.
- Legal and compliance requirements (e.g. ISO 9001).
The purpose of your process should be to cover these requirements. Following aspects needs to be considered when laying the final engineering process.
- Development Process: Proven processes like small scale agile frameworks such as SCRUM and Kanban or large scale frameworks such as SAFe and Less can be adopted as a development practice.
- DevOps Process: A good DevOps process can automate everything from code reviews to infrastructure deployments. Consider building a DevOps pipeline which covers static code analysis, code reviews, functional & non-functional automated testing and infrastructure deployments.
- Quality Engineering Process: Establish a good quality engineering process to capture critical requirements even before development, define thorough test cases and finally test for both functional and non-functional requirements.
- Release Management: Establish a release management process which ensures quality before releases, minimum downtime, customer communication and awareness.
Once the engineering processes are established, those should then be arranged and documented in the following hierarchy:
- Policy.
- Procedure.
- Work instruction.