Functions and Decomposition
Listed inFunctions and DecompositionCode Crafton
One job per function, argument count as a design smell, and when splitting makes things worse.
Page 6 of 11
Listed inFunctions and DecompositionCode Crafton
One job per function, argument count as a design smell, and when splitting makes things worse.
Listed inTransactions and IsolationDatabaseson
ACID, the isolation levels, and the anomalies each one still permits.
Listed inTest-Driven DevelopmentTestingon
Red, green, refactor as a design feedback loop, and the situations where writing tests second is fine.
Listed inOn-CallObservability & Operationson
Runbooks, escalation, handover, and a rotation that does not burn the team down.
Listed inStatic vs Dynamic TypingLanguages & Type Systemson
What each catches, what each costs, and why the argument keeps outliving the evidence.
Listed inComments and DocumentationCode Crafton
Comment the why, not the what — and the handful of cases where the what genuinely needs saying.
Listed inORMs and Query BuildersDatabaseson
What they save you, the N+1 they generate, and the point at which you write the SQL yourself.
Listed inTesting in ProductionTestingon
Canaries, shadow traffic, synthetic checks, and feature flags as the safety net for the untestable.
Listed inMaking Technical DecisionsWorking as an Engineeron
Reversible versus one-way doors, deciding with incomplete information, and committing once you have.
Listed inImmutabilityLanguages & Type Systemson
Why shared mutable state is the root of so many bugs, and the cost of copying instead.
Listed inLinting and FormattingCode Crafton
Automating every argument a tool can settle, so review time goes to the parts that matter.
Listed inThe FallaciesDistributed Systemson
The eight assumptions about networks that are always false and always assumed anyway.
Listed inOAuth 2.0 and OIDCSecurityon
The flows worth using, PKCE, token lifetimes, and what the ID token is actually for.
Listed inMentoring and Being MentoredWorking as an Engineeron
Growing other engineers deliberately, and getting more out of the seniors around you.
Listed inPolyglot CodebasesLanguages & Type Systemson
FFI, serialisation boundaries, and the tax you pay for every extra runtime in the build.
Listed inHexagonal and Clean ArchitectureSoftware Architectureon
Ports, adapters, and pushing I/O to the edges so the core is testable without a database.
Listed inCachingDistributed Systemson
Cache-aside, write-through, TTLs, stampedes, and the invalidation everyone quotes about.
Listed inCryptography BasicsSecurityon
Hashing versus encryption versus signing, choosing a primitive, and never writing your own.
Listed inWhat Seniority Actually MeansWorking as an Engineeron
Scope, judgement, and multiplying other people — none of which is measured in years or languages.
Listed inHash TablesData Structures & Algorithmson
Hashing, collision strategies, load factor, and the worst case that turns O(1) into O(n).