Most problems that can be solved with technology can be solved by combining things that already exist
Here's a theory: Most problems that can be solved with technology can be solved by combining things that already exist in a simple way. To make that thing better and higher quality, it's about how many layers of abstraction you can understand deeply, and thus progress downwards, optimizing for your specific case at every level.
- If you want to make a webapp for a business, you can make it on Squarespace in an hour. Or you can use firebase and a simple front end framework and stripe. Or you can build your own payment processor. But the point is, at every level, you can use premade stuff and get a slightly more expensive, less tailored experience.
- If you want to make a house, you can buy a box and place it there, then attach sewage and electricity to it. Or you can learn how load baring walls work and put those together. Same thing.
Note: This is not true of novel engineering challenges. You may have to come up with some brand new stuff.
But!
Most problems in the world that can be solved with technology, basically just need web-apps (the context-dependent equivalent of a web app, that is). Things are not usually bottlenecked by sophisticated problems.
- Most big organizations for software just need a simple distributed system that everyone uses, it's not reinventing the wheel.
The deeper you get into understanding layers of abstraction, the more diminishing the returns.
This is why you can have big impacts and do clever things without having to get everything all the way down. You can make stuff that solves a problem by stapling together existing things, then improve that solution over time by going deeper into the layers of abstraction.
From a discussion with Ali in Yunnan in November.