Kilka miesięcy temu przejąłem pracę od kogoś, kto rzucił palenie z tych samych powodów, dla których jestem tutaj dzisiaj. Zadanie polegało na opracowaniu wewnętrznej aplikacji, która byłaby używana głównie przez personel. Osoba porzucająca projekt nie była nawet bliska ukończenia aplikacji, ale zachorowała i zmęczyła się stresem, skrajnymi terminami itp. Wtedy wydawało się to wielką szansą. Mam dużo większe doświadczenie niż poprzedni deweloper, a projekt nie wyglądał na trudny do ukończenia, więc wziąłem projekt.
Spotkania poszły świetnie; ludzie słuchali mojej rady. Zrobiliśmy duże postępy w dość krótkim czasie. Błędy zostały naprawione, interfejs użytkownika przeszedł gruntowny przegląd, wiele kodu zostało zrekonstruowanych z myślą o ponownym użyciu. Aplikacja w końcu zaczęła wyglądać i działać jakoś.
Po pewnym czasie zażądano, zaplanowano i uruchomiono nowe funkcje. W miarę upływu czasu menedżer publikował nowe prośby o nowe funkcje, które chciał wykonać w niezwykle krótkim czasie. Na przykład w pełni funkcjonalny, gotowy do produkcji system zarządzania flotą w 14 dni, zaczynając od zera.
UWAGA: Kierownik ma niewielkie lub żadne zaplecze techniczne.
Wynikało to z tego, że albo dostarczam źle napisany i nieprzetestowany kod, albo nie dotrzymuję z góry określonych terminów. Dwie straszne sytuacje IMO.
Próbowałem zwrócić na to uwagę podczas spotkań, ale pomijano to z powodów takich jak: „Użytkownik końcowy nie widzi testów, o ile działa i wygląda dobrze, jest w porządku, czas wprowadzenia na rynek to ważniejsze." Ostatnim powodem, którego nienawidzę najbardziej, było to, że „Tak mądry programista jak ty musi być w stanie to zrobić w x ilości czasu”.
Jak mogę to wyjaśnić że aplikacja lub funkcje gotowe do produkcji nie powstają w krótkim czasie? Że prototyp nie jest produktem gotowym i że pokrycie kodu, testowanie, wydawanie wersji beta itp. jest niezwykle ważne dla zapewnienia jakości?