nikhil.io

On Desiging to Optimize for Ego (and Shareholder Value™)

Saving some snippets here but Dave Snyder’s article is worth reading, bookmarking, and meditating over (cached).

Trees don’t pay off tomorrow. They pay off in a decade. They compound quietly, making everything around them better, shade, value, beauty, longevity. Most products? We treat them like shrubs. Plant twenty features, hope one sticks. Feature bloat dressed up as “innovation.” It’s impatient, and it’s stupid. The smarter play is restraint. Plant the tree. Solve the one core problem. Put the craft in. Then let time and real user behavior do the work.

[. . .] The hardest part isn’t identifying what to build, it’s identifying what not to build.

[. . .] This is design as compound interest, not just the financial kind, but the human kind. Good foundational choices create returns that multiply over time. They generate the kind of interest that keeps users coming back, digging deeper, telling friends. Most teams think compound interest means building features that stack on top of each other. But I’ve learned it actually means investing in the foundational details that make users want to return.

[. . .] Every guess you make upfront is a liability. Every deliberate act of restraint is an investment. The things that matter take time, which is exactly why nobody wants to invest in them. But twenty-five years of watching products succeed and fail has taught me this: don’t be clever, don’t be greedy. Pick the thing that matters, do it well, and let evolution beat prediction.

The compound interest of design: what not to build”, Design Observer

Sorry you’re too stupid for Monads bro

This reminds me of one of the worst design decisions in React: useEffect1. I’ve worked with it for a long while and find that I’m always doing it wrong and worse thinking about it wrong. It’s so simple! You’re just syncing side-effects bro!

Cloudflare has confessed to a coding error using a React useEffect hook, notorious for being problematic if not handled carefully, that caused an outage for the platform’s dashboard and many of its APIs.

The outage was on September 12, lasted for over an hour, and was triggered by a bug in the dashboard, which caused “repeated, unnecessary calls to the Tenant Service API,” according to VP of engineering Tom Lianza. This API is part of the API request authorization logic and therefore affected other APIs.

Cloudflare DDoSed itself with React useEffect hook blunder”, The Register

It would’ve taken the kind of restraint Dave talks about for an Engineering Leader/Manager to say “I’m glad you’re high on your Functional Programming classes and ambient hype but we’re not doing it, at least not this way. It may be clever, it may simple, but it’s not easy. People who use what we make have a job to do.”

Anyway. All hail jQuery.

  1. Here’s a long article on this epochal paradigm by Dan Abramov. I’m positive he’d be on a yacht if he’d placed ads on it.↩︎