Załóżmy, że właśnie zacząłeś pracować w bardzo małym zespole przy {obecnie stosunkowo małym, ale mam nadzieję, że większym później} projekcie. Należy pamiętać, że jest to rzeczywisty projekt przeznaczony do wykorzystania przez innych programistów w prawdziwym świecie, a nie jakiś projekt akademicki, który ma zostać złomowany pod koniec semestru.
Jednak kod nie został jeszcze udostępniony innym, więc żadna decyzja nie została jeszcze podjęta.
Metodologie
Jeden z was lubi zacząć kodować i dopasowywać elementy do siebie, zanim będzie trzeba mieć jasny obraz tego, jak dokładnie wszystkie komponenty będą oddziaływać (projekt oddolny). Inny z was lubi najpierw wykonać cały projekt i dopracować szczegóły wszystkich komponentów i komunikacji przed kodowaniem rozwiązania.
Załóżmy, że pracujesz nad nowym systemem, a nie naśladujesz istniejące, dlatego nie zawsze jest oczywiste, jak powinien wyglądać właściwy projekt końcowy. Tak więc, w twoim zespole, różni członkowie zespołu czasami mają różne wyobrażenia o tym, jakie wymagania są nawet niezbędne dla produktu końcowego, nie mówiąc już o tym, jak zająć się jego zaprojektowaniem.
Gdy programista oddolny pisze kod, programista odgórny odrzuca go z powodu potencjalnych przyszłych problemów przewidzianych w projekcie, mimo że kod może rozwiązać dany problem, uważając, że ważniejsze jest poprawne zaprojektowanie projektu przed próbą kodowania rozwiązania problemu.
Gdy programista odgórny próbuje wypracować pełny projekt i przewidywane problemy przed rozpoczęciem pisania kodu, programista oddolny odrzuca go, ponieważ programista oddolny nie sądzi, że niektóre problemy faktycznie pojawią się w praktyce i sądzi, że projekt może wymagać zmiany w przyszłości, gdy wymagania i ograniczenia staną się jaśniejsze.
Problem
Problemem, który to spowodowało, jest to, że programista oddolny marnuje czas, ponieważ programista odgórny często decyduje, że rozwiązanie, które napisał programista oddolny, powinno zostać złomowane z powodu wady projektowej, co powoduje konieczność ponownego -pisz kod.
Deweloper odgórny marnuje czas, ponieważ zamiast zrównoważyć pracę, teraz odgórny programista często siada, aby wypracować poprawny projekt z programistą oddolnym, szeregując te dwa elementy do tego stopnia, że może być nawet szybszy za 1 osobę do wykonania pracy niż 2.
Obaj programiści chcą nadal współpracować, ale nie wydaje się, aby kombinacja faktycznie pomagała obu z nich w praktyce.
Cele
Wspólnymi celami są oczywiście maksymalizacja efektywności kodowania (tj. Zminimalizowanie straty czasu) i napisanie przydatnego oprogramowania.
Pytanie
Mówiąc wprost, jak rozwiązać ten problem i poradzić sobie z tą sytuacją?
Jedynym skutecznym rozwiązaniem, które mogę wymyślić, nie marnuje czasu, jest pozwolenie każdemu deweloperowi na podążanie własnym stylem projektowania. Ale jest to trudniejsze, niż się wydaje, gdy przeglądasz kod i faktycznie musisz zatwierdzać zmiany innych, i gdy próbujesz zaprojektować spójne ramy dla innych.
Czy jest lepszy sposób?