Po pierwsze: witamy w tej małej rzeczy, którą lubię nazywać „prawdziwym życiem”.
Programiści zawsze powtarzają, że zanim zaczniemy projekt, wszystkie wymagania powinny być w pełni określone, począwszy od szczegółowych opisów algorytmów do wyświetlania makiet, a po rozpoczęciu prac rozwojowych nie należy zezwalać na żadne zmiany. Kiedy produkt zostanie dostarczony, oczywiście naprawimy wszelkie odstępstwa od pisemnych wymagań, ale żadne zmiany, które pociągają za sobą zmianę wymagań, są dozwolone.
Tak, to znacznie ułatwiłoby życie programistom . A to absurdalne żądanie.
Wyobraź sobie, że chcesz kupić samochód. Więc idziesz do sprzedawcy samochodów i okazuje się, że to tylko biuro z jednym facetem za biurkiem. Wręcza ci czystą kartkę papieru i mówi: „Zapisz tutaj dokładnie to, czego chcesz w samochodzie. Następnie znajdziemy samochód spełniający te wymagania i dostarczymy ci go. Gdy podpiszesz dokument, zaczniemy szukać dla samochodu, więc w tym momencie żadne zmiany nie są dozwolone ”. „Ale” - mówisz - „Mam ogólne pojęcie, czego chcę, ale z pewnością chciałbym wypróbować kilka różnych samochodów, zabrać je na jazdę próbną…” „Nie, przepraszam”, mówi: „To niemożliwe. Po prostu zapisz, co chcesz, a my kupimy Ci samochód spełniający te wymagania”.
A teraz przypuśćmy, że poza tym nigdy wcześniej nie prowadziłeś samochodu. Skąd możesz wiedzieć, czego chcesz, zanim spróbujesz? Rzeczy, które wydają się dobrym pomysłem na papierze, mogą nie działać tak dobrze w praktyce itp.
Nie martwiłbym się niejasnymi wymaganiami, POD warunkiem, że wszyscy zaangażowani rozumieją, że wymagania są niejasne, że Ty będą musieli wypełnić luki, a kiedy zobaczą podjęte przez Ciebie decyzje, będą pewne decyzje, które im się nie podobają i będą musiały zostać przerobione.
Jeśli jest to luźne i oparte na współpracy środowisko, nie powinno być problemu. Ty coś produkujesz, przynosisz do przeglądu, mówią ci, co im się podoba, a czego nie, wprowadzasz zmiany, może przechodzisz w wielu cyklach. Zrobiłem w życiu wiele, wiele takich projektów. Często użytkownik musi wypróbować oprogramowanie, aby zobaczyć, co działa w praktyce, a co nie.
Jeśli szef lub klient stawiają nieuzasadnione wymagania lub jeśli nie wiesz, jakie jest środowisko na przykład, musisz napisać coś na piśmie, aby się chronić. Zrobiłem w swoim życiu kilka projektów, w których szef lub klient mówi: „Nie wiem, jakie są wszystkie wymagania, po prostu coś wymyślasz”. Potem coś wymyślam, a kiedy to przywracam, krzyczą: „Co! Nie o to mi chodziło! Co z ciebie za kretyn? Z pewnością było oczywiste, że…”, a potem stawiają cały szereg wymagań nigdy wcześniej o tym nie wspominali i to wcale nie było dla mnie oczywiste. W tego rodzaju środowisku - nawet jeśli nie jest to krzyk i groźby zwolnienia cię lub anulowania umowy, może to po prostu wyraz poważnego rozczarowania i frustracji - w takim środowisku napisz artykuł opisujący, co zamierzasz zrobić oddaj im go do zatwierdzenia. Jeśli masz szczęście, doprowadzi to do dyskusji na temat rzeczywistych wymagań. W najgorszym przypadku mówią „tak, tak, cokolwiek” i odrzucają to. Ale przynajmniej w tym momencie, kiedy wrócisz z oprogramowaniem, jeśli powiedzą „Nie tego chcieliśmy”, możesz przynieść dokument i powiedzieć: „Och, przepraszam, to jest to, co uzgodniliśmy Powinienem to zrobić. Widzisz, jest napisane tutaj, a ty to zatwierdziłeś. " W przyjaznym środowisku mówisz to w przyjazny sposób; w nieprzyjaznym środowisku być może będziesz musiał wykazać się większą siłą. W każdym razie powiesz wtedy: „OK, więc jakie zmiany w wymaganiach chcesz wprowadzić?” Następnie zapisz je na piśmie i rozpocznij kolejny cykl.
Jeśli szef lub klient spodziewa się niemożliwych czasów zmiany i obwinia Cię, gdy niemożliwe wymagania nie zostaną spełnione, to szczerze mówiąc, czas zacząć szukać innej pracy lub innego klienta. Lub jeśli wystarczająco potrzebujesz tej pracy / klienta, wchłaniasz ją i znęcasz się. (Mam dobre wspomnienia z czasu, gdy mój szef zapytał mnie, ile czasu zajmie konwersja dużego, złożonego systemu, który nasza firma zbudowała lata temu, ze starego języka komputerowego na bardziej nowoczesny. Zacząłem się zastanawiać , wykonaliśmy takie tłumaczenie innego produktu, więc mieliśmy pewne doświadczenie, ale nikt w firmie nie znał dziś tego produktu, bla, bla, a potem powiedział: „Nie potrzebuję dokładnej odpowiedzi, tylko z grubsza : dwa dni? trzy dni? ”Byłem zdumiony.„ Umm, nie ”, powiedziałem,„ Pytanie brzmi, ile miesięcy ”. Odszedł, mamrocząc.)