If there's a specific outcome where your team is falling behind, this is where to start. Review the technical ingredients that go into the result you need, and get clear on where to start working on your process.
For the Business
How reliable are your estimates of work, and how good is your software team at keeping its promises to the business?
How responsive is the software to changing needs, and how short is the feedback loop that helps inform business decisions?
Can users rely on a consistent experience from one release to another, with relatively few bugs, regressions, and performance issues?
Can users expect a quick response to problems that do occur, and a quick process for getting urgent updates and fixes into production?
Do developers spend most of their time solving technical challenges? Are they supported in improving their skills?
Do developers get to see their work put into action? Do projects move forward with minimal rework and rediscovery?
The things your organization will get better at as you strengthen your technical foundation.
Verifying that the software meets requirements, and stating the requirements clearly.
Integrating all the work into a final product and delivering it to users reliably.
Structuring code to be readable, maintainable, and ready for future changes.
Representing the problems of your business domain clearly in the code.
Signs that your software project is built on solid fundamentals. Each one is reduced to its simplest elements and easy to assess. Dig into specifics about what your team needs to advance to the next level of proficiency.
The effect of every business-facing change is demonstrated by tests.
All changes are requested in the form of testable acceptance criteria.
The effect of every internal change is demonstrated by tests.
All behavior required by the business is authoritatively defined in tests.
A basic delivery pipeline enforces testing and review of each change before release.
All deployment and runtime tasks are made explicit and consistent through scripting.
Every change is safe to merge after testing and review.
Every change is ready for production release after testing and review.
Every change is made easy by code reorganization before it’s implemented.
Code abstractions encompass all nonfunctional requirements.
High-level strategy is outlined and reviewed before starting each change.
Every major architectural division matches an organizational division.
All business-facing changes are reflected by abstractions named for domain concepts.
All business-facing requirements are organized to minimize duplication and coupling.
All internal architectural concepts are clearly represented by abstractions.
All abstractions are grouped into layers which communicate the software’s design.
The individual skills and habits your team members use to follow your organization’s process.
for Project Managers
for Company Leaders