Podczas przeglądania internetów po raz kolejny wpadło mi w oko prawo Gall’a, które brzmi następująco (przytaczam w oryginale):
A complex system that works is invariably found to have evolved from a simple system that worked. A complex system designed from scratch never works and cannot be patched up to make it work. You have to start over with a working simple system.
– John Gall (Systemantics: How Systems Really Work and How They Fail)
Za każdym razem jak czytam stwierdzenie to mam uśmiech na twarzy i już wyjaśniam dlaczego….
W mojej karierze IT pracowałem dla dużej korporacji, która wymyśliła zaawansowany system z niezliczoną ilością konfiguracji. Ów korporacja była centralą przygotowującą system dla wielu swoich jednostek. System tworzyliśmy przez wiele miesięcy. Jak przyszło do testów przez właściwych klientów to się zaczęła litania:
- a to nie działa tak jak powinno
- a my nie rozumiemy, jak to skonfigurować
- a to w ogóle nie pasuje do naszych realiów
- a to, a tamto….
Postanowiłem wziąć popcorn i obserować co się dalej wydarzy. Minęły lata, a system dalej jest nie wdrożony.
Od tamtej pory jestem zwolennikiem dostarczania prostych rozwiązań i rozwijania ich w krótkich, iteracyjnych Sprintach. Podobną metodykę stosuję podczas inżynierowania kodu.
Andrew Hunt podsumował to następująco:
Simple rules produce complex behavior.
Complex rules produce stupid behavior.– Andrew Hunt, 37 Signals