Galls Law in Software Development and Testing

Writing by Rich on Saturday, 18 of April, 2009 at 10:18 am

Gall’s Law: “A simple system may or may not work. 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. You have to start over, beginning with a working simple system.” - John Gall, Systemantics

This is a true principle that holds true to sports, education, family life, computer systems, and even software development and testing. If we don’t have a working simple system in any of these areas—if we haven’t mastered the basics, the core—then the difficult, challenging, and more complex challenges will be beyond our capability. We can’t go from zero to complex without paying the price beforehand to master the simple basics. It is not saying that we seek complexity. I believe that in any situation we should seek the minimum level of complexity that meets our needs.

It especially applies to software development and testing. When developing a web application, it is common practice to start with a simple working and tested core of functionality and grow in complexity from there. As we go, we test functionality, performance, and security along the way. We add a bit here and a bit there as we go, until we are satisfied with the final product. We don’t start with the complex and save our testing to the end. We release early and often, testing as we go.

The implications of this principle on software development and testing are profound. Start by creating a simple system or process that works for you and then add to it incrementally until it is just complex enough to meet all of your goals.

Category: Software Testing

No Comments

No comments yet.

Leave a comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>