The biggest shift in my perspective over the last 3 years: velocity is everything. It’s extremely tempting for engineers to build things that scale, things that are well architected with well thought out layers of abstractions. Over the course of my career I’ve steadily moved away from this temptation - to the point that now I can say with certainty that building things to scale is absolutely the wrong north star for any engineer, at any company, of any size.
The ultimate goal is to build a product that users love. Understanding what users love is a journey of discovery. No one gets it right the first time. But if you listen closely and iterate fast, the patterns tend to emerge pretty quickly. This works at EVERY scale. From 0-1 startups to large public companies with thousands of employees.
At Propelo I built a really complex user identity merging solution that took 5 weeks to build, and had 2 companies who used it and hated how it worked. While building Claude Code, I built the todo list feature in 6 hours, dogfooded it internally for a week, then launched externally while continuously making improvements to the UX. The difference in user response was night and day - and it taught me that time spent building isn’t correlated with user satisfaction.
So should no one focus on writing elegant code, with great developer experience and scalable architecture? Should we just ship everything and let the technical debt accumulate? Should the world be full of code that’s impossible to debug and makes your eyes bleed every time you look at it? Of course not. But these things should only become a focus when they become an impediment to moving quickly or user happiness. Working on them before you get to that stage is pointless.
Speed of learning beats perfection every time. Build fast, learn fast, iterate fast. Everything else is just ego.