Just because something is compelling doesn’t mean it’s right
i.e. transitive dependencies or the easiest location to add feature X in your codebase
Plugins are a sign of bad composeability or lack of craftsmanship or both
i.e Ridiculous NPM modules that plugin your test tool into your transpiler into your bundler into your web server or equally insane Spring plugins. Maybe look at the unix way…
Libraries are overused and under understood
i.e most day to day problems are easier to solve from first principles than deciphering the README of some library.
Tools that haven’t had any updates in ages aren’t dead, but just finished.
i.e “ls” or “cat” or “less”, knowing when to stop adding features is actually the hard part
Simple isn’t something you start a project with and reminisce about, it’s where you are trying to get to
Red/Green/Refactor is wrong, it’s like trying to write a test afterwards, most of the time it’s too late. It should be spike, revert, spike, revert, refactor, refactor, refactor,1 line code change, done – but it’s not as catchy!
To go really really fast you need to consciously go really really slow
Conscious and deliberate decision making about roles and responsibility in your shared mental model will always trump how fast you can hack something into the codebase
It’s not about top down or bottom up, it’s about known to unknown
It doesn’t matter where you start as long as you start from some where you recognise, don’t start in the middle of the f**ing ocean and wonder why you got lost
When it’s hard to change something, that’s the codebase trying to talk to you, so put the pneumatic hammer away and listen.
Once you have heard enough, you will know exactly what to do (well until it starts talking to you again)
Data structures aren’t the reserve of the CS geek, the right one will literally embody the answer to your problem
Lists and maps will get the job done but you could do it with 80% less code and 80% faster, plus you can write clean code unlike most CS geeks…
Being a 10x developer isn’t about being 10x better or faster, it’s about doing 10x less…
…of the wrong things or going the wrong way at a million miles an hour. (And maybe asking 10x more questions)
And finally the most important question you can ever ask is: How would we do this without computers?