Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Towards Autonomous Aligned Teams with Domain-Dr...

Towards Autonomous Aligned Teams with Domain-Driven Design

I’ve been involved in several transformations over the years, from DevOps to Digital to Agile. These transformations typically focus on transitioning people into near-autonomous teams of no more than eight people who will work in an agile manner. Every company I’ve worked for asks the same questions at these transformations: How do we divide the current software between the teams, and how do we align these teams to our business architecture?

To address these questions, companies request my help to design microservices using a Domain-Driven Design (DDD) approach. This approach makes it easier to distribute the software between teams based on identified boundaries, called “bounded contexts.” While I believe enterprises involved in an Agile transformation need at least a Domain-Driven Design approach to create autonomous aligned teams with a loosely-coupled architecture, this process presents unique challenges. In this talk I will present my experience report, I share my experience over a period of six months using DDD to transition a financial enterprise towards Agile autonomous teams.

Kenny Baas-Schwegler

August 06, 2019
Tweet

More Decks by Kenny Baas-Schwegler

Other Decks in Technology

Transcript

  1. Kenny Baas-Schwegler Strategic software delivery - Socio-technical architect - Domain-driven

    design - Facilitator @kenny_baas Baasie.com xebia.com/blog/author/kbaas/
  2. 7 Any organization that designs a system (defined more broadly

    here than just information systems) will inevitably produce a design whose structure is a copy of the organization's communication structure. — Mel Conway @kenny_baas
  3. 9 @kenny_baas Buildings 7 people Roads 16 people Wires System

    Buildings system Roads system Wires 30 people
  4. 10 @kenny_baas Buildings 7 people back-end 6 people Wires System

    Buildings system Roads system Front-end 6 people Poles 7 people Wires 9 people Connections 9 people
  5. [In our study at Thoughtworks we found] work takes an

    order of magnitude longer when it leaves a team. — James Lewis (@boicy) Credit: Nick tune
  6. 14 @kenny_baas Buildings 7 people Road 6 people Wires Systems

    Buildings system Roads system Sidewalk 6 people Electra 7 people Internet 9 people Telephone 9 people
  7. 19 Essence of Domain-Driven Design ➔ Using models for creating

    software ➔ Focus on part of the software handling complex business requirements ➔ Focus on a language where we really crisply concisely describe the situation in the domain ➔ Shared language created through conversations between business people (specialists) and software people which becomes the ubiquitous language ➔ Instead of one canonical language, create multiple bounded languages @kenny_baas
  8. “It is not the domain experts knowledge that goes to

    production, it is the assumption of the developers.” -Alberto Brandolini @kenny_baas
  9. 29 Problem Space Our world as we perceive it (Sub)Domains

    Business Architecture Independent of Software Language is fluid Stable system, strategic changes @kenny_baas
  10. 36 @kenny_baas Brain Science - the 6 trumps by Sharon

    Bowman - https://www.youtube.com/watch?v=DAiXOgFu8Wc
  11. Tender signed Mortgage application passed 48 @kenny_baas We already have

    the customer information, but we make them fill it in. This is not customer-friendly. We are ping-ponging tasks with another team.
  12. 62 A model is a simplified representation of a thing

    or phenomenon that intentionally emphasizes certain aspects while ignoring others. Abstraction with a specific use in mind. - Rebecca Wirfs-Brock @kenny_baas
  13. 63 Solution Space Our world as we designed it Bounded

    Context Software Architecture Linked to the business language is consistent Constant changes, depending on insights Problem Space Our world as we perceive it (Sub)Domains Business Architecture Independent of Software Language is fluid Stable system, strategic changes @kenny_baas
  14. 64 @kenny_baas “Architectural design is system design. System design is

    contextual design — it is inherently about boundaries (what’s in, and what’s out, what spans, what moves between), and about tradeoffs.” —Ruth Malan
  15. 69 If we have a system of improvement that is

    directed at improving the parts taken separately. You can be absolutely sure that the improvement of the whole will not be improved. Russ Ackoff @kenny_baas
  16. 70 To achieve autonomous alignment, we need to stop thinking

    in terms of business and IT and start acting as an integrated team. @kenny_baas
  17. 71 To achieve autonomous alignment, we need to form a

    culture in interactions, in conscious dialogue and in decisions, by having rituals and marketplaces. @kenny_baas
  18. 72 To achieve autonomous alignment, we need to have an

    open modern culture with a leadership to match. @kenny_baas