Skip to content

Commit

Permalink
Reorganize
Browse files Browse the repository at this point in the history
  • Loading branch information
bdfinst committed Dec 15, 2023
1 parent f6cb6ae commit 7579932
Show file tree
Hide file tree
Showing 47 changed files with 267 additions and 309 deletions.
112 changes: 107 additions & 5 deletions content/en/docs/_index.md 100755 → 100644
@@ -1,13 +1,115 @@
---
title: "Flow Improvement"
linkTitle: "Flow Improvement"
title: "Flow Improvement Learning Path"
linkTitle: "Learning Path"
weight: 20
menu:
main:
weight: 10
---

{{% pageinfo %}}
Improving the flow of delivery requires a combination of tooling, process improvement, and teamwork. [Continuous delivery](http://minimumcd.org) is an excellent tool for finding what needs to be improved next.
These are the core skills we recommend everyone learn to execute CD.

{{% /pageinfo %}}
## Behavior-Driven Development

Every step in CD requires clear, testable acceptance criteria as a prerequisite. BDD is not test automation. BDD is the
discussion that informs acceptance test driven development.

- Videos
- [What is BDD](https://www.youtube.com/watch?v=zYj70EsD7uI) Dave Farley co-author of [Continuous Delivery](https://continuousdelivery.com) - 16:28 min
- [Acceptance Testing](https://www.youtube.com/watch?v=JDD5EEJgpHU)
By Dave Farley - 14:49 min
- Recommended Reading
- [BDD In Action](https://www.manning.com/books/bdd-in-action) by John Ferguson Smart
- [Behavior-Driven Development with Cucumber: Better Collaboration for Better Software](https://www.amazon.com/Behavior-Driven-Development-Cucumber-Specification-Example/dp/0321772636)
by Richard Lawrence, Paul Rayner

## Continuous Integration

Continuous integration is a requirement for CD. It requires very frequent integration of non-breaking code.

- Videos
- [Top 10 Rules For Continuous Integration](https://www.youtube.com/watch?v=Xl62gQpAl1w) Dave Farley - 17 min.
- [Continuous-Integration-Practices](https://www.linkedin.com/learning/devops-foundations/continuous-integration-practices?u=26192810)
on Linkedin Learning. Instructed by Ernest Mueller and James Wickett - 4 min.
- [Continuous-Integration](https://www.linkedin.com/learning/devops-foundations-microservices/continuous-integration?u=26192810)
on Linkedin Learning. Instructor by Laura Stone - 4 min.
- Recommended Reading
- [Continuous Integration: Improving Software Quality and Reducing Risk](https://www.amazon.com/Continuous-Integration-Improving-Software-Reducing/dp/0321336380)
by Paul M. Duvall, Steve Matyas, Andrew Glover.

## Conway's law

"Any organization that designs a system will produce a design whose structure is a copy of the
organization's communication structure." - Melvin Conway

Loosely coupled teams create loosely coupled systems. The opposite is also true.

- Videos
- [Don't Forget Conway's Law](https://www.youtube.com/watch?v=zA1EXJV1JWQ) Sarah Novotny - 8:50 mins.
- Recommended Reading
- [Building Microservices - Ch 10](https://www.oreilly.com/library/view/building-microservices/9781491950340/ch10.html) by Sam Newman.

## Domain-Driven Design

This is another key design tool both for organizational and system design. This is a critical skill for developing microservices.

- Videos
- [What is DDD](https://www.youtube.com/watch?v=pMuiVlnGqjk) Eric Evans - 57:06 min.
- [Software Architecture: Domain-Driven Design](https://www.linkedin.com/learning/software-architecture-domain-driven-design/better-apps-with-domain-driven-design?u=26192810) LinkedIn Training Course.
- Recommended Reading
- [What Is Domain-Driven Design?](https://www.oreilly.com/library/view/what-is-domain-driven/9781492057802/preface01.html#:~:text=DDD%20is%20a%20methodology%20that,domain%2C%20needs%2C%20and%20strategy) by Vladik Khononov.

## Pipeline Steps

Architecting a system of delivery is about designing efficient quality gates for the system's context.

- Videos
- [Understanding A DevOps Pipeline](https://www.youtube.com/watch?v=MnyvgFDh-kw) David Farley - 13:24 mins.
- Recommended Reading
- [Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation](https://learning.oreilly.com/library/view/continuous-delivery-reliable/9780321670250/) Jez Humble and David Farley

## Test-Driven Development (Design)

TDD highly correlates with application architecture that is easy to maintain and easy to upgrade.

- Videos
- [Does TDD Lead to Better Software Design?](https://www.youtube.com/watch?v=fSvQNG7Rz-8) Dave Farley co-author of
[Continuous Delivery](https://learning.oreilly.com/library/view/continuous-delivery-reliable/9780321670250/) - 18:32 min.
- [Three Mindsets of TDD](https://www.youtube.com/watch?v=xUi2951ufaw) Dave Farley co-author of
[Continuous Delivery](https://learning.oreilly.com/library/view/continuous-delivery-reliable/9780321670250/) - 18:57 min.
- [TDD and DDD with .NET Core and VSCode](https://www.youtube.com/watch?v=ORe0r4bpfac) - 1 hour
- Recommended Reading
- [Test Driven Development: By Example](https://learning.oreilly.com/library/view/test-driven-development/0321146530/) by Kent Beck.

## Three Ways

The core principles that define DevOps:

1. Consider the system of delivery as a whole
2. Amplify feedback loops
3. Continuously learn and improve the delivery system

- Videos
- [The 3 Ways of The Phoenix Project](https://www.youtube.com/watch?v=nUOXDEvplRc) co-author [Gene Kim](https://learning.oreilly.com/library/view/the-phoenix-project/9781457191350/) - 3:30 mins.
- Recommended Reading
- [The Three Ways: The Principles Underpinning DevOps](https://itrevolution.com/the-three-ways-principles-underpinning-devops/) by Gene Kim
- [The DevOps Handbook](https://itrevolution.com/product/the-devops-handbook-second-edition/) - Gene Kim et al

## Value Stream Mapping

The primary process analysis tool used to help identify and attack constraints to delivery.

- Videos
- [How we used Value Stream Mapping to accelerate DevOps adoption](https://www.youtube.com/watch?v=OXMdSe1_wc0) Marcus Robinson - 45:26 min.
- Recommended Reading
- [Value Stream Mapping: How to Visualize Work and Align Leadership for Organizational Transformation](https://learning.oreilly.com/api/v1/dashboard/continue/9780071828918) - Karen Martin and Mike Osterling

## Wastes

Our goal is to remove waste daily. We must first learn to recognize it.

- Videos
- [The 7 Types of Waste in Software Development](https://www.youtube.com/watch?v=c8tAKBHO2i8) Alex Green - 10:34 mins.
- Recommended Reading
- [Making Work Visible](https://learning.oreilly.com/library/view/making-work-visible/9781457191428/10-part-1.xhtml) by Dominica DeGrandis.
- [The Art of Lean Software Development](https://learning.oreilly.com/library/view/the-art-of/9780596155711/ch02.html) by Curt Hibbs; Mike Sullivan; Steve Jewett.
22 changes: 12 additions & 10 deletions content/en/docs/cd/_index.md
@@ -1,6 +1,8 @@
---
title: Getting Started with CD
title: Starting CD
weight: 2
description: >
Migrating your system to Continuous Delivery
tags:
- CD
---
Expand Down Expand Up @@ -86,18 +88,18 @@ This working agreement for CI focuses on developing teamwork and delivering qual

**Desired outcomes:**

- [More frequent](/metrics/integration-frequency) integration of smaller, higher quality, lower risk changes.
- [More frequent](/docs/metrics/integration-frequency) integration of smaller, higher quality, lower risk changes.
- More efficient and effective test architecture
- [Lean code review process](/docs/workflow-management/code-review)
- Reduced [Work In Progress](/docs/workflow-management/limiting-wip) (WIP)

### Continuous Delivery/Deploy

- Increased [delivery frequency](/metrics/release-frequency)
- [Increased stability](/metrics/quality)
- Improved [deploy success](/metrics/change-fail-rate)
- Reduced [development cycle time](/metrics/development-cycle-time)
- Improved [time to restore service](/metrics/mean-time-to-repair)
- Increased [delivery frequency](/docs/metrics/release-frequency)
- [Increased stability](/docs/metrics/quality)
- Improved [deploy success](/docs/metrics/change-fail-rate)
- Reduced [development cycle time](/docs/metrics/development-cycle-time)
- Improved [time to restore service](/docs/metrics/mean-time-to-repair)
- Reduced process waste
- Smaller, less risky production releases.
- Small, cohesive, high morale, high-performing product teams with business domain expertise.
Expand Down Expand Up @@ -200,9 +202,9 @@ There should be no manual intervention after the code is integrated into the tru

## Tips

Use [trunk merge frequency](/metrics/integration-frequency),
[development cycle time](/metrics/development-cycle-time), and
[delivery frequency](/metrics/release-frequency) to uncover pain points. The team has
Use [trunk merge frequency](/docs/metrics/integration-frequency),
[development cycle time](/docs/metrics/development-cycle-time), and
[delivery frequency](/docs/metrics/release-frequency) to uncover pain points. The team has
complete control merge frequency and development cycle time and can
uncover most issues by working to improve those two metrics.

Expand Down
2 changes: 1 addition & 1 deletion content/en/docs/cd/cd-anti-patterns.md
Expand Up @@ -2,7 +2,7 @@
title: Common Blockers
weight: 2
tags:
- cd
- CD
---

The following are very frequent issues that teams encounter when working to improve the flow of delivery.
Expand Down
6 changes: 3 additions & 3 deletions content/en/docs/cd/delivery-system-improvement-journey.md
@@ -1,7 +1,7 @@
---
title: Pipeline & Application Architecture
tage:
- Continuous Delivery
- CD
- Pipeline Architecture
---

Expand Down Expand Up @@ -44,7 +44,7 @@ With an entangled architecture, there is no clear ownership of individual compon
defect anywhere in the system because they are not working within product boundaries. The pipeline's quality signal will
be delayed compared to better-optimized team architectures. When a defect is found, it will require effort to identify
which team
created the defect and a multi-team effort to improve the development process to prevent regression. [Continuous delivery](/testing/glossary#continuous-delivery)
created the defect and a multi-team effort to improve the development process to prevent regression. [Continuous delivery](/docs/testing/glossary#continuous-delivery)
is difficult with this architecture.

The journey to CD begins with each team executing [continuous
Expand Down Expand Up @@ -132,7 +132,7 @@ With a loosely coupled architecture, components are delivered independently of e
complexity and improves quality feedback loops. This not only relies on clean separations of teams and sub-assemblies but also on mature testing practices that include the use of virtual services to verify integration.

It's critical when planning to decompose to smaller services that [Domain Driven
Design](/docs/devops-learning-path#domain-driven-design) is used to inform service boundaries, value objects, and team
Design](/docs#domain-driven-design) is used to inform service boundaries, value objects, and team
ownership. Services should use [good micro-service design patterns](/docs/cloud-checklist)

Once we have built our production deployment pipeline, the next most critical constraint to address is the trustworthiness of our
Expand Down
2 changes: 1 addition & 1 deletion content/en/docs/cloud-checklist.md
Expand Up @@ -2,7 +2,7 @@
title: Cloud Native Checklist

tags:
- cd
- CD
---

- [Cloud Native checklist](#cloud-native-checklist)
Expand Down
112 changes: 0 additions & 112 deletions content/en/docs/devops-learning-path.md

This file was deleted.

2 changes: 2 additions & 0 deletions content/en/docs/glossary.md
@@ -1,6 +1,8 @@
---
title: Glossary
weight: 1
tags:
- Glossary
---

- [Continuous Delivery](#continuous-delivery)
Expand Down

0 comments on commit 7579932

Please sign in to comment.