Only software engineering can save us from vibe coding.

I saw a “stop learning to code, vibe coding is here now” post and I had to write a response: While it’s true that AI has commoditized the act of stringing characters together into code, it hasn’t commoditized software engineering. In fact, it’s made software engineering more important and more accessible.

The difference between coding and software engineering is that software engineers know that every line of code is a liability. Consider this quote (purportedly) by Bill Gates:

“Measuring programming progress by lines of code is like measuring aircraft building progress by weight.”

Code is a liability for the same reason that excess weight is a liability for aircraft. Code needs to be maintained, and in order to be maintained, it needs to be understood. It is also a liability because, like any sharp tool, it can cause damage when executing in the wrong context. Code inherently runs against its own purposes because code is intended to solve a problem, but it creates its own problems by dint of existing.

So I think of the maintainable use, modification, and execution of code as software engineering. What does that mean?

  • Fast, meaningful tests
  • Observability
  • Documentation
  • Reproducibility

Can AI do these things? Well, it can certainly help. Will it if you don’t steer it towards them? No, it won’t. But, crucially, if you do have these elements, it is a flywheel that safely accelerates any modification to your system, whether it’s coming from a user or from an LLM.

So please, if you only want to learn vibe coding, learn software engineering next. I promise the vibes will be immaculate when your test suite is green.

Leave a Reply

Your email address will not be published. Required fields are marked *