developer's learnings
-
Typed languages are essential on teams with mixed experience levels.
-
Java is a great language because it’s boring!
-
Objects are extremely good at what they’re good at. Blind devotion to functional is dumb.
-
Monoliths remain pretty good.
-
Micro-services require justification (they’ve increasingly just become assumed).
-
The “best tool for the job” is often the “least-worst tool across many jobs”. Operating a zoo is the real tax.
-
Engineering is about communication.
-
Clarity is seniority. Cleverness is overhead. Optimize for the maintainer at 2am, not your elegance.
-
There is no pride in managing or understanding complexity.
-
Very few abstractions exist in general application development. Just write the code you need.
-
Abstractions don’t remove complexity. They move it to the day you’re on call. Every abstraction is a bet that you won’t need to understand what’s underneath.
-
ORMs are devil in all languages and all implementations. Just write the SQL.
-
DynamoDB is no good choice for general application development.
-
It’s very hard to beat decades of RDBMS research and improvements.
-
Most projects don’t need to “scale” and are damaged by pretending so.
-
Do reinvent the wheel!. This is how you learn, and is the first step to make new, better wheels.
-
Don’t re-write things that work.
-
Code comments are NOT useless.
-
First do it, then do it right, then do it better. Momentum creates clarity. Analysis paralysis creates nothing.
-
Dwelling on variables you cannot control creates anxiety without agency.
-
The fastest code is code that never runs.
-
If you can’t explain how a process reduces risk or increases clarity, it’s probably just overhead.