Blog

Somebody Has to Decide What Matches

Import and export are one-time events. Keeping two systems agreeing is a permanent one — and the hard part is identity, not transfer.

The Import Is the First Impression

The first thing a new customer does with your product is hand it a file of their real data. Whatever happens next is what they learn about the software.

Every Notification Spends Attention

Notifications get added one feature at a time, each individually justified. Nobody owns the total, and the total is what determines whether any of them get read.

Let Them Turn It Off

Notification preferences look like a courtesy. They're actually the mechanism that keeps the channel usable — and the coarser they are, the more people mute everything.

The Message That Arrived Twice

Notifications are deliveries to systems you don't control, on paths that can retry. The duplicate that reaches a customer is more visible than almost any other bug.

Automate the Fix or Remove the Need

A recurring manual repair is a bug report written in someone's calendar. Building a faster way to perform it is progress; not needing it is the actual goal.

The Admin Tool Is Production

Internal tools get built quickly, reviewed lightly, and given more power than anything customers can touch. They deserve the standards the customer-facing paths get.

The Tool Support Built in a Spreadsheet

When the internal tooling doesn't cover a case, nobody files a ticket. They invent a workaround, and the workaround becomes permanent infrastructure nobody planned.

A Rate Limit Is a Message

Limits get added to protect the system, then serve as the product's only communication about how much use is acceptable. Most say it badly.

Fairness Is Something You Build

Shared capacity is first-come, first-served by default, which means the heaviest user sets everyone else's experience. Nothing about that is automatic to fix.