Obwinianie dzisiejszych bolączek zadłużeniem technicznym z dnia wczorajszego

38

Zaskakująca liczba problemów z jakością, skalowalnością i obciążeniem pojawiła się w aplikacji, którą obecnie obsługuję, której pierwotnie nie napisałem. Na szczęście mam nowe projekty, które realizowałem od podstaw, aby zachować pozory mojego zdrowego rozsądku.

Pierwotny zespół składał się z 20 programistów (większość z nieaktualnymi zestawami umiejętności), bez dokumentów wymagań biznesowych lub testerów zapewniania jakości i od samego początku źle zarządzanych w sposób wodospadowy. Wczesne dni produkcji były krępującym koszmarem, który wymagał łatania kruchego kodu proceduralnego za pomocą jeszcze większej liczby kruchych poprawek. Później dodano funkcje, które zostały wpuszczone w model danych, który nigdy nie miał ich obsługiwać i często zdarza się, że ten sam kod jest powielany 10 razy, a zasoby nie są bezpiecznie zamykane, a zapytania ORM, które pobierają dziesiątki tysięcy jednostek, wyrzucić wszystko oprócz garstki.

Teraz jestem tylko ja i za każdym razem, gdy pojawia się nowy problem, przepisuję moduł na lepsze standardy i sprawiam, że DUŻO jest on bardziej stabilny, ale Zarząd potrzebuje odpowiedniego wyjaśnienia, dlaczego to wszystko się dzieje.

Wydają się zszokowani i zakłopotani myślą, że ta aplikacja jest niskiej jakości i tonie w długach technicznych. Na szczęście rozumieją koncepcję długu technicznego i wspierają mnie w dążeniu do jego zlikwidowania, a także bardzo mnie wspierają i doceniają, ale czuję się tak, jakbym wciąż obwiniał oryginalny zespół (który zszedł, by zrujnować inny projekt w innym podział).

Najważniejsze jest to, że nie chcę być „tym facetem”, który zawsze narzeka na deweloperów projektu przed nim. Widziałem już wcześniej taką postawę od ludzi w mojej karierze, którzy osobiście uważałem, że byli ignorantami i nie brali pod uwagę okoliczności i wpływów projektowych, które zachęcały do ​​bycia takimi, jakie były.

Zazwyczaj widzę to podejście polegające na obwinianiu poprzedniego zespołu za kiepski projekt i wdrożenie od idealistycznych młodszych programistów, którzy nie mieli doświadczeń życiowych, z których korzystało więcej starszych członków.

Czy uważasz, że istnieje lepszy, być może łagodniejszy sposób zgłaszania tego rodzaju problemów kierownictwu, bez narażania reputacji osoby / zespołu przed tobą?

wałek klonowy
źródło
17
Ironią jest to, że w pytaniu o nie granie w winę wydajesz 3 pełne akapity, które stanowią około 50% twojego pytania, na temat poprzedniej drużyny. I oznaczył pytanie [zły kod] i [zły programista].
Aaronaught
8
@Aaronaught, OK, ugryzę, oznaczyłem to etykietą, bad-codeponieważ kod rzeczywiście powoduje błędy i problemy. Oznaczyłem to, bad-programmerponieważ obawiam się, że staję się jednym, obwiniając poprzedni zespół, zmęczoną i oklepaną wymówkę, o której wszyscy wcześniej słyszeliśmy. Jeśli chodzi o pierwsze trzy akapity, być może nie musiałem być tak opisowy, ale chciałem namalować dokładny obraz mojej bezpośredniej sytuacji i podać historię tego, co do tej pory zebrałem.
wałek klonowy
2
... Czy jest w tym element rant ? Tak, tak sądzę, ale mam dość bycia nianią w aplikacji, która działa jak dziecko z ADHD z życzeniem śmierci.
wałek klonowy
2
Współczuję tobie. Ja robię. Ale mamy system czatu, jeśli chcesz rzucić palenie lub zdmuchnąć parę. Konstruktywne pytania powinny mieć neutralny ton i pomijać takie niepotrzebne szczegóły.
Aaronaught
Historia mojego życia
Iulian Onofrei

Odpowiedzi:

46

Dług techniczny jest jak dług finansowy. Przyjmujesz to (miejmy nadzieję) strategicznie podczas opracowywania programu z zamiarem, że zostanie on spłacony w przyszłości. Czasami ludzie podejmują złe decyzje dotyczące długu technicznego (np. Uruchomienie karty kredytowej), ale czasami pewna ilość długu technicznego jest po prostu normalna. Decyzja, aby nie poświęcać dzisiaj czasu na „właściwe” podejście, przy założeniu, że w przyszłości będzie trzeba to zmienić, jest całkowicie normalna i należy się tego spodziewać. Oczywiście jest cienka linia, ale myślenie, że zrobisz to we właściwy sposób za pierwszym razem, może spowodować własny zestaw problemów (paraliż analizy).

Podsumowując, każdy nietrywialny projekt, który trwa dłużej niż kilka lat, będzie musiał poświęcić nowy czas na spłatę zadłużenia technicznego. Chodzi o to, że to prawda, nawet jeśli piszesz swoją aplikację we właściwy sposób . Jeśli tego nie robisz, gromadzisz długi na długach, a zarząd z pewnością może to zrozumieć, jeśli przedstawisz je w ten sposób.

