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)
  • PostgreSQL is probably the only database you need
  • Choose Boring Technology
  • All code must serve the business.
  • Cognitive Load is what matters