different people/teams may have different
povs/ models/ experiences/ conceptualization/ understandings
of the subject matter or problem to be solved, and ...
👇🏾
they dont realize that there are these different povs; and even if they do,
they dont see the danger of coding to different concepts as long as it "works"; so inevitably ...
👇🏾
they have confusing communication and meetings
they step on each others toes
they burn a lot of unnecessary code/energy/business-dollars
👇🏾
a solution might be:
to harp on constant refinement of the concepts within the subject matter i.e. domain i.e. the problem to be solved, and then
to diligently marry those refined concepts to code elements named by words in the shared (ubiquitous) domain language
✊🏾
"DDD is OOD done right", where one of OOD basic approaches is to create classes and methods from nouns and verbs used by users describing the problem; then DDD looks at how that noun or verb fits within the deeper context of what the users actually need
and "what the users actually need" is something no one not even them may even fully understand right away. but it will come to light after repeated brainstorming and refining and refactoring sessions between users smes and devs
Domain Driven Design (DDD) made plain broke down to the bone gristle. cus i need that science to level up my code, but miss me with all the stuffy acronyms and jargon. 🧵
domain
- the actual problem
- what we're trying to solve with the code for the user
- the set of problems that the users ask the developers to solve
- the subject matter
domain driven
- problem focused
- to stay focused on the actual problem
For me, when the need for a new language, library, framework, shiny thing, etc pops up - i find that i usually take the same general steps
and the 7-bullet list i jotted down in my notes became this thread:
1. pick a language, any language. or framework, library etc.
no tech is perfect. don't sweat it the choice too much. they all have pros and cons - but do try to pick one that has good community adoption so you can get help when you run into blockers
"Always implement things when you actually need them,
never when you just foresee that you need them." - Ron Jeffries
i feel attacked 🙄
(over-abstraction is one of my guilty pleasures) 😅
like, sometimes i'll take that advice to "code to the interface" to the extreme, just cus i can, and i'll make everything an interface. what you can do with polymorphism and dependency injection is fun ...
but man is it an over-abstraction time suck when trying to just focus on "keeping it simple" KISS minimum viable product. gotta draw the line somewhere and make concrete classes and move forward ...