Wygląda na to, że twoje problemy są bardziej ogólne.
Problem refaktoryzacji jest zarówno objawem, jak i potencjalną ulgą od części problemu.
Kierownik ds. Oprogramowania i zespół przydzielają czas zespołowi
Z mojego doświadczenia wynika, że możesz napotykać problem, który nazywam „każdy jest menedżerem oprogramowania”. Menedżerowie produktu, kierownicy projektów, a czasem inżynierowie i testerzy systemów mogą być znani z próby zarządzania mikro programistami, którzy prawdopodobnie mają już doświadczonego menedżera oprogramowania. Możesz nawet mieć kilku członków swojego zespołu, którzy uważają, że ich rolą jest zarządzanie.
Jeśli jesteś menedżerem oprogramowania, dokonaj zleceń refaktoryzacji, które chcesz, lub jeszcze lepiej, poproś zespół o zaproponowanie refaktoryzacji do zatwierdzenia. Aby nie zarządzać mikromaningiem, możesz mieć wytyczne dotyczące wieku / autora / rozmiaru / kontekstu kodu, który ma być refaktoryzowany, który można dowolnie refaktoryzować vs. wymagać zgody. Jeśli członek twojego zespołu chce masowo zreformować cztery duże klasy skomplikowanego starego kodu, którego nie napisał, a które nie są częścią jego funkcji, jego dwutygodniowe przekierowanie jest twoim problemem, więc potrzebujesz szansy, aby powiedzieć „nie”.
Możesz się przekraść, ale myślę, że lepiej jest po prostu ostrożnie budować swoje szacunki z czasem na analizę, projektowanie, kodowanie, wiele form testowania (przynajmniej jednostki i integracji), refaktoryzację i ryzyko, jak sądzono historycznie i przez brak doświadczenie lub przejrzystość związane z zadaniem. Jeśli byłeś zbyt otwarty na temat pracy swojego zespołu (lub masz członków w swoim zespole, którzy są), rozsądne może być wąskie kanały komunikacji, aby przechodzili przez ciebie i omawiali zasoby i wyniki, a nie metody.
Wczesne wybory projektu Utwórz błędne koło do refaktoryzacji
Konserwacja oprogramowania jest trudna. Podwójnie trudno jest, jeśli inni w organizacji dokonują wyborów na własny koszt. To źle, ale nie jest nowe. Zajmuje się tym Barry Boehm, jeden z naszych wielkich twórców oprogramowania, który przedstawia model zarządzania, który określa jako Teoria W.
http://csse.usc.edu/csse/TECHRPTS/1989/usccse89-500/usccse89-500.pdf
Często programiści są wkurzeni, aby produkować zgodnie z podejściem do zarządzania Theory-X, które mówi, że pracownicy są w zasadzie leniwi i nie będą działać, chyba że zostaną zmuszeni do poddania się. Boehm podsumowuje i kontrastuje swój proponowany model w następujący sposób:
„Zamiast charakteryzować menedżera jako autokratę (Teoria X), trenera (Teoria Y) lub facylitatora (Teoria Z), Teoria W charakteryzuje podstawową rolę menedżera jako negocjatora między jego różnymi okręgami wyborczymi i pakietem rozwiązań projektowych z warunkami wygranej dla wszystkich stron. Poza tym menedżer jest także wyznacznikiem celów, monitorem postępów w osiąganiu celów i aktywistą w poszukiwaniu codziennych konfliktów między projektami typu wygrana-przegrana lub przegrana-przegrana, konfrontując je, i zmieniając je w sytuacje korzystne dla obu stron ”.
Szybka i brudna często jest po prostu brudna
Boehm wskazuje dalej, dlaczego programiści z zespołu konserwacyjnego są tak nieszczęśliwi.
„Zbudowanie szybkiego i niechlujnego produktu może być tanią, krótkoterminową„ wygraną ”dla twórcy oprogramowania i klienta, ale będzie to„ strata ”dla użytkownika i opiekuna”. Należy pamiętać, że w modelu Boehm klient jest raczej administratorem umowy niż użytkownikiem końcowym. W większości firm myśl o menedżerze produktu jako o surogacie klienta, a może o osobie, która kupuje produkt na liście funkcji.
Moim rozwiązaniem byłoby, aby nie wypuszczać pierwotnego zespołu programistów (lub przynajmniej oryginalnego leadu), dopóki kod nie zostanie zrefaktoryzowany, aby przynajmniej spełniał standardy kodowania.
Uważam, że dla klienta rozsądne jest uznanie menedżera produktu za surogat klienta, a grupę osób nagradzanych za dostarczenie czegoś szybkiego i brudnego można z pewnością poszerzyć, więc istnieje duży wybór, aby robić rzeczy w niewłaściwy sposób.
Refaktoryzacja nie podlega negocjacji
Nie wycofuj się z roli menedżera oprogramowania. Powinieneś mieć uprawnienia i dyskrecję, aby wykorzystać czas swojego zespołu na doskonalenie procesów i produktów. W tej roli może być konieczne negocjowanie wyborów, aby Twój zespół był bardziej profesjonalny. Jednak jeśli chodzi o proces, nie negocjuj z marketingiem, ponieważ z mojego doświadczenia jest to przegrana gra. Negocjuj z kierownictwem inżynieryjnym. To pokazuje, że masz wizję. Budowanie profesjonalnego zespołu oprogramowania jest przedłużeniem ich roli i jest o wiele bardziej prawdopodobne, że będzie postrzegane jako korzystne dla wszystkich.