software-design/how-to-read-a-python-error-message-without-panicking.md
How to read a Python error message without panicking
When Python crashes it prints a traceback: a report of what went wrong and where. It looks scary, but it has a fixed shape, and the most useful part is at the bottom.
Learn to read the error type, the message, the file and line number, and the chain of function calls that led there. Then meet the five errors beginners hit most (SyntaxError, NameError, TypeError, IndexError, KeyError), test yourself in a matching game, and pick up a calm debugging routine that works every time.
$ ls software-design/
see all →
software-design/the-observer-pattern-how-a-shop-tells-many-functions-about-one-order-w.md
The observer pattern: how a shop tells many functions about one order without knowing them
A shop that must email a receipt, update stock and add loyalty points ends up with one function that knows about everything. Every new…
software-design/refactoring-how-to-tidy-working-code-without-breaking-it.md
Refactoring: how to tidy working code without breaking it
Refactoring means changing how code is built on the inside without changing what it does. It sounds risky, but there is a simple routine…
software-design/unit-tests-why-four-passing-tests-don-t-prove-a-function-works.md
Unit tests: why four passing tests don't prove a function works
Your function gave the right answer four times. Is it correct? Not necessarily: passing tests only show the bug isn't where you looked…
software-design/idempotency-why-clicking-pay-twice-should-charge-you-once.md
Idempotency: why clicking Pay twice should charge you once
You tap Pay, the screen shows an error, you tap again, and your card is charged twice. Networks drop messages, so a phone often cannot tell…
software-design/state-machines-why-an-order-can-t-be-delivered-before-it-s-paid.md
State machines: why an order can't be delivered before it's paid
An online order can be in the cart, paid, shipped, delivered or cancelled, but what stops the code from delivering an order nobody paid…
software-design/dependency-injection-why-a-test-passes-at-9am-and-fails-at-3pm.md
Dependency injection: why a test passes at 9am and fails at 3pm
A test that passes in the morning and fails in the afternoon, with no change to the code, is a puzzle many beginners meet. The cause is…