Over the past few weeks, I’ve spent a lot of time writing about engineering fundamentals. I’ve talked about learning algorithms, understanding distributed systems, thinking about compute, security, infrastructure, and why I believe those things still matter even in a world where AI can generate thousands of lines of code in seconds. I still believe every word of that. If anything, I think those skills are becoming even more valuable.
The engineers who understand how software actually works are going to be the ones who get the most out of AI. They know how to communicate intent. They know how to describe architecture. They understand trade-offs. They know when an AI-generated solution is elegant and when it’s simply wrong. AI is making software development faster, but it hasn’t replaced engineering judgment. If anything, it’s made good judgment even more valuable.
Today, though, I want to turn that argument on its head.
Despite everything I just said, I don’t think engineering is what ultimately determines whether a product succeeds.
That sounds strange coming from someone who genuinely enjoys writing software. Engineers naturally assume that better engineering leads to better products. We spend our days thinking about architecture, scalability, clean code, and performance. It’s easy to believe that if we simply build something technically better than the competition, users will naturally show up.
I don’t think that’s how the world works.
Engineering gets you into the game. It allows you to build something reliable, secure, scalable, and enjoyable to use. Those things absolutely matter. But they’re rarely the reason someone discovers your product in the first place, and they’re often not the reason they tell their friends about it.
One of the most common questions I see online is, “How do I make my app successful?” Closely followed by, “How do I grow my product?” or “How do I get users?” What’s interesting is that the conversation almost always starts with technology. People immediately begin discussing UX, frontend frameworks, databases, authentication providers, AI integrations, cloud infrastructure, or animations. Those are all worthwhile discussions, but I think they often happen too early.
As engineers, we gravitate toward technical problems because they’re comfortable. Technical problems have answers. You can benchmark performance. You can measure latency. You can profile memory usage. You can write more tests. You can improve accessibility. You can optimize queries. Those are all things we know how to improve because they’re objective.
The harder question isn’t whether your application responds in 50 milliseconds instead of 80 milliseconds. The harder question is whether anyone actually cares that your application exists.
That’s not an engineering problem.
That’s a product problem.
That’s a branding problem.
That’s a human problem.
Take Twitter—now X—as an example. From a purely engineering perspective, Twitter isn’t a particularly complicated idea. Before AI, thousands of developers could have built something remarkably similar. Today, one developer with modern AI tools could probably build a respectable Twitter clone in a surprisingly short amount of time.
Users create accounts. They publish short posts. Other users follow them. Posts appear in a timeline. People can reply, repost, or like them. None of those individual features were revolutionary.
What made Twitter successful wasn’t the existence of those features. It became the place where conversations happened. It became where breaking news appeared first. It became where journalists, celebrities, companies, politicians, and everyday people all existed together. It became part of the internet’s culture.
The software enabled that.
The brand created it.
I think Reddit tells a similar story.
Reddit didn’t invent online communities. Forums had existed for decades before Reddit became popular. There were phpBB forums, vBulletin communities, gaming forums, programming forums, car forums, anime forums, and sites like Gaia Online that built thriving communities years earlier. The concept of organizing conversations into communities wasn’t new.
What Reddit built wasn’t simply another forum.
It built an identity around those communities.
People didn’t recommend Reddit because of its database schema or its backend architecture. They recommended it because it became the place where people with similar interests gathered. That’s a very different kind of value.
One of the biggest changes AI has introduced is that the cost of building software has dropped dramatically. Projects that once required an entire team can now be started by a single motivated engineer. Features that once took months can often be prototyped in days. The barrier to creating software has never been lower.
That’s an incredible opportunity.
But it also changes where value comes from.
If everyone has access to similar AI models, similar cloud providers, similar frameworks, and similar coding assistants, then software itself becomes less unique. Code is becoming easier to produce. That’s exactly why ideas, execution, design, communication, and branding become even more important.
I also think too many people begin with the wrong question.
Instead of asking, “What problem do I deeply understand?” they ask, “What’s the next billion-dollar startup?” They spend months chasing trends because they think that’s where success lives. They build products they don’t personally use, for customers they don’t really understand, solving problems they’ve never experienced themselves.
Personally, I don’t find that very motivating.
I’ve always enjoyed building things that solve problems I actually have. When I’m the first user, I immediately know what’s frustrating. I know which workflows feel awkward. I know which features I’d actually use every day. I don’t have to guess whether something is useful because I’m living with it.
That changes how you build.
You aren’t adding features because someone on social media said every SaaS application needs them.
You’re improving the product because it genuinely makes your own life easier.
Ironically, I think those products often end up helping other people too.
If you’ve experienced a problem, there’s a good chance thousands of other people have experienced it as well. Maybe your audience isn’t hundreds of millions of users. Maybe it’s ten thousand. Maybe it’s five hundred. That’s perfectly okay.
We’ve become obsessed with unicorns.
We’ve convinced ourselves that every product needs to become the next Facebook, the next Reddit, or the next Twitter. I don’t think that’s healthy. There are thousands of successful businesses quietly solving niche problems for specific communities. Those businesses may never dominate the news cycle, but they’re creating real value for real people.
To me, that’s far more interesting.
As AI continues to improve, I think we’re going to see an even bigger shift.
Writing code will continue to become easier.
Building infrastructure will continue to become easier.
Creating prototypes will continue to become easier.
The difficult part won’t be building software.
The difficult part will be building something that people genuinely care about.
So yes, keep learning algorithms. Keep learning networking. Keep learning databases. Keep learning distributed systems. Keep learning security. Those fundamentals still matter, and I don’t think they’ll stop mattering anytime soon.
But don’t mistake the foundation for the finished house.
The code gets you into the game.
The idea gets someone to try your product.
The experience convinces them to stay.
The brand gives them something to remember.
And solving a real problem gives them a reason to tell someone else about it.
That’s becoming the part of software engineering that fascinates me the most.
The software has never been easier to build.
Building something worth caring about still is.