Skip to content

Course

Programming: From Working Code to Good Code

Working code compiles; good code survives contact. Data modeling, error handling, testing, debugging, and review — the craft under every language.

9 lessons

Course Q&A

Model the Data Before You Write the Code

Types, invariants, naming, and scope: the decisions that decide everything downstream.

  1. 01Make Illegal States UnrepresentableUse the type system as your first security boundary: if a bad state can't be expressed, it can't ship.20mOpen
  2. 02Naming and Scope: The Vocabulary of a SystemNames carry your mental model to the next reader — usually future you, at 2 a.m., during an incident.15mOpen
  3. 03Functions, Side Effects, and SeamsPure cores and impure edges: structure code so the testable part is the biggest part.20mMembers

Failure Is a Feature: Error Handling That Holds Up

Most production bugs are mishandled errors. Design the failure path before the happy path.

  1. 01Errors Are Values: Pick an Error ModelExceptions, result types, or errno-style returns — know the tradeoffs before a production incident picks for you.20mMembers
  2. 02Fail Fast, Recover DeliberatelyTimeouts on everything, bounded retries with jitter, and the discipline to know when to give up.20mMembers
  3. 03Error Messages Are an InterfaceUser-safe text up front, operator context in the logs, and nothing useful for an attacker.15mMembers

Prove It, Find It, Review It

Testing method, debugging method, and code review — the feedback loops of the craft.

  1. 01Tests as Executable SpecificationsA good test suite is a spec you can run — write the tests that would catch your worst bug.25mPremium
  2. 02Debugging Is the Scientific Method, AppliedReproduce, bisect, hypothesize one thing at a time — a method that beats guessing, every single time.20mPremium
  3. 03Code Review: Reading Like an AuditorReview is a security control and a teaching tool — learn what to look for and how to say it.15mPremium