Design by Coding (DbC) is a way to develop an architecture incrementally as you code. It builds on Test- and Behavior-Driven-Development techniques, and provides a way to go from user stories to an effective API or declarative interface, using actual code as your design canvas. You effectively design and code simultaneously. The process is an ideal way to build a coherent agile system incrementally, working directly from the stories and without a formal up-front design process, and it addresses a common failing of standard TDD: losing track of the big picture when you focus on incremental improvements. The result is a system that's can handle volatility with ease. The technique is also perfectly suited for building effective and minimal microservice APIs.
This is a practical class that includes a live demo of the process. You'll come away understanding how to use the technique in your own system.
More and more, we need to design systems incrementally as the system evolves rather than in one giant up-front phase, and our designs must still be coherent and able to easily stand up to the stress of changing requirements. We have to design effectively while we're building. These facts are particularly true in the microservice and Agile worlds. This hands-on workshop looks at both theory and three practical techniques: Design by Coding (DbC) is a way to design incrementally literally while you're coding, and doing that in such a way that you get an optimal design and architecture. DbC is an evolutionary approach based on TDD, and is particularly effective in a collaborative environment. We also look at Event storming and DDD, a way to implement complex reactive systems such as choreographed microservice systems.
This hands-on workshop takes you through the entire process. Starting with user stories and domain analysis, we'll create a system metaphor to ensure architectural coherence, identify key abstractions and bounded contexts, and then construct a system incrementally, coding and designing in parallel. The result is a coherent and highly maintainable system and architecture that can easily accommodate changing requirements. We'll also use (and you'll learn about) mob programming and other contemporary Agile practices that will greatly improve both your effectiveness as a programmer and the quality of your code.
Allen Holub (http://holub.com, @allenholub, email@example.com) is an internationally recognized software architect and Agile coach. Allen speaks internationally about these topics and agile-friendly implementation technology like microservices. He provides in-house training and consulting in those areas. He excels at building highly functional Lean/Agile organizations and designing and building robust, highly scalable software suitable for agile environments. He's worn every hat from CTO to grunt programmer.
Allen is widely published. His works include 10 books, hundreds of articles in publications ranging from Dr. Dobb’s Journal to IBM DeveloperWorks), and video classes for agilitry.com (Agility with Allen) and for Pluralsight (Swift in Depth, Picturing Architecture, Object-Oriented Design), LinkedIn Learning (Architecture Fundamentals, and Domain-Driven Design), and O’Reilly (Design Patterns in the Real World).
If you'd like to bring Allen inhouse for consulting or training work, set up a chat at https://holub.com/chat and we can discuss your needs.