You might create the best cloud delivery system capable of delivering software to users at the click of a button but it means nothing unless developers are applying good software development practices. And, as I eluded to before, everyone on a software system team is a developer of some type as they’re all committing assets to the version-control repository.
- Commit all code to the mainline at least once per day – Code not committed to the mainline of the version-control repository for the project is inventory and inventory is waste. The less code is integrated with the rest of the system, the more complex the debugging and fixes are. The smaller the batches, the easier it is to work with
- Stop the line – when an error is introduced to the production line (no one else should commit). Get working on the fix in 10 minutes or less. This is crucial – as it relates to the complete software system
- Write tests along with code – for the infrastructure, deployment, configuration, application – everything. We’re not a believer in 100% code coverage. If you’re an advocate of test first, that’s great, but we tend to advocate for focusing on writing automated tests for higher-value features. Moreover, it’s also not really possible to assess the code coverage for things like CloudFormation or Chef scripts.
- Version everything – Application code, configuration, infrastructure and data. With the exception of binaries that are never modified by the team, the entire software system should contain text-based source files that are committed to the version-control repository so that the software system can be recreated at any point in time