2024-11
Arguments for building it yourself instead of renting a cloud service or using open source software:
- By building it yourself, you learn a lot more about the domain and design tradeoffs of the implementation. When using someone else’s product, your lessons will be more superficial and specific to the concrete product. For example, you learn more about which buttons to press in Keycloak (specific) instead of how the OpenID Connect protocol works (general). A large part of a software company‘s value resides in the heads of its employees. If you increase the amount of rare but valuable knowledge in there, you directly raise the value of the company (even if it doesn’t increase revenue!).
- Assuming that LLM‘s increase programmer productivity, it becomes cheaper to build software from scratch or replace it entirely compared to using existing software.
- Cloud and OS solutions have to be very generic in order to be usable by a large audience. Bespoke programs can make bolder assumptions and more extreme tradeoffs. This can make it faster, easier to deploy and often more usable.
- Many open source or cloud solutions are simply not that good. Consider that your programmers might actually be better than third-party developers, even if they have more stars on Github or fancier titles on their company badges.
- Third-party software requires a certain degree of infrastructure and management to handle. Supply chain attacks are real and important.
- A culture of building things yourself allows for deep vertical integration. For example, a lot of things that people find attractive about Apple products is only possible because they control the entire stack.
- Most software engineers became software engineers because they like programming. Making them glue together building blocks built from other people all day will make them miserable. This is even more true when developers are not allowed to choose the building blocks themselves.
- Some of the things you build may be so good that you can open source them for reputation or sell them as a product for revenue.
- A lot of problems are easier to solve in a straightforward way by writing a couple of lines of code instead of customizing something that solves a similar-but-not-quite-the-same problem.
- Consider that third-party developers don’t have to adhere to the same processes and standards you use internally. If you find it easier as an organization to use third-party software, one reason may be that it allows you to sidestep inefficient policies and processes. For example, I find requiring 100% test coverage and requiring manager approval for changes are two measures that generally decrease the quality of delivered software.
- You can still stick to industry best practices, standards, and protocols when building it yourself. Bespoke software does not have to be exotic.
- Your competition is likely to use a lot of OS code and cloud services. Building things yourself can enable you to differentiate yourself in the market.