The Crisis of Solving Problems
Published on
This is a weird post for me to write. I've developed a somewhat bleak outlook on the software industry in the last few years, and I need to talk about it. Forgive me if this rambles a bit.
Less Money, More Problems
Why does it feel like software is getting worse?
I like point out that people are more pessimistic than they ought to be. By almost every measure, it's a fantastic time to be alive. But when people complain about software, it feels different. Like something else has started happening. Is it really getting worse?
It sure feels like it. How are we decades into modern computers and basic problems are still completely unsolved? Moreover, why does it feel like problems that were once solved are becoming problematic again?
Do you remember when you could have one application that was signed into all your instant messenger apps? Keeping the same UI between different platforms like AIM and MSN messenger? That was a long time ago, and it hasn't stopped some people from trying to live that dream, I'm aware. Why can't I share my calendar consistently with anyone in my family? Why can't I find anything on Google's image search anymore? Why does Amazon's website freeze for a solid two seconds while loading in an AI bot when I'm trying to pay them money? The other day I watched something from HBO on my Hulu account via the Disney plus app. What are we doing here?
Have any of these problems gotten better in the last year? I can't go two posts on LinkedIn without seeing some tech CEO brag about how his staff is writing 10x as much code this year and shipping more features than ever. By all means, this should be a boom in software, right?
So.. where is it going?
The other day Uber laid off three thousand workers. My first reaction is obviously: that sucks. But that was quickly overcome by a second reaction:
Uber had that many employees? Why?
I don't want to sound insensitive to the people that lost their jobs. I'm sure they're real workers doing ""real engineering"". But what problems does Uber have left to solve? The app works. What does it really need?
I could talk about how Uber added food delivery and other business features, but I don't want to get lost in a specific example. There's tons out there. What does Netflix need to add to their app? It plays video just fine. Does Windows really need to be re-inventing the start menu every 5 years? Did iOS really need a new design language? Why are we doing this? Why do we keep un-solving the solved?
We like to pretend that tech is on the bleeding edge. The narrative has been "tech is changing so fast" for so long, that you'd be insane to question it. CEOs will go to great lengths to convince you of this. The software industry simply must be in the middle of a big change, right?
I'm here to argue that it's not. The overwhelming majority of software problems, as far as the average consumer is concerned, have already been solved. We know how to make a calendar app. We know what a video player should do and how to build streaming services. These are solved problems. So, what's the problem? Why can't we get any of them right?
I'm going to say the thing that tech companies have avoided saying for years. You may quote me:
Software is worthless.
I mean that in a literal sense. People simply do not value software. Software is the free thing that makes the phone you bought work. You don't pay for software; that's insane. People have never wanted to pay for software. This was true in the 80s and it's true today. If you charge money for software, people will steal it or simply not use it.
There's a couple of exceptions here. The biggest one is business software. While I do think this is the strongest pillar of the tech industry, it's somewhat self perpetuating, and businesses mostly see this as a trade off: they can either buy a solution or make a solution, either one costs them money, they'll simply choose the cheapest option. So it isn't really part of the problem I'm describing. The other is games. I think the prevalence of cartridges and disks made games feel less like software to people, and I'm curious how the recent move towards diskless consoles will deteriorate that perception. But I digress.
This intersects rather awkwardly with another problem in the software industry: Software is extremely expensive. Software exists at the intersection of human beings (who are made of meat) and computers (that are machines). No matter how you approach this problem, there's just a lot of complexity to account for. Accounting for human interactions is going to be difficult whether you're making 3D modeling software or a website. That complexity is expensive.
Consumers don't pay for software. This presents a problem for the industry. How is your company going to make money if the thing you build both notoriously expensive and yet doesn't make a lot of money? What do you do when your back is against the wall, and a bunch of investors want to see returns -- any returns.
The solution for many tech companies over the last two decades has been: growth. Think of all the tech companies you've heard of that are wildly unprofitable. AI companies are the current spotlight for it, but Uber was also unprofitable for years. Twitter barely ever made money. And the answer for both was the same: Look at how good our user growth is. Sure, Uber's ride sharing business model is questionable, but think of the profit that we could make with food deliveries!
This explains the relentless focus on daily active users in tech companies. You need people to keep using your app for advertisers, sure, but what tech companies really need these users for is justifying the amount of spending they're doing. Software not profitable? Just build more software Think of what could happen when we monetize the product! But that's the problem. You won't. We see over and over again that users will not pay. This software has always been cheap or free, why would I suddenly pay more for it?
Too Many Product Managers in the Kitchen
The problem gets worse. So far I've only discussed things that are visible externally, but this effect causes stress inside the company as well.
If your software isn't making enough product, you need to grow your way out of it. And what do you do to grow? Hire people. New product managers, new departments and new engineers to build it. What is 'it'? That's the neat part: it doesn't actually matter. It doesn't even need to be profitable. It just needs to justify the first thing you built by making some impact on users that we can pitch to shareholders as hope that they might get their investments back.
So maybe you build that thing, and maybe it's even successful. The insidious thing that happens is: what now? Even if what you built is profitable enough to float the business, it won't be enough. Shareholders are starving, and you promised them growth.
At the same time, you now have more workers then you need. If you built it, you don't really need the builders anymore. Sure, some people need to do maintenance, and there's always improvements to be made, but your workforce is largely idle.
Rightly so, both engineers and product managers fear their job at this point. But there's an easy solution, and leadership is ready to eat it up: simply build more. Product teams, desperate to prove their job is valuable, instinctively will create a problem. I don't believe this is intentional, but there is simply too strong of an incentive to do so for everyone involved. Conscious or not, engineering is quick to support it by building plans. Engineering at this point often starts un-solving their own solved problems demanding large refactors for systems that are often working just fine.
Suddenly, you've got a lot of work on your hands again. So much, in fact, that you might even need to hire!
Wait, wasn't Slack a chat app? Why is there a 'canvas' feature for notes? Can't you just fix the chat scrolling bug that's been around for years?
But that's not where the incentive is. Nobody ever got promoted for making an existing product better. They get promoted for building a product.
Any product.
People respond to incentives. Be careful about the ones you create.
Hold my Artificial Beer
I haven't even started talking about AI.
Let's throw a new wrench into this industry. Let's introduce a tool that makes it faster to build. Do you think that this will result in it being easier to make good decisions?
Let me answer that with another question: Have the incentives changed?
One effect is definitely felt: An increased pressure to justify your job. And how do you do that? Build. Build something, anything. The next big feature. The development tool that's going to ""make everything easier"". It doesn't matter what you build, but you better be able to show you built something.
The rhetoric that AI companies use intentionally exacerbates this problem. It's the next revolution. It's the end of the world. If you don't adopt it you'll be left behind. Become an AI-native business today! Grow! Grow! Grow! Don't wait, call now! What are you waiting for?!
AI sure is building a lot of stuff, but is any of the stuff getting better?
You know the answer to that. Of course it isn't.
Why?
You know this.
Because it's still not profitable to build the known solution. Even less so with all these AI tokens racking up a bill.
Maybe just say 'Nevermind'
My previous employer, Block, laid off half the company this year. This was after reducing the staff previously to only ten thousand.
I was a team that worked on a niche bitcoin product. I was not impacted by this layoff.
Ten thousand employees.
Officially, the company stated that this was to get ahead of improvements brought by AI. And payments is a complex space, for sure. But I'm going to leave this for the reader:
Did that company ever really need that many people?
Everyone is waiting for the AI bubble to burst, but I'm starting to think the entire software industry is a house of cards that's about to collapse.
And honestly, maybe it should.