the internal software quality of a code base correlates to the level of emotional intelligence shared among stakeholders. EQ leads to ISQ
it's like the the code is a reflection of the conversations being had across the team
and the quality of the communication (where we need the EQ) shows in the Internal Software Quality (ISQ)
2/
every piece of code you look at, is a series of conversations between one or more developers and their manager. or to unpack it a lil more ...
3/
id bet that every class you look at that is easily understood, easily refactored, is a series of collaborative, respectful, clear, healthy conversations between one or more developers and their manager, and their manager's manager, the customer, and the end user
4/
on the flip, id bet that every class you look at that is confusing, hard to read, test, refactor, is a series of
confusing or contentions or guarded conversations between one or more developers and their manager, and their manager's manager, the customer, and the end user
5/
relates to day to day convos we have as devs
and what we know about #conwaysLaw to paraphrase:
"systems are copies of the communication structures of organizations"
6/
and since - higher EQ = better communication
we might extend conway's law to:
"systems are copies of the communication style, quality, and shared EQ between teams"
/7
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 ...