Mark Windholtz on Domain-Driven Design (DDD)

About this Episode

Published August 20, 2020 | Duration: 58:51 | RSS Feed | Direct download
Transcript: English

Domain-driven design and extreme programming can help bridge the gap between development and business, and today we invite Mark Windholtz from Agile DNA to talk about how! Mark starts out by telling us about his early work in extreme programming before agile was a term and how he switched from Rails to Elixir after realizing its power for implementing domain-driven design. We take a deep dive with him into what these concepts mean, hearing him weigh in on how DDD can help architecture accommodate both development and business oriented complexities. For Mark, development and business teams must get a better understanding of each other’s jargon, and DDD is a way to accomplish this. The goal is to find a way of building a solid software core and to move away from features to systems thinking, whereby flexible software can make it more possible to do agile on the business side. We chat about some of the practices and principles that come into play when implementing DDD for Mark, and he details concepts like ubiquitous language, bounded contexts, and how to focus on the core domain by exploring models using tactical and strategic patterns. Along with this, Mark discusses users not being a domain concept, the challenges of getting new terms to stick in teams’ minds, and the task of refactoring code to reflect updated glossaries. Near the end of our conversation, Mark drills down on how DDD can optimize team efficiency. In closing, we get to know Chris Bell from ElixirTalk a little better in this week’s edition of Pattern Matching with Todd!

Key Points From This Episode:

  • Thoughts on SpaceEx and their approach to engineering: system versus feature optimization.
  • Mark’s background in extreme programming, how he got started with AgileDNA, and the work they do there.
  • A definition of extreme programming that adds engineering practices to Scrum.
  • Elixir’s superior ability to do DDD compared to Rails and how Mark got started using it.
  • A brief introduction to domain-driven design, an approach to simplifying complex software.
  • How architecture needs to accommodate essential as well as accidental complexity.
  • Elixir’s ability to accommodate the building of domain models with well-separated code chunks.
  • Principles of ubiquitous language and bounded contexts that make up DDD for Mark.
  • Ubiquitous language helps devs and businesspeople understand each other.
  • Bounded contexts: ‘Within this space, this world means this thing.’
  • Shifting focus from trying to make not all software, but core software, good.
  • What patterns are applied to use principles of ubiquitous language and bounded contexts.
  • Finding and focusing on the core domain by exploring models and how to do this using tactical and strategic patterns.
  • The consequences of users not being a domain concept which demands having a clearer language.
  • Challenges of getting language and concepts to stick in business people’s minds.
  • Refactoring code to reflect updated glossaries: Technical challenges teams doing DDD face.
  • Switching paradigms from feature-based optimizations to building an amazing code core.
  • Approaches to modeling: the value of exploring multiple models.
  • How teams can become more efficient using DDD and extreme programming.
  • Final plugs from Mark and how Agile DNA can help use Elixir to implement DDD.
  • Pattern matching: Todd gets to know more about Chris Bell from ElixirTalk.
  • How Chris got into programming, what he’d do if not be a programmer, and more!
  • Why Chris loves history, dream pop, and what movie he’ll watch over and over.
  • What project Chris is most excited about next: Building Settlers of Catan using LiveView.

Links Mentioned in Today’s Episode:

Elixir Wizards Listener Survey — https://smr.tl/podcastsurvey

SmartLogic — https://smartlogic.io/
Mark Windholtz on LinkedIn — https://www.linkedin.com/in/mwindholtz/
Mark Windholtz on Twitter — https://twitter.com/windholtz
Agile DNA — http://www.agiledna.com
Chris Bell on Twitter — https://twitter.com/cjbell_?lang=en
ElixirTalk — http://elixirtalk.com/
Chris Keathley — https://keathley.io/
Elon Musk — https://www.forbes.com/profile/elon-musk/#5bbe73cc7999
The Everyday Astronaut — https://www.youtube.com/channel/UC6uKrU_WqJ1R2HMTY3LIx5Q
Rob Martin — https://www.linkedin.com/in/version2beta/
Perhap — https://github.com/Perhap/perhap
Andrew Hao — https://github.com/andrewhao
Fred Brooks — http://www.cs.unc.edu/~brooks/
The Mythical Man-Month — https://www.amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959
Zach Thomas — https://github.com/zdcthomas?language=elixir&tab=stars
1917 — https://www.imdb.com/title/tt8579674/
Real Estate — https://www.realestatetheband.com/
Galaxie 500 — https://pitchfork.com/artists/1673-galaxie-500/
Star Trek: First Contact — https://www.imdb.com/title/tt0117731/
Star Trek: The Wrath of Khan — https://www.imdb.com/title/tt0084726/
LiveView — https://hexdocs.pm/phoenix_live_view/Phoenix.LiveView.html
Lonestar Elixir — https://lonestarelixir.com/

Special Guest: Mark Windholtz.