2018-04-26 08:23:44 +0000 2018-04-26 08:23:44 +0000
185
185

Jak rozmawiać z kierownictwem o kodzie 'genialnym'?

EDIT:

Dziękujemy wszystkim za wspaniałe rady, komentarze i opinie.

Jak się okazuje, nikt nie był “złym facetem” w tej sytuacji. Porady, które tu otrzymałem pomogły mi w ponownym skontaktowaniu się z byłym liderem projektu. Jak się okazuje, moja firma, bez żadnego widocznego powodu, otrzymała wczesną wersję “w rozwoju” bazy kodowej. Stara firma przysłała nam wersję gotową do produkcji, a jako wisienkę na czele publicznie pochwaliła mnie za skuteczne odwrócenie inżynierii niekompletnego produktu na głębokość, którą miałem.

TL;DR

odziedziczyłem projekt. Krótko mówiąc, kod, który mam obowiązek utrzymywać, jest zły. Tak zły, w rzeczywistości, produkt jest nie tylko niekompletny, ale i niefunkcjonalny i jest od lat.

_Jak komunikuję się z zarządem, w sposób, który nie jest dla nich wstydliwy, w sposób, który nie sprawia, że wyglądam na leniwego lub głupiego, że cenny produkt jest w fatalnym stanie? _

  • *

Clarification: this question vs technical debt

_This question has to do with me challenging long-standing beliefs about a product without committing career suicide. _ Zamiast zajmować się stricte zadłużeniem technicznym, jest takie: kierownictwo sugeruje, że być może kod jest tak skomplikowany, że nie mogę go zrozumieć, i pozostawione błędy są z projektu; _ że oryginalny programista jest tak meta, że to, co wygląda na błędy, jest właściwie uderzeniem geniusza. Być może innym powodem, dla którego nie chodzi tu o dług techniczny jest to, że różnica między kodem “geniusza” a długiem technicznym polega na tym, że kierownictwo informuje, że nie powinienem zmieniać kodu “geniusza”, a kod “geniusza” nie jest długiem technicznym: jest to sekretna czarna magia. **Chciałbym, żeby kierownictwo myślało o tym jako o długu technicznym. Zamiast tego nie. Zarząd nie zajmuje się bezpośrednio czasem, kosztami lub pieniędzmi – chociaż to jest jakiś problem.


Szczegóły

Przez większość czasu, nie byłbym zdenerwowany komunikując to zarządowi. Niestety, długa linia konserwacji kawałka przez ludzi, z których niektórzy mieli małe doświadczenie w rozwoju, którzy tylko “dotykali” kodu na tyle długo, aby dodać łatkę tu czy tam, a następnie przejść dalej, namalował obraz do zarządzania przez lata, że projekt jest tylko jeden krok od bycia gotowym do produkcji.

To żałośnie nie jest tak. Krótka lista problemów w genialnym kodzie, na które natknąłem się w bazie kodu ~1.5Gb to…

  • Są te same funkcje, te same nazwy zmiennych o tym samym zakresie w całej bazie kodu (w języku, który tego nie obsługuje).
  • Funkcje są zdefiniowane, ale nigdy nie są wywoływane.
  • Niekompletne wersje używanych bibliotek.
  • Twardo kodowane URI i adresy IP bez dokumentacji co do ich działania.
  • Losowo wybrane trasy API, które nie zwracają nic lub bełkotują; które nie są wtedy używane.
  • Twardo kodowane, niezaszyfrowane hasła i prywatne klucze ssh.

Powinienem dodać, że gdy po raz pierwszy zacząłem nad tym pracować, **_nie został on nawet skompilowany. I kiedy dostałem go do kompilacji, zawiódł w czasie pracy.

To koszmar.

Problem w tym, że kierownictwo otrzymało zapewnienie, po kim go odziedziczyło, a po poprzednich programistach “gung-ho”, że “działa”, więc zainwestowało w niego znacznie więcej… A teraz kasa jest mi przekazywana. I chcą go wyprodukować w ciągu około 2 miesięcy.

Kiedy sugeruję, że poprzedni programiści mogli nie być do końca uczciwi lub całkowicie zrozumieli produkt, kierownictwo wysyła mieszane sygnały o “po prostu to zrób” i “dlaczego jeszcze tego nie zrobiłeś” … i “nie jesteśmy pewni, czy kiedykolwiek to zadziałało” do “to działało, kiedy to otrzymałeś” i “nigdy nie widzieliśmy, żeby to działało” do “to już jest w produkcji”.

[EDIT: wkleił większość następnego akapitu do sekcji TL;DR. ]

Management również zasugerował, że być może jest to tak złożone, że nie mogę tego zrozumieć, i pozostawione błędy są z projektu; _że oryginalny programista jest tak meta, że to co wygląda na błędy, to tak naprawdę uderzenia geniusza.Przyznam, nie jestem geniuszem, i być może tak jest: którym oferuję moje wcześniejsze spostrzeżenia na temat bardzo fundamentalnych kwestii, które znalazłem.

Być może jest polityka w grze powyżej mojego poziomu.

Odpowiedzi (0)