2026-04-20

opinions · dotnet

Ten rules I break on purpose

These are not advice.

Frank.* is still the experiment drawer. The platform is Novolis.

  1. "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.
  1. "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.
  1. "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.
  1. "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.
  1. "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.
  1. "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.
  1. "Write tests first." Beck's loop is red, green, refactor. A spike is allowed to be test-after. Fowler's note.
  1. "Keep posts short." Fine for a slogan. Useless once the post has a table and a citation.
  1. "Never ship a rant." A clean writeup that hides what happened is how the same bug comes back.
  1. "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.

All posts