Gall’s law
I learned about Gall’s Law just this morning, but it feels like a truth I’ve been following throughout my professional career.
A complex system that works invariably evolved from a simple system that worked.
I’ve never really managed to design a big system from scratch. In fact, I don’t think I’ve ever sat through a formal design forum that eventually turned into something useful.
My different development experiences have always followed a similar pattern: start with something simple that works, and gradually evolve it into a bigger, more mature product. Time and time again.
Most of these were solo projects, though on a few occasions I worked with others on larger endeavors.
The big twist in recent years is AI. Suddenly, I can take a much bigger first bite.
That little script that barely works can now be fleshed out in minutes, complete with proper design documents, README files, professional CI/CD pipelines, and tests. What used to take days or weeks can now look remarkably mature almost immediately.
But the truth remains, for me at least, that trying to start with a system that’s too complex doesn’t usually evolve into a working, usable product.
AI has made the starting point much more ambitious and fast. But I don’t think it has changed the underlying law.