Jestem obecnie na płatnym stażu i miałem za zadanie utrzymanie przestarzałego systemu, który został opracowany przez wielu programistów (w różnych okresach) w ciągu ostatnich 5 lat. Kierownictwo zgadza się, że „system jest objęty wsparciem życiowym” i otrzymuję dość regularną dostawę raportów o błędach od użytkowników końcowych aktualnie korzystających z systemu.
System nie jest przestarzały, jeśli ludzie nadal go używają i wspiera działania biznesowe. Ponieważ wciąż jest używany, firma nie może go po prostu wyrzucić - należy go wspierać, dopóki nie będzie już potrzeby korzystania z systemu. Może to być zmiana celów biznesowych lub nowy system został opracowany, przetestowany i pomyślnie wdrożony u użytkowników końcowych.
Naprawdę 5 lat nie jest tak długie. Pracowałem z kodem, który miał już 10 lat. Jeśli nadal służy potrzebom użytkownika, po co go wyrzucać? To wyrzuca dużo pieniędzy wydanych na jego rozwój. Dopóki utrzymanie go z powodu rosnących kosztów lub wymagań nie zmieni się drastycznie, nie będzie uzasadnione, nie ma biznesowego powodu, aby je wyrzucać.
Kierownictwo chce teraz przedłużyć projekt o kolejny rok, a proces ten prawie potroił bazę użytkowników.
Jeśli kierownictwo mówi, że ten system jest „na całe życie”, dlaczego próbują go dalej wdrażać? Często czynności konserwacyjne są kontynuowane w dotychczasowym systemie, dopóki nie zostanie wymieniony, ale jeśli system jest wycofany z eksploatacji, zwykle nie jest wdrażany u większej liczby osób. Przedłużenie konserwacji to jedno, ale dodanie użytkowników, którzy polegają na systemie, to zupełnie inna sytuacja.
Dla mnie brzmi to tak, jakby to właściwie nie był koniec życia, ale raczej faza konserwacji i będzie tam, dopóki system nie spełni już potrzeb użytkowników.
Jako stażysta (lub dowolne stanowisko podstawowe) w jaki sposób „odpychać”? Napisałem już raport wyrażający moje obawy, chociaż w otwartym dokumencie. Czy istnieje protokół lub typ dokumentu do sugerowania zmian? Czy jestem w stanie przedstawić sugestie, czy powinienem po prostu nadal wspierać stary system?
Musisz nadal obsługiwać stary system. Później wspominasz, że oprogramowanie nie jest głównym przedmiotem działalności Twojej firmy. W takim środowisku zadaniem zespołów programistycznych jest wspieranie podstawowej działalności firmy. Jednak zespoły oprogramowania muszą również pamiętać o celach biznesowych.
Tymczasem przechwytuj swoje sugestie w sposób, który nie jest narzucający się. Wskaż inne technologie lub techniki, które można zintegrować z systemem lub zastosować, jeśli / kiedy zostanie utworzony nowy system i jego zalety / wady. To, jak to zrobisz, zależy od firmy, ale biorąc pod uwagę kilka późniejszych punktów, być może przydatne byłoby założenie wiki lub innej strony do współpracy.
W branży niezwiązanej z oprogramowaniem, oprogramowanie jest kosztem, a zespoły zajmujące się oprogramowaniem (szczególnie menedżerowie projektów / programów) powinny pracować nad jak najmniejszym kosztem budowy i utrzymania systemów oprogramowania, jednocześnie wspierając potrzeby użytkowników końcowych . Wyrzucanie oprogramowania, które (o ile mogę stwierdzić, w każdym razie z twojego postu) spełnia potrzeby użytkowników, jest sprzeczne z tym, co leży w najlepszym interesie zespołu programistów.
* Dla wyjaśnienia, tworzenie oprogramowania nie jest podstawową działalnością mojej firmy. Jako takie nie istnieją wewnętrzne protokoły. Ponadto projekt nie ma żadnej formalnej dokumentacji, żadnych dokumentów wymagań. Rozwój jest bardzo ad hoc.
Dla mnie to jest problem. Brak tworzenia dokumentacji, brak opracowywania specyfikacji i brak spójności prowadzi do wzrostu kosztów tworzenia oprogramowania. Praca nad rozwiązaniem tego problemu byłaby moim najwyższym priorytetem i zrobiłbym to, pracując nad takimi rzeczami jak standard kodowania, kontrola wersji, tworzenie samodokumentującego się kodu i dokumentów projektowych, śledzenie defektów i specyfikacja wymagań.