Simon Park asks what separates software engineering from software that merely works. His answer is not credentials, difficulty, or a particular development methodology: it is a repeatable process for making and improving decisions under constraints.

That process turns intuition into an explicit learning loop:

  • Measure the actual problem instead of accepting a vague symptom
  • Compare multiple feasible solutions and their tradeoffs
  • Estimate what the chosen solution should change
  • Measure the result against that estimate
  • Investigate the gap, revise the model, and iterate

A detailed caching example makes the distinction concrete. An initial Redis design improves page performance but misses its predicted cache-hit rate because personalized data creates more keys than expected. Splitting static product data from personalized data produces a better second design—not because the first estimate was useless, but because the miss revealed what the model had omitted.

The organizational point is the important one. Expert intuition can produce good software, but it is hard to transfer, audit, or reproduce. Engineering raises the quality floor by giving a team a way to produce reliable results without requiring individual genius every time.