Software development starts as a fun thing. You tell the computer what to do and it does. You feel that you have infinite possibilities. Soon, you don't care anymore about just solving the pain point, you want to solve this pain point in the most perfect way, like Icarus, who wanted to fly close to the sun.
Then, the perfect solution starts to fail because it is too complex, and you get complaints from the user about bugs. You have to spend more time fixing it, and the project starts to slow down. Next, you realize that it became too complex and you try to revert it, but you must guarantee retrocompatibility and internal interdependency, which becomes very challenging and even slower.
of software development
You build your own home to stop paying rent, but you forgot to calculate that you have to pay utilities, tax, maintenance. The same thing happens in technology. The cost of building a feature is only a fraction of the total cost of ownership. In the real world, this feature will break, it will get slow, it will have security flaws, and it will cost too much infrastructure.
So, you think that when these things happen you can easily fix them, because code is text, and text is easily modifiable. Well, as it happens when you own a house, renovation is much more expensive than building, because there are people living there, and if you change one wall, it may impact another room. The same goes for software, you have users and interdependency, so renovations are quite expensive.
more than you can chew
Big Tech
Companies like Google, Meta, Microsoft, Apple, Adobe, Amazon, Dropbox, AirBnb, Uber, Netflix, Spotify, Shopify, Stripe, Twilio can work on innovation with state-of-art products. Not because it requires an army to build it, but it requires an army to maintain it.
They normally target the B2C market because they can provide premium user experience and they can handle the complexity it creates.
Examples: Uber App, AirBnb App, Netflix App, Banking App, Microsoft Office, Photoshop, Windows, Mac OS
Medium Business
It may sound feasible for 100 engineers to build an app just like Uber, because a layman can't see the hidden cost. But, if this would be possible, why would Uber have so many engineers? To be successful, a medium business needs to simplify the idea of their product.
They normally target the B2B market because whoever makes the hire decision (finance department) is not the same person who uses the system (collaborators).
Examples: School time-table automatic planning, Route automatic planning, Finance optimization, Civil engineering simulator
Small Business
5 engineers seem a lot until you start to put in perspective with Big Techs. If a Big Tech needs thousands of engineers to maintain their applications, a small company needs to constrain its system big time to be able to maintain it.
They normally target internal tools for its own clients and collaborators for very niche requirements, unique to that company, so there are no competitors. They may integrate with Medium Business and Big Tech API or tools to augment their features without the burden of maintaining it.
Examples: Enterprise Resource Planning, Customer Relationship Management, Business Intelligence
Bill Gates states in his autobiography that people who have ideas normally are not so good at transforming these ideas into a concrete thing. Creative people allow themselves to think outside the box, and it is precisely this that lets them solve problems that most people can't.
But, the real world is messy. Analytical people, on the other hand, limit themselves to avoid complexity, because complexity often fails in the real world. It is precisely the interaction between creative people and analytical people that create polished versions of the solution that are simpler and affordable.