Edit this page on GitHub

Home > docs > references > References


References

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.

Microservices

Understanding DevOps

Continuous Integration

Continuous Delivery

Domain Driven Design

TDD/BDD

Pair Programming

Suggested Reading

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 platform—with 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

Architecture

Delivering quickly goes beyond build automation. Decomposing applications into small, decoupled, individually deployable components is key to rapid feedback.

Estimating Stories

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.

Evolutionary Database

The database is just another service and needs to maintain its contract with consumers. Here’s some resources on how to get that done.

Evolutionary Development

Changes should be planned to allow daily deployment of the most current code without breaking the current functionality.

Flow Management

There’s more than one way to manage flow, but all of them take practice and discipline to execute.

Operational Stability

Is your application ready for production?

Product Ownership

The role of the Product Owner is commonly misunderstood. Here’s a quick video that explains how it works.

Source Management

Proper source management is foundational. Everything related to value delivery must be source controlled, including documentation.

Strangler Pattern

Teamwork

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.

Feature Flags