2026-04-20
Ten rules I break on purpose
These are not advice.
Frank.* is still the experiment drawer. The platform is Novolis.
- "Never prefix your packages with your first name." NuGet's notes are about discoverability, and about prefix reservation for publishers people already trust. They do not ban a personal prefix. The norm is just corporate.
- "Always write the ADR before the code." An architecture decision record is where the why goes. It is not a permit you need before a spike.
- "Avoid global state." Accidental globals are a mess. Every GUI toolkit still has
Application.Current. If I take a global, I want it to be on purpose.
- "One repo per concern." Fowler's Monolith First is the argument that splitting early is usually premature. One repo or many is a tooling choice.
- "Never optimize early." Knuth, 1974, Structured Programming with go to Statements. Small efficiencies can hurt readability unless you know the critical 3%. The slogan drops that half.
- "Always use the framework's blessed path." The golden path is sized for the median app. Games, compilers, and protocol stacks are why the extension points exist.
- "Write tests first." Beck's loop is red, green, refactor. A spike is allowed to be test-after. Fowler's note.
- "Keep posts short." Fine for a slogan. Useless once the post has a table and a citation.
- "Never ship a rant." A clean writeup that hides what happened is how the same bug comes back.
- "Be consistent." PEP 8 quotes Emerson on foolish consistency, then tells you to break the style when the break is easier to read. Consistency is for the reader.
A rule is somebody else's scar. I will take the scar. I will not take the slogan.