🧪 Master testing once and for all. Get a 25% off discount on my new Testing Mastery course. Ends in 2 days.
Most devs struggle with testing! Learning how to write useful tests (on any side of the stack), is without a doubt, the first skill every developer can master to get on track with what actually matters, and propel yourself forward to take on 10x more difficult problems.
Today, I'm proud to announce the launch of "Testing Mastery": The Software Essentialist Bachelors Program, where you'll learn and practice writing powerful tests on any side of the stack, starting from first principles.
Before the end of the month (October 31st), you can get the entire suite of courses in the program for 25% off using the discount code TESTING-MASTERY. Enroll here.
Because despite what it seems like, you don't have to burn out trying to keep up with all the latest JavaScript libraries and frameworks. You don't have to learn everything. You just have to master what matters.
All the best, and as always, To Mastery!
Responsibility-Driven Design
🌱 This blog post hasn't fully bloomed. It's very likely to change over the next little while.
“Understanding responsibilities is key to good object-oriented design” — Martin Fowler
Do you struggle with object-oriented programming? Does it sometimes feel like it's overly complex for no reason? When you're writing object-oriented code, do you sometimes feel like you're slowly watching it turn into a spaghetti mess? Do you sometimes feel confused as to when you should create new classes? Do you feel like it might be better to just use functions instead?
What if I told you that there's more to building software with objects than just classes, inheritance, polymorphism and encapsulation?
What if I told you that there's a design method - a way of turning requirements into object-oriented designs - that actually
And what if I told you that it was the programming world's most influentual design method (that all the expert object designers are using) that you've likely never heard about.
About Responsibility-Driven Design (RDD)
Allow me to introduce you to Responsibility Driven Design (RDD): the programming world’s most influential, effective, and intentional approach to designing object-oriented software. I know, big claim. But it’s true.
RDD, originally invented by Rebecca Wirfs-Brock in the late 80s and modernized in her 2002 book titled Object Design is a learnable and repeatable design method for building object-oriented applications.
Where most of us today write and think in procedural style code using classes and functions because it's often what the languages dictate, Responsibility-Driven Design presents an approach to actually design objects with purpose and intention.
Roles, responsibilities, collaborations
Object software is neighborhoods of collaborating objects which (polymorphically) come and go, each filling in for roles with related responsibilities.
- Role: A collection of related responsibilities
- Resoponsibility: An obligation to do (some task/behavior) or know something (some data)
- Collaboration: An interaction of objects or roles (or both)
...
To be continued...
Check out the wikipedia page on Responsibility-Driven Design and feel to leave comments or questions for when I finish this post.
Discussion
Liked this? Sing it loud and proud 👨‍🎤.
🧪 Master testing once and for all. Get a 25% off discount on my new Testing Mastery course. Ends in 2 days.
Most devs struggle with testing! Learning how to write useful tests (on any side of the stack), is without a doubt, the first skill every developer can master to get on track with what actually matters, and propel yourself forward to take on 10x more difficult problems.
Today, I'm proud to announce the launch of "Testing Mastery": The Software Essentialist Bachelors Program, where you'll learn and practice writing powerful tests on any side of the stack, starting from first principles.
Before the end of the month (October 31st), you can get the entire suite of courses in the program for 25% off using the discount code TESTING-MASTERY. Enroll here.
Because despite what it seems like, you don't have to burn out trying to keep up with all the latest JavaScript libraries and frameworks. You don't have to learn everything. You just have to master what matters.
All the best, and as always, To Mastery!
Stay in touch!
Join 15000+ value-creating Software Essentialists getting actionable advice on how to master what matters each week. đź––
View more in Object-Oriented Design
You may also enjoy...
A few more related articles