Wyjaśnij to kierownictwu i zamiast „obwiniania” poprzedniego zespołu cały czas możesz to przedstawić jako „biznes jak zwykle”.

Nemi
źródło
4
+1 za naprawdę dobre, nie obwiniające wyjaśnienie, w jaki sposób projekt może (poprawnie!) Wybrać się na zadłużenie techniczne.
Joris Timmermans
1
@Nemi: Jedną ważną różnicą między długiem technicznym a długiem finansowym jest to, że o wiele łatwiej jest oszacować ten ostatni. O wiele łatwiej jest wiedzieć, ile długu finansowego pozostało Ci do spłacenia (nawet biorąc pod uwagę kumulację odsetek i powtarzające się zobowiązania finansowe), niż w przypadku długu technicznego. Podkreślam to tylko dlatego, że jest to jedna rzecz, która zaostrza problem wału klonu.
Ben Hocking
2
@Ben - masz całkowitą rację. Podobnie jak w przypadku wszystkich analogii, ta rozkłada się pod mikroskopem. Jednak porównanie jest nadal solidne na wysokim poziomie. Zasadniczo rezygnuje ze szczegółów i rozmawia z zarządem na ich poziomie - jako problem biznesowy, a nie techniczny. Zasadniczo każdy długofalowy projekt gromadzi pewną kwotę długu technicznego i dlatego oznacza to, że z upływem czasu powstają dodatkowe koszty rozwoju. Ponieważ jest to ukryte (a nawet niezrozumiałe), w najlepszym interesie wszystkich leży upewnienie się, że o nim mowa.
Nemi
2
+1 do „to prawda, nawet jeśli piszesz swoją aplikację we właściwy sposób”.
Mauricio Scheffer
1
@radarbob Nie zgadzam się - podobnie jak dług finansowy, nie ma znaczenia, czy gromadzenie go zostało zrobione celowo, z powodu pecha czy głupoty - ktoś musi za to zapłacić w przyszłości. Termin jest z natury neutralny w odniesieniu do przyczyny.
Hulk,
23

IMO już teraz robisz to właściwie we właściwy sposób: nie sugerujesz gruntownego przepisywania, ponieważ „stary kod jest do bani”, ale naprawiasz jedną rzecz na raz.

Aby uniknąć poczucia, że ​​obwiniasz stary zespół, wyobraź sobie, że prawdopodobnie musieli stworzyć ten kod pod wielką presją czasu. W tamtym czasie kierownictwo prawdopodobnie tak naprawdę nie rozumiało tego tylko dlatego, że kod „mniej więcej działa” nie oznacza, że ​​możliwa jest konserwacja bez większego bólu i przeróbek.

Doceń stary zespół za stworzenie produktu, który rzeczywiście przyniesie pewną wartość biznesową - nie byłby już w użyciu, gdyby tego nie zrobił. Możesz być zaskoczony, jak często projekt nie zapewnia wartości biznesowej, nawet jeśli jest pięknie napisany.

Joris Timmermans
źródło
3
+1: obwiniaj starego kierownictwo, który nie dostarczył produktu wysokiej jakości, a następnie (mam nadzieję) nowy zarząd otrzyma wiadomość (lub pozbędzie się ciebie, oba przypadki są wygrane, jeśli o ciebie chodzi)
gbjbaanb
15
@gbjbaanb - nie obwiniaj nikogo! Zrób wszystko, aby nikogo nie obwiniać. Wystarczy ustalić aktualną i pożądaną sytuację i logicznie argumentować, w jaki sposób i dlaczego trzeba się tam dostać.
Joris Timmermans
Eh, upewnij się, że JEST nowe zarządzanie. Ten sam szef może nadal tam być. I nawet jeśli się przeprowadził, jest gdzieś tam. Upewnij się, że dowiesz się, zanim zaczniesz rzucać ludźmi pod autobus.
Philip
Chciałbym, żeby to było tak proste, jak nikogo nie winić. Zarząd nalega, aby ktoś / coś wskazał palcem. Jeśli nie wskazuję osoby lub grupy osób, do których mam wskazać?
wałek klonowy
4
@maple_shaft - przedstaw więc argument, który podałem w mojej odpowiedzi dla kierownictwa, a jeśli nadal będą nalegać na „obwinianie”, opublikuj swoje CV na tylu witrynach, ile możesz znaleźć, ponieważ sytuacja pójdzie bardzo źle, gdy zdecyduj, że zaczniesz obwiniać Cię za brak kogokolwiek innego, kto mógłby wskazać palcem.
Joris Timmermans
7

Poproszony o wypowiedzenie się na temat obecnego stanu produktu, którego dotyczy problem, zawsze polegam na tym, że „tak jest”, a potem zaczynam mówić o planach jego ulepszenia.

Nie znasz wszystkich czynników, które wpłynęły na decyzję, która spowodowała ten problem - być może były w tym czasie nawet rozsądne. Wszystko, co możesz zrobić, to iść naprzód i poprawić sytuację jutro. I wygląda na to, że wykonujesz dobrą robotę - masz odpowiednie podejście do tej sytuacji.

Kiedy zostaniesz o to poproszony, skoncentruj się na zgłaszaniu faktów. Nie musisz dodawać narracji ani komentarzy; po prostu powiedz „system zawiedzie w przypadku X” lub „raporty są niepoprawne w przypadku Y”. Następnie szybko dodaj, w jaki sposób planujesz poprawić obecną sytuację.

Scott C. Wilson
źródło