Właśnie powierzono mi projekt kodu z problemami z utrzymaniem. Co mogę zrobić, aby projekt był stabilny?
Znajduję się w miejscu, w którym pracujemy z bardzo dużym wielopoziomowym systemem .NET, w którym brakuje wielu ważnych rzeczy, takich jak testy jednostkowe, IOC, MEF, zbyt wiele klas statycznych, czyste zestawy danych itp. Jestem tylko 24, ale jestem tu od prawie trzech lat (ta aplikacja jest rozwijana od 5) i głównie z powodu ograniczeń czasowych właśnie dodaliśmy więcej bzdur, aby pasowały do innych badziewi. Po wykonaniu wielu projektów w wolnym czasie zacząłem rozumieć, jak ważne są wszystkie te pojęcia. Również ze względu na zmianę pracowników uważam się teraz za kierownika zespołu w tym projekcie i naprawdę chcę wymyślić kilka inteligentnych sposobów na ulepszenie tej aplikacji. Sposoby, w których wartość można wytłumaczyć kierownictwu. Mam pomysły na to, co chciałbym zrobić, ale wszystkie wydają się tak przytłaczające bez większych zysków. Wszelkie historie o tym, jak ludzie sobie z tym poradziliby lub byłyby, byłyby bardzo interesującą lekturą. Dzięki.
Odpowiedzi:
Budżetuj czas na atak długu technicznego. Musisz to po prostu zrobić. To, które części zaatakujesz jako pierwsze, zależy od tego, gdzie deweloperzy spędzają obecnie najwięcej czasu, ale ważniejsze jest, aby zacząć, niż zacząć od idealnych rzeczy. Jeśli używasz Scruma, umieść na swoim zaległości określone elementy długu technicznego i traktuj je jak funkcje, dopóki ich nie załatwisz.
Skuteczna praca ze starszym kodem jest wysoce zalecana i prawdopodobnie byłaby przydatna. Nie przeczytałem go, ale wydaje się, że zawiera wiele informacji na temat wprowadzania testów jednostkowych do starszego kodu, abyś mógł go zmodyfikować i bezpiecznie zaktualizować.
Używaj analogii karty kredytowej do zarządzania - „płacisz odsetki” od wszystkiego, co robisz, ponieważ tak trudno jest coś osiągnąć. Jeśli spłacisz swój dług techniczny, uwolnisz te zasoby i będziesz mógł szybciej rozwijać nową funkcjonalność w przyszłości. Jeśli tego nie zrobisz, Twoje „odsetki” (płatne w czasie programowania) będą się nadal kumulować, a Twój zespół będzie produkował nowe funkcje wolniej.
Może zacznij szacować czas spędzany w każdym cyklu na walce z zadłużeniem technicznym, aby dać im pojęcie o tym, ile już się zgromadził. Opisz, jak wyglądałaby poprawka lub zmiana funkcji w utrzymywalnym systemie, jak wygląda w rzeczywistym systemie i jakie zmiany należałoby wprowadzić lub które mogłyby być dobrym pierwszym krokiem do osiągnięcia tego celu.
źródło
Rzuć dług techniczny na poprawki błędów i dodatkowe funkcje.
Znalazłem iteracyjny podejście do poprawy daje najlepsze rezultaty. Mantra w mojej pracy jest poprawa jakości kodu, kiedy tylko go dotknąć. Każde dzieło czy to bug fix lub funkcja zaczyna się od analizy tego, co może być ustalona / refactored / czyszczone. Spróbujemy dokonać Refactor na par (w skali) do prac, które mamy do wykonania.
Utwórz uporządkowaną listę problemów w bazie kodu. Upewnij się, że wszyscy znają listę i kolejność priorytetową. Za każdym razem dostają dzieło powinni patrzeć na problem z listy, który przywiązany do kodu będzie pracował.
To nie naprawi wszystkiego. Istnieją pewne refactors lub poprawek, które wymagają sporą część czasu i zasobów. I generalnie starają się powiązać te do innych dużych kawałków pracy, które będą korzystać.
źródło
Może po prostu stwierdzam oczywiste, ale hej.
Napisać test mała jednostka, która sprawuje kawałek kodu, który ma problemy, a następnie Refactor powiedział klocek, upewniając się, że test nadal przechodzi. Przenieść się do innego fragmentu kodu, ten można osiągnąć najłatwiej od tej maleńkiej części stałym gruncie właśnie zbudowany. Spłucz, spłucz, powtórz.
Będzie to również pomóc w coraz nieco bardziej zaznajomieni z kodzie.
Po tym, jak robisz to przez jakiś czas, pomyślisz, że nadszedł czas, aby trochę rozszerzyć refaktoryzację. Odkrywanie powielonego kodu, naruszenie zasady OSUSZANIA ... no wiesz, zwykłe rzeczy. Do tego czasu będziesz mieć zapewne przyzwoity zasięg kodu, co pozwoli ci na pomieszanie metod, wyodrębnienie interfejsów i wszystkich tych udogodnień.
Zawsze zostawiaj bazę kodu nieco lepiej niż przed rozpoczęciem włamania się do niego. Jestem pewien, że to niewielka inwestycja, która się opłaci, nawet w niezbyt długim okresie.
źródło
Możesz spróbować wyjaśnić techniczny dług związany z tym projektem, aby dowiedzieć się, od czego zacząć. Możesz także spróbować się targować, że ze względu na zmianę pracownika trzeba trochę czasu poświęcić na poprawienie kodu, a to oznacza przeprowadzenie testów, które pomogą zapewnić lepszy rozwój w przyszłości, ponieważ testy mogą pomóc w zapobieganiu błędom i ułatwić pracę możliwe nowe osoby do pracy nad projektem.
źródło
W takich przypadkach staram się maksymalnie usprawnić projekt. Dowiedz się, które funkcje są absolutnie niezbędne, aby przejść do przodu. Każdy system, który istnieje od dawna, prawdopodobnie ma bardzo długie zaległości. Wiele z tych elementów będzie krytycznych, a wiele z nich będzie po prostu „dzwonkami i gwizdkami”.
Jeśli chodzi o testowanie, testy jednostkowe z pewnością będą pomocne, ale możesz poprosić część personelu niezwiązanego z technologią o udział w testowaniu i zgłaszanie błędów członkom zespołu.
Powodzenia.
źródło
Jedną z opcji jest odkurzenie CV i rozpoczęcie poszukiwania pracy.
Dobrym pytaniem, jakie należy sobie zadać, jest to, czy ten źle zarządzany projekt wskazuje, jak działa cała firma. Jeśli odpowiedź brzmi „tak”, zapytaj, czy zarabiasz wystarczająco, by pozostać w źle zarządzanej firmie.
źródło
Wiele razy można wcisnąć refactoring przez górną zarządzania czy można im powiedzieć, że będzie to uaktualnienie wydajność lub poprawki niektórych istniejących błędów. Nie ponownie czynnik prostu zmienić coś, co byś zrobił, szczególnie jeśli to działa. Czas Bug fix może być również dobrym sposobem, aby zmieścić się w pewnym refaktoringu jak już jesteś tam w każdym razie. Bądź asertywny i nie patrzeć na to jak Twoje są młodsze od swoich kolegów programistów. Zacznij od czegoś małego jak się w pewnym testów jednostkowych i pracy Stamtąd można wystawiać kilka błędów, które mogą dostać się do zarządzania daje cykle dla innych rzeczy.
źródło
Jestem obecnie czytania Brownfield Application Development w .NET , które, w zasadzie, jest o tym, jak radzić sobie z problemami, które aktualnie posiadają. Tak dalece jak większość co mówi (nie do końca wszystko - ale jest to rodzaj książki, które pomogą Ci myśleć własną drogę problemów, a nie taki, który ma być całkowicie nakazowym). To może pomóc w kilka sposobów - to pokazuje, że nie jesteśmy sami; to mam nadzieję, że da Ci wskazówki co do sposobu rozwiązania niektórych problemów.
Zasadniczo zgadzam się z większością z tych podejść - nie można naprawić całość w ciągu nocy, ale można ją poprawić stopniowo w bardzo małych krokach. I tak - Dług techniczny jest metaforą trzeba użyć.
źródło
To ostatecznie zależy od tego, jak dobrzy są twoi ludzie w projekcie. Jeśli jest to ten sam zespół, który stworzył ten bałagan, to masz małe szanse na dotarcie lepiej z tej samej grupy. Analizować swoich pracowników, dowiedzieć się o najsłabszych członków i zastąpić je (jeśli masz możliwość, aby to zrobić).
„Nie można zrobić torebkę jedwabiu z ucha i reszta”.
źródło