There are seven mental models - Inversion, Inertia, Second-Order Thinking, Entropy, Hanlon's Razor, Bottlenecks, and Activation Energy - that can help engineering managers make better decisions and avoid costly mistakes.
Some key dev philosophies to follow include the importance of avoiding rewrites by managing technical debt early, the last 10% of a project often takes as much effort as the first 90%, and automating good practices to enforce consistency. Devs also need to account for edge cases, simplify code when possible, and write testable, obviously correct code rather than relying on implicit correctness.
A software dev reflects on their decade in the industry, revisiting opinions they had written down in the past. For example, contrary to their past beliefs, they now believe that typed languages are essential, that simplicity is not a given, etc.
This essay provides tips on how to write, organize, and edit an effective design document. A design document is a technical report that outlines the implementation strategy for a system in the context of tradeoffs and constraints. Its goal should be to convince the reader that the design is optimal given the situation. Writing a design document adds rigor to otherwise vague intuitions - it helps the author think better.
There are two common extremes in software development: prioritizing speed over quality and prioritizing perfectionism over shipping. Both approaches lead to slowdowns, high costs, and burnout. Instead, use a "no bugs" mindset that focuses on writing clean, robust code from the outset, even if it initially seems slower.