Pracuję nad projektem oprogramowania głównie solo od ponad 5 lat. Na początku był bałagan (jestem trzecim lub czwartym programistą, który nad nim pracował) i chociaż teraz jest mniej bałaganu, jest nadal niesamowicie zdezorganizowany. Tempo postępu w opanowywaniu go jest lodowate i zaczynam odczuwać przygnębienie z powodu stanu, w którym się znajduje. Jak naprawdę mogę to naprawić?
Specyfika projektu: Jest to program sprzedaży napisany prawie całkowicie w języku Visual Basic Classic (VB6) z zapleczem MySQL i silnikiem raportowania napisanym w języku C #. Moduł raportowania C # jest przyjemnością w pracy, został napisany dopiero w ciągu ostatnich kilku lat, a wcześniej wszystkie raporty zostały wykonane w Crystal Reports 9 (tak, wciąż mamy kilka raportów, które na nim polegają).
Jednak sam program jest kompletną katastrofą. Nie ma w sumie 90 000 LOC i około 10 000 linii komentarzy (głównie nie dokumentacji, ale stary kod, który został skomentowany). 158 plików formularzy i 80 plików modułów. Nie mam pojęcia, ile z nich jest faktycznie używanych, ponieważ niektóre funkcje programu są po prostu przestarzałe i (hm, czasami) zanotowane jako takie bez usuwania powiązanego kodu z programu. Domyślam się, że tylko 50% kodu jest faktycznie wykorzystywane produktywnie.
Boję się dotknąć dużej części kodu tylko dlatego, że nie jestem pewien, czy niszczę coś, na czym opiera się jeden niejasny klient, zdarza się to częściej niż mogę to zliczyć. To tak, jakby w całym kodzie rozrzucone były miny lądowe.
Projekt nie ma tak naprawdę żadnej struktury. Nie jest zorientowany obiektowo, z wyjątkiem kilku miejsc, w których do tej pory miałem cierpliwość do reform. Jeśli potrzebujesz uzyskać dane w formularzu, tworzysz instancję obiektu bazy danych, deklarujesz zapytanie bezpośrednio w funkcji, wykonujesz go i robisz, co chcesz z zestawem danych.
Kiedy zacząłem pracować nad projektem, nie było żadnej kontroli źródła. Próbowałem zachęcić inne osoby, nad którymi pracowałem, do korzystania z niego, ale byłem nowym facetem i moje próby nakłonienia ludzi do korzystania z subwersji prawie nie powiodły się. Główny programista firmy w końcu złapał błąd rtęci w ciągu ostatnich kilku lat i upewnił się, że wszyscy programiści używają teraz kontroli źródła we wszystkich projektach, więc to przynajmniej pewien postęp.
Myślę, że gdybym mógł pracować nad reformą projektu w pełnym wymiarze godzin, byłbym w stanie osiągnąć przyzwoity postęp, a może nawet oszacować, ile czasu zajmie mi pełne przekształcenie projektu, ale jest on w użyciu i jestem ciągle proszony o gaszenie pożarów, naprawianie błędów, dodawanie funkcji itp. itp.
Jak więc zacząć naprawdę naprawiać ten projekt? Spróbuj użyć VB6 w innym języku? Czy próbuję przepisać program w wolnym czasie? Czy to jest całkowicie beznadziejne?
Aktualizacja
Po tym poście wróciłem do projektu z nową gorliwością, ale wróciłem do beznadziejności w ciągu kilku miesięcy po tak powolnym tempie postępu. Następnie powtórzyłem ten cykl jeszcze 2 lub 3 razy w ciągu następnego roku.
Od tego czasu przeszedłem do innej pracy. Chociaż po tylu latach vb6 i tylko peryferyjnym doświadczeniu z innymi technologiami wyszukiwanie było trudne i po drodze spotkałem się z wieloma odrzuceniami (około kilkunastu wywiadów w ciągu roku). Moja rada dla innych w tej sytuacji polega na rozważeniu pozostawienia tego czynnika w spokoju. Zastanów się, jakie szkody możesz wyrządzić swojej karierze, pozostając w ślepej uliczce, takiej jak ta.