YAGNI oznacza, że wszystko jest zrobione, gdy trzeba to zrobić, a nie wcześniej. Nie oznacza to, że nigdy się nie skończą, chyba że nigdy nie będą potrzebne. Oznacza to, że robisz tylko to, co zapewnia klientowi natychmiastową wartość biznesową . Znaczenie bezpośredniej wartości biznesowej jest subiektywne dla każdego klienta i każdego projektu.
W obu przypadkach nic nie stracisz dzięki YAGNI.
W innym przypadku tracisz czas na pisanie kodu, który nigdy nie jest używany, i pisanie testów dla kodu, który nigdy nie jest używany, i pisanie dokumentacji dla kodu, który nigdy nie jest używany, i utrzymanie kodu, który nigdy nie jest używany, ludzie zastanawiają się, co robi ten kod , a jeśli kiedykolwiek się przyda, ad nauseum.
Przykład
Jeśli pracuję nad prototypem / próbą koncepcji lub wersją 1.0 aplikacji, nie potrzebuję projektu, aby skalować się do poziomu Facebooka. Piekło nie muszę projekt do skali do poziomu Facebooku, aż zacznę widząc, że mają ten rodzaj ruchu.
Czy uważasz, że Zuckerberg zaprojektował pierwszą wersję Facebooka, aby skalować ją do 500 milionów użytkowników? Nie, zaprojektował i zbudował to tak, aby po prostu tego potrzebowało i nie więcej. Gdyby od samego początku próbował sfotografować projekt dla 500 milionów użytkowników, Facebook prawdopodobnie nigdy nie zostałby wydany.
Praktycznym sposobem robienia rzeczy jest to, jak to zrobił. Zaczął od PHP i MySQL, a przeprojektowanie i przepisanie w razie potrzeby w oparciu o wartość biznesową , skalowanie do milionów użytkowników miało ogromną wartość biznesową, ale nie w dniu 0. W dniu 0 samo uruchomienie czegoś było ogromną wartością biznesową.
On planowany na przeprojektowanie i przepisanie. Jest to inny sposób myślenia niż planowanie zlewu kuchennego i nigdy tak naprawdę nie rozwija ani nie dostarcza niczego pożytecznego, co jest kompletne.
Planowanie końca kodu źródłowego i przepisywanie jest zwinne i przyszłościowe. Próba wypracowania jakiegoś nieokreślonego celu „elastyczności” kończy się niepowodzeniem za każdym razem. Projektujesz bez potrzeby i marnowania czasu, możesz rozwijać to, co ma wartość biznesową, zamiast żenować marzenia o funkcjach, które nigdy nie będą używane.