Source item
Open original source ↗Was thinking about early warning signs things are going sideways in startups today. “Code smells” aren’t bugs per se, they’re early warnings and startups have them too. Some that make me nervous
1/
The “god object” in code, one class that knows everything, shows up as the founder who must approve everything. Early on this protects taste. Later it throttles throughput. The trick is to export your “taste” into principles, examples, and defaults so others can act like you 2/
Premature optimization in code is provisioning six regions for an app with five users. It’s yeti brand level of overengineering. The company version is heavy process, big time execs, worrying about who you offend, or most “platform” strategies before PM fit. No one cares. 3/
Speculative generality: abstractions built for a future that never arrives. In companies: “we’re the X layer or consolidator” with no killer use case. cure in both cases is the same, find one concrete job-to-be-done where user would be upset if you died. delight them first. 4/
^This one is kinda complicated because AI is weird in that products can do an array of things, some well and badly (see chatGPT!) and get adoption because…much magic. But still need to complete *some* task at minimum viable quality 5/
Fragility in code means a small change breaks distant parts. In startups it’s concentration risk—one customer, one channel, or one platform you don’t control. If one customer is 50% of revenue, lots of bad downstream effects. Get out of that hole fast 6/
Duplication: similar logic copy-pasted across files. Company analogue is shadow spreadsheets, parallel tooling, different definitions of “active user.” Or disagreement on comp structure for a team. You can’t scale if truth is plural. This is a company without discipline 7/
Needless complexity: beautiful architectures that slow simple work. Organizationally: 12 pricing tiers, bespoke contracts for everyone, three analytics stacks. Complexity is a tax. Pay it only when it unlocks something specific… 8/
Dead code: features no one calls but everyone is afraid to delete. In startups: zombie SKUs, free pilots that never end, reports no one reads. Develop a deletion habit. The fastest organizations aren’t those that ship the most, but the ones that keep the surface area small 9/
Shotgun surgery: one change requires edits everywhere. In companies: a small pricing experiment needs Legal, RevOps, Billing, CS, and Engineering choreography. Refactor the interfaces: standard terms, feature flags, clear ownership. so tiny changes stay tiny. 10/
Tight coupling: your product depends on a gatekeeper API or distribution policy. It’s fine until it isn’t. Multi-home early and build a direct channel, or next-best-option even if it’s slower at first or more expensive. Options are an asset.
11/
Simple tests to run this week:
*Ask for a 2-day pricing experiment. how many teams does it touch?
*Delete one report / SKU, see who notices.
*check whether teams agree on SQL for a core metric
*Time “idea → live” for a small feature. weeks? you’re probs smelling something. 12/
Good engineers refactor continuously, good founders do too. They scale taste, compress complexity, and reduce single-points-of-failure. Smells aren’t fatal, but they’re the earliest, cheapest place to intervene. Everyone gets slow someday. ESP in age of ai, delay slowdown!! 13/13
13 segments
Segment 1 · characters 0–197 · Original segment ↗
Segment 2 · characters 199–477 · Original segment ↗
Segment 3 · characters 479–754 · Original segment ↗
Segment 4 · characters 756–1033 · Original segment ↗
Segment 5 · characters 1035–1269 · Original segment ↗
Segment 6 · characters 1271–1525 · Original segment ↗
Segment 7 · characters 1527–1800 · Original segment ↗
Segment 8 · characters 1802–2033 · Original segment ↗
Segment 9 · characters 2035–2311 · Original segment ↗
Segment 10 · characters 2313–2576 · Original segment ↗
Segment 11 · characters 2578–2823 · Original segment ↗
Segment 12 · characters 2825–3102 · Original segment ↗
Segment 13 · characters 3104–3384 · Original segment ↗