Continuous Delivery isn’t new. It’s been commonplace in many companies for over a decade. Included here is a list of information
resources we’ve found helpful as we’ve continued to improve.
Domain Driven Design
Accelerate: by Nicole Forsgren, Jez Humble, & Gene Kim
Does technology actually matter? And how can we apply technology to drive business value?
For years, we've been told that the performance of software delivery teams doesn't matter;
that it can't provide a competitive advantage to our companies.
Through four years of groundbreaking research, Dr. Nicole Forsgren, Jez Humble, and
Gene Kim set out to find a way to measure software delivery performance—and what drives
it, using rigorous statistical methods. This book presents both the findings and the
science behind that research. Readers will discover how to measure the performance of
their teams, and what capabilities they should invest in to drive higher performance.
BDD in Action: by John Ferguson Smart
BDD in Action teaches you BDD principles and practices and shows you how to integrate them into your
existing development process, no matter what language you use.
First, you'll apply BDD to requirements analysis so you can focus your development efforts on
underlying business goals.
Then, you'll discover how to automate acceptance criteria and use tests to guide and report on
the development process.
Along the way, you'll apply BDD principles at the coding level to write more maintainable and
better documented code.
Continuous Delivery: by Jez Humble & David Farley
Getting software released to users is often a painful, risky, and time-consuming process. This
groundbreaking new book sets out the principles and technical practices that enable rapid,
incremental delivery of high quality, valuable new functionality to users.
Implementing Domain-Driven Design: by Vaughn Vernon
Implementing Domain-Driven Design presents a top-down approach to understanding domain-driven
design (DDD) in a way that fluently connects strategic patterns to fundamental tactical
programming tools. Vaughn Vernon couples guided approaches to implementation with modern
architectures, highlighting the importance and value of focusing on the business domain while
balancing technical considerations.
Paul Hammant Blog
Working Effectively with Legacy Code by Michael Feathers
Is your code easy to change? Can you get nearly instantaneous feedback when you do change it?
Do you understand it? If the answer to any of these questions is no, you have legacy code,
and it is draining time and money away from your development efforts.
In this book, Michael Feathers offers start-to-finish strategies for working more effectively
with large, untested legacy code bases. This book draws on material Michael created for his
renowned Object Mentor seminars: techniques Michael has used in mentoring to help hundreds
of developers, technical managers, and testers bring their legacy systems under control.
The topics covered include
* Understanding the mechanics of software change: adding features, fixing bugs, improving
design, optimizing performance
* Getting legacy code into a test harness
* Writing tests that protect you against introducing new problems
* Techniques that can be used with any language or platformwith examples in Java, C++,
C, and C#
* Accurately identifying where code changes need to be made
* Coping with legacy systems that aren't object-oriented
* Handling applications that don't seem to have any structure
References by Topic
Delivering quickly goes beyond build automation. Decomposing applications into small, decoupled, individually deployable components is key to rapid feedback.
One of the struggles many teams have is how to break down stories and how to properly estimate work. Here’s some resources we’ve found that have helped us in the past.
The database is just another service and needs to maintain its contract with consumers. Here’s some resources on how to get that done.
Changes should be planned to allow daily deployment of the most current code without breaking the current functionality.
There’s more than one way to manage flow, but all of them take practice and discipline to execute.
Is your application ready for production?
The role of the Product Owner is commonly misunderstood. Here’s a quick video that explains how it works.
Proper source management is foundational. Everything related to value delivery must be source controlled, including documentation.
Testing & Quality
Developer driven testing is required for CD to function. Here’s some resources to get you started and some ideas to help you explore new way to get effective testing done.