Guard clauses aren't the point of the function either, they're the reason the body can assume anything. Guard clauses make the assumptions visible at the top, where a reviewer can argue with them. prickles.org/tenet/guard-...
nark3d
Cyclomatic complexity at 3, function length at 15. Tighter than anything I'd have picked on instinct. The cap does the arguing, so nobody has to. prickles.org/tenet/cyclom...
Parnas said the interface should reveal as little as possible. The getter for every private field reveals all of it. Private keywords don't make encapsulation, not calling the getter does. prickles.org/tenet/encaps...
You can tell yourself the comment is for the next person. I've lost this argument to a comment about a flag that was really a second responsibility trying to get out. prickles.org/tenet/self-d...
Simplicity gets agreed and then broken by a flag added for one caller. Hard caps beat intentions, because the linter doesn't get tired at 5pm. Tenets don't stop the deadline, but a cap the build enforces does. prickles.org/tenet/simpli...
Every fact one home, but merge on meaning, not on shape. Two identical lines in different bounded contexts are two facts that happen to look alike, and fusing them makes one change touch two products. The word in the original is knowledge. prickles.org/tenet/dont-r...
Put the brief in the repo as CLAUDE.md, not in the chat. Paste it fresh each session and by the tenth everyone has a slightly different version. Under 200 lines, because past that the model skims. prickles.org/tenet/persis...
Five positional arguments and you're counting commas to find the timeout. Naming the clump fixes it, and max-params: 3 in eslint means the third caller has to. prickles.org/tenet/parame...
Everyone agrees naming matters and almost nobody spends time on it. My review check is to say what a function does from its name and parameters alone. If I can't, the name's bad or it's doing two jobs, and it's usually the second. Best names are the product owner's. prickles.org/tenet/intent...
Nobody argues with SRP in principle. The argument is about whether a given function is one thing or six. The name usually gives it away, if you need an "and" to describe it it's two jobs, and past that I ask who pays when it changes. prickles.org/tenet/single...
New post. Most things that get called a spec fall apart the moment a coding agent touches them. What's worked is writing the acceptance criteria as runnable checks, not paragraphs the agent has to interpret. prickles.hashnode.dev/a-spec-the-a...
Built a thing: Prickles. 50 software-craft tenets, each one argued and sourced - book, page, the strongest counter-argument I could find against it. The principles don't change; the pair programmer does. Half of mine is an agent now. prickles.org
You are up to date.