Skip to content

Latest commit

 

History

History
9 lines (8 loc) · 3.54 KB

File metadata and controls

9 lines (8 loc) · 3.54 KB

Software Engineering

Capability Level Capability Name Description Observed Behaviour Project Scope
0 Software Engineering: Minimum viable Capability Application Development team define their own standards. Application Development have accepted internal standards and guidelines but not shared them.
Security, test, and operations capability are not considered necessary for new feature development.
There is little-to-no trust between software, operations and test engineers as teams don’t understand or value each other’s domains, expertise, experience or contribution.
Codify development standards, include language choices, style guides, code review processes as well as IDE, LINT, security review and other tool choices.
Apply these standards to operations and test code.
Apply development standards to existing operational scripts and automated tests and store all operations and test code in the source control repository no matter how bad it is.
Initiate code reviews for operations and test code.
1 Software Engineering: Universal Standards Technology standards are shared across the the whole technology organisation. All engineers use the same tools and adhere to the same standards, trust grows between engineers.
Software and test engineers don’t understand or trust the environments.
Operations and test engineers still excluded from application development.
Engineers lack understanding of test coverage and quality.
Apply coding standards to configuration management elements.
Perform code reviews on configuration management and deployment code. Rotate the duty among several software engineers.
Have software and operations engineers work with test engineers to contribute automated tests for application and environment build and deployment activities.
2 Software Engineering: Peer Review All engineers contribute to improving quality and standards. Informal collaboration and pairing will begin with small projects.
Operations and test engineers still take an ad hoc approach to software development.
Include operations and test engineers in software design and planning activities.
Test engineers should be tasked with designing and coding the tests for all new features.
Operations engineers should be tasked with assessing the impact of new features on infrastructure and updating configuration and deployment mechanisms
Run security coding Dojos for all engineers.
3 Software Engineering: Collaborative Design and Development New feature development is collaborative and standards subject to continuous improvement. New features receive improved testing and suffer no regression bugs.
New features provide high quality feedback and suffer less performance and capacity problems.
Significant effort is still required to build, test, deploy and support changes to core components.
Develop the capability to deploy service changes to groups of customers in specific geographic regions or to percentages of the customer base.
Create feature toggles for all new features or significant changes to features allowing code to be deployed at all times regardless of it’s state of completion.
4 Service Engineering: Continuous Delivery Feature toggles, targeted and partial deployments normal New features can be deployed before they are ready, in an offline state.
Launch of new features is now a configuration task not a deployment task.
Enabling and disabling features does not cause incidents as the service is fault tolerant.
-