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.
Model the Data Before You Write the Code
Types, invariants, naming, and scope: the decisions that decide everything downstream.
- 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
- 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
- 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.
- 01Errors Are Values: Pick an Error ModelExceptions, result types, or errno-style returns — know the tradeoffs before a production incident picks for you.20mMembers
- 02Fail Fast, Recover DeliberatelyTimeouts on everything, bounded retries with jitter, and the discipline to know when to give up.20mMembers
- 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.
- 01Tests as Executable SpecificationsA good test suite is a spec you can run — write the tests that would catch your worst bug.25mPremium
- 02Debugging Is the Scientific Method, AppliedReproduce, bisect, hypothesize one thing at a time — a method that beats guessing, every single time.20mPremium
- 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