Hacker News new | ask | show | jobs
by RyanMcGreal 5288 days ago
Every time I try to do this, I end up having to rip it all up anyway when the requirements change. As John Gall famously said:

"A complex system that works is invariably found to have evolved from a simple system that worked. The inverse proposition also appears to be true: A complex system designed from scratch never works and cannot be made to work."

Over the years, I've gotten much better at writing components in such a way that I don't end up painting myself into a corner and can easily add/modify functionality later.

1 comments

The important word in the the Gall quote is "complex". I still like to believe that a perfect non-complex system designed from scratch can spring forth from its creator's imagination. The "complex" threshold will vary by programmer.

The component strategy is like meeting the complexity dichotomy somewhere in the middle... limiting the scope of one component to a complexity that can be reasonably understood, while still taking part in a more complex whole.