Practices of Mastery
Quality
VelocitySoftware teams are constantly pushed to deliver faster and at higher quality. This drive often results in the loss of either quality or velocity, but we cannot make this sacrifice.
The Practices of Mastery help software teams achieve higher quality at higher velocity. They borrow from major software development movements such as Agile, Devops and XP.
The practices are as follows.
Quality
-
Sharing code is an opportunity for communication, collaboration and higher overall quality of code.
Check your code in. -
From how many minutes late you have to be before you buy coffee to a Java style guide, local conventions help establish the expectations and aid communication in teams.
Local Conventions. -
The law of four eyes helps ensure a level of quality, and it's also an opportunity for team mates to learn from, and mentor, each other.
Code reviews. -
Software exists to satisfy some customer's need. The continuous effort to verify and validate customer value is the assurance of quality in software.
Quality assurance.
Velocity
-
Continuous Integration, which can be stated as always having a shippable product, requires that we build our software automatically.
Automated Build. -
If we're to ensure that our product is always shippable, we need to ensure we run our tests automatically as part of our Continuous Integration process.
Automated Test. -
If our product is always shippable, then we should just ship it. Getting product into the hands of the customer is the quickest way to get feedback about quality.
Automated Deployment. -
Software needs other components (application containers, hardware, etc.) to run. As far as possible, we should automate the provisioning of such infrastructure so that we can ensure consistency and so that we can speed up the delivery of value to customers.
Automated Infrastructure. -
We should always know how our software is performing so that we can be proactive about supporting our software.
Automated operations.