Episode Artwork
1.0x
0% played 00:00 00:00
Apr 23 2017 92 mins   2.3k

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 http://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 http://www.codingblocks.net/slack to join today.


Survey


This week, we ask: Which (programming) language are you most envious of?





class = "yop-poll-question-35_yp593f59c7ba349">Which (programming) language are you most envious of?























































































 


Go sign up for the contest/trialSign 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 http://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




Tip of the Week



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 http://www.codingblocks.net/review to tell the world about us.