index

Improvisation is scalability's worst enemy

· 1min

Think of your first interaction with that programming language you like. You probably went through stages like these:

  1. Excitement: You’re in love, the basics feel intuitive, and you’re eager to learn more.
  2. Realization: You realize you can’t build anything meaningful with just the basics, so you start exploring other people’s code or experimenting on your own.
  3. Frustration: Even after your flow moment and creating something that works, you start noticing the unsustainable mess you made.
  4. Personalization: Cleaning up your mess helps you spot patterns. You internalize them so they won’t happen again. These patterns begin forming your sub-framework.
  5. Control: This stage could also be called optimization recognition; you know multiple ways to achieve the same results, and you can evaluate their pros and cons. It’s the longest stage and requires the most thought.

After going through them, you realize your code sucks. That was your first trip around the globe. The next one goes faster, skipping some stops, and the more time you spend in the thought stages, the smoother your path becomes in a real-world project.

Now, imagine implementing something new, a solution you’ve never tackled before. Maybe you don’t have time or resources to go through all the stages—but you still avoid improvising. Move fast, repeat the early stages as a playground (not production), and invest most of your brainpower in the later ones.