Glean 拾遗
Recent picks

2picks · chronological

09-14

My Principles for Building Software

A practitioner's list of principles for building software, most aimed at making systems simpler: make invalid states unrepresentable, enforce data consistency, design data before code, measure before trading away simplicity. The appendix shows what inconsistency costs — split two Boolean variables x and y that must stay equal into separate databases and the data gains two more states, leaving the toggle function with no correct answer. The author argues consistency is the most undervalued property in software engineering and that most bugs are data failing an expectation. Other principles: avoid trading local simplicity for global complexity (smaller services often do this), don't optimize without measurement, keep code consistent even when the consistent thing isn't the "correct" thing, and learn concepts — the relational model, algebraic data types, borrow checking — rather than surface details of React or Kubernetes. Aimed at backend and data engineers weighing service splits and schema design.

kevinmahoney.co.uk · 9 min · Database · Programming Languages · Software Engineering
08-31

Why senior developers fail to communicate their expertise

This post frames senior developers' communication failure as a clash between two business loops. The first loop tries to reduce market uncertainty by shipping fast; the second loop keeps paying customers served by controlling system complexity. Once a company has customers, both loops run at once, so developers talk in terms of complexity while everyone else worries about uncertainty. The author argues that senior developers' real skill is refusing unnecessary work and reusing existing software, and that they should express it as 'Can we try something quicker?' — a phrase that acknowledges the business's need for speed while leaving room for simplification. He also proposes separating the fast 'Speed' system from a stable 'Scale' system, and warns that AI accelerates the first loop while degrading understandability and stability in the second, without taking responsibility. A thoughtful read for engineers interested in organizational communication and system evolution.

www.nair.sh · 13 min · Engineering Culture · Software Engineering · System Design