Aggregate Roots, Entities, and Deliberate Practice

This episode has everything. Rob shares a story about the crappy website he had to use to book tickets for a park, JD is starting to plan his summer vacation in a COVID world, and then it gets technical. JD has a better understanding of Domain-Driven Design now, and the two discuss his learning from last week. This leads into a broader discussion about side projects, progress, and experience, and the two share their frustration comparing their progress with popular open source projects.
Summary

Rob plans some activities again in a world that slowly opens up, and shares his frustrating experience booking tickets for Universal Studios. JD is thinking about his summer vacation, and has decided to take a full three weeks off to recharge from the stress. It'll probably be a motorcycle vacation in Germany. The two chat about the cultural differences when it comes to holidays, especially between the US and Sweden.

Then JD gives an update on his project, reflects on his approach, and describes how he shifted from a "getting things done" to a growth mindset to enjoy the work more. This has helped push him forward exploring DDD, which the two discuss in depth. With the lessons he learnt, JD rewrote the initial version of his domain model and is making much more progress than before. One insight in particular helped redesign the domain:
Aggregates turned out to be one of the most difficult patterns to apply. There was an over-emphasis on access rules within aggregates (nobody can hold a reference to things within an aggregate apart from the aggregate root). A much more useful view at aggregates is to look at them as consistency boundaries for transactions, distributions and concurrency.
Progress is still slow though, which prompts JD to reflect on his expectations on software development and open source. Do other people really write side projects in one weekend? Were popular projects open source projects really created in a day? Or is it a sign of practice and experience? And what role play frameworks in this? Do they support the projects, or do they hide too much complexity for learning? JD argues that he's been too focused on executing, and has not payed enough attention to deliberate practice.

Stay in touch

Website: https://www.devnlife.com
Jan David: https://twitter.com/0x6a64
Rob: https://twitter.com/RobPando
Copyright 2019 Jan David Nose & Rob Pando