My Principles for building software
(Inspiration: My programming beliefs as of July 2024 and My Principles for Building Software)
- “Simplicity is the ultimate sophistication.”
- Automated testing - could not be left out, although I believe it is already a consensus in the industry.
- Prefer pure functions and immutable data - improves testability, predictability, etc.
- Computers are fast - don’t try to optimize to solve a problem you don’t have - “premature optimization is the root of all evil” Donald Knuth
- Monolith first and The Majestic Monolith
- Microservices are about team topologies and scaling systems with different types of bounds
- Do NOT start building your own platform - PaaS will be better built and cheaper than hiring DevOps and building internally.
- When to build a platform internally?
- When the cost of building and maintaining is smaller than paying a PaaS
- Or when you have a specific use case not supported by PaaS (uncommon)
- When to build a platform internally?
- PostgreSQL is probably the only database you need
- Choose Boring Technology
- All code must serve the business.
- Cognitive Load is what matters