Podcast: Play in new window | Download
Subscribe: Apple Podcasts | Spotify | TuneIn | RSS
This week, Michael asks his customers about their anemic domain model, Allen talks in front of people, and Joe plays Rocket League as we begin our dive into understanding domain driven design.
Are you reading this episode’s show notes via your podcast player? You can find this episode’s full show notes at https://www.codingblocks.net/episode58.
Become a Part of the Community
Care to join in on the conversation? Join the conversation in the Slack community by heading over to https://www.codingblocks.net/slack to join today.
Survey
This week, we ask: Which (programming) language are you most envious of?
Sign up for a free 30-day trial for a chance to win a $500 Amazon gift card at GetAirbrake.com/cb.
News
- Thank you to everyone that left us a review! It really means a lot to us.
- iTunes reviews: tumoxe, drkaj, rumberger_, robbydiesal, heberej, Caffeine Slayer, ArgggGamer, gbmillard, Bob Minteer, wpdevguy, SanJustoEs, Tokachu, Mordef, DK4501, RCF9, ABSquaredX, Shenril, D***qAllTehNICKNAMEZtaken, ze durham, LucasandRico
- Stitcher reviews: JoeZacksBeard, MrE DBA, MoJoRisin, topswagcode, Joshua Kaluba, tackaman, Cruz, ssfcultra
- Top 10 things which make programmers unhappy at MyBroadband. A brief summary of this academic paper.
- nate_the_dba points out: Don’t use Allen’s SQL debugging Tip-of-the-Week in production as it can lock tables. (Or use it carefully.) And Michael asks, why are you debugging in production?
- Allen gives a presentation on Serverless Architecture (YouTube, Meetup). Unfortunately, he felt a bit uneasy following an extremely well polished presentation on JavaScript Everywhere (YouTube).
- Facebook announces React Fiber (TechCrunch)
- OMG, we’re already at Angular 4.0 (Blogspot)
- Joe moved to Orlando!
- So many more Meetups to attend.
- Joe attended the Orlando Code Camp.
Swag
I know, I know, your swagger game is tight. But, and hear me out, it could be better. Check out https://www.codingblocks.net/swag for more information on how to get some of your favorite Coding Blocks stickers and t-shirts.
Domain Driven Design (DDD)
Why Domain Driven Design
- What is the “domain”?
- Set of principles and patterns to solve difficult problems
- Clear and testable code that represents the domain
- Interact with domain experts
- In contrast to some approaches, you focus on a single domain at a time
- Business logic is in one area
Drawbacks?
- Need access to the domain experts
- Time and effort, initially, much higher
- Have to really think about how to isolate domain logic from other portions of your application
- Learning curve – as with any new framework / pattern
- No reason to do it in place of a simple crud app – if there’s not complex business domains to manage, this is overkill
- Gotta get buy in from upper management
- Is DDD anti-agile? http://stackoverflow.com/questions/39245741/what-makes-domain-driven-design-worthwhile
Ubiquitous Language
- One of the most important aspects of DDD
- “Client” means something totally different to a UI developer vs a domain expert working with customers
- Common vocabulary MUST be established – and all communications should be carried out with that vocabulary
- Need to focus on how the domain works – nothing regarding implementation details
Getting into the details…a bit
- Bounded context – specific responsibility with explicit boundaries that separate it from other parts of a system
- “Explicitly define the context within which a model applies…Keep the model strictly consistent within these bounds, but don’t be distracted or confused by issues outside” – Eric Evans
- Terms:
- Problem domain – the specific problem you’re working on solving
- Core domain – key to the customer’s business – cannot be outsourced
- Sub domain – separate pieces your software must interact with
- Context mapping – identifying bounded contexts and their relationships to one another
- Shared kernel – part of the model that is shared by more than one team – will not change without collaboration between teams
Resources We Like
- Domain-Driven Design Fundamentals by Julie Lerman and Steve Smith (available at Pluralsight)
- Modern Software Architecture: Domain Models, CQRS, and Event Sourcing by Dino Esposito (available at Pluralsight)
- Domain Driven Design – Tackling Complexity in the Heart of Software by Eric Evans (available at Amazon)
- http://DDDCommunity.org
- http://DomainLanguage.com
Tip of the Week
- http://voicecode.io/ – Write code using only your voice
- http://surge.sh – Publish your site from the command line
- Function Apps in Azure
- Just when we thought https://regex101.com/ was the greatest site to be added to the Internet, Matthew Watkins writes in to inform us of http://refiddle.com/ and (his favorite) http://www.regexr.com/. Thanks Matthew!
Share With a Friend
Would you like to help us? You can. And it’s easy. Share Coding Blocks with a friend. See. Now wasn’t that easy? And what’s even better, now your friend knows that you’re a genius. So, win-win right?
And hey, there’s one last way you can help us. How’s that you ask? Simply leave us a review. Head to https://www.codingblocks.net/review to tell the world about us.