Pytanie:
Jak mam radzić sobie z członkiem zespołu, który regularnie wprowadza istotne zmiany?
user119822
2020-07-16 22:20:00 UTC
view on stackexchange narkive permalink

Jestem starszym programistą w średniej wielkości firmie. Jesteśmy podzieleni na wiele podgrup, z których każdy ma określone role. Przydzielony mi zespół odpowiada za codzienne świadczenie usług i naprawianie błędów, które wynikają z naszego produktu.

Niedawno miałem poważny przypadek wypalenia zawodowego związanego z obecną sytuacją COVID. Wśród kilku obaw, które mam, są indywidualne osoby z zespołu. Ten członek zespołu ma zwyczaj dokonywania przełomowych zmian, nie poświęcając wiele uwagi innym członkom zespołu, nie mówiąc już o podziale na podzespoły. To prawie zmora mojego życia, ta osoba spowodowała liczne przerwy w działaniu systemu, ale postępują one w zadziwiającym tempie. Jest to oczywiście postrzegane przez kierownictwo jako „pozytywna” rzecz, ponieważ wykonują swoją pracę.

Haczyk polega na tym, że za każdym razem, gdy dochodzi do awarii, następuje dochodzenie. Wiąże się to z wieloma spotkaniami, naprawą błędów (mój zespół) i spowolnieniem naszej pracy podczas gaszenia nieuniknionych pożarów, które się rozpoczęły. A co najgorsze, naprawdę trudno jest przekonać ich do przyznania się do swoich błędów. Rozmawiając z nimi, to nigdy „ich” kod nie jest winny. Osoba próbowała nawet winić sprzętową pamięć ECC za uszkodzenie pamięci, które pochodzi z kodu tej osoby.

Jestem za ludźmi uczącymi się na błędach, ale ledwo jesteśmy w stanie ugasić ostatni pożar przed następnym jest uruchomiony. Niedawno i chociaż znajdowałem się pod dużą presją, aby dostarczyć, poszedłem, aby wykonać ostatnie zadanie dnia. No i oto, znowu się tym zajmują, a zatwierdzenie kodu zepsuło mi pracę.

Całkiem publicznie rzuciłem o tym na kanałach naszego zespołu, ponieważ miałem dość bezpośredniego podejścia. Zwróciło to uwagę kierownictwa, ponieważ zaangażował się ich menedżer. Po wielokrotnych rozmowach z kierownictwem niewiele się zmieniło w przypadku tej osoby.

Jak zwrócić na to uwagę kierownictwa, zachęcić ich do działania i, co ważniejsze, pomóc temu zapobiec?

Czy Twój zespół przeprowadza przeglądy kodu, wnioski o scalenie itp.?Jaki rodzaj kontroli jakości obowiązuje ten produkt?
W jaki sposób kod trafia do środowiska produkcyjnego bez przeglądu, testowania itp.?Czy masz ludzi, którzy mają wystarczający dostęp do wprowadzenia rzeczy do produkcji, a następnie, po namyśle, przywrócenia kontroli źródła?Wygląda na to, że masz zepsute procesy i zabezpieczenia, które umożliwiają / zezwalają na takie zachowanie.
@GB1553 istnieje proces przeglądu kodu, ale zakres i zakres zmian są czasami dość duże.Wydaje mi się, że może to być częścią problemu, ponieważ ludzie traktują proces przeglądu kodu jako ćwiczenie z zaznaczeniem pola wyboru, a nie poświęcają czasu na właściwą ocenę kodu.
@alroc zmiany są sprawdzane w GIT, a następnie wypychane przez potok CI / CD.Chociaż te problemy nie zawsze wychodzą na jaw natychmiast po wprowadzeniu kodu do produkcji, zwłaszcza w przypadku błędów, jego uszkodzenie wymaga określonego zestawu okoliczności, które nie są testowane.
W jaki sposób recenzje kodu, które są traktowane jako formalności i błędy, które wymagają określonego zestawu niesprawdzonych okoliczności, stanowią „nieuczciwego” programistę?
@buckminst, gdy ta osoba jest źródłem ciągłego strumienia awarii, a każda z tych awarii wskazuje na źródło niskiej jakości / w połowie sprawdzonej pracy.Czy mamy powiedzieć, że jakość kodu zależy całkowicie od recenzenta kodu?Nie sądzę, żeby tak było.
Dlaczego naprawiacie błędy, które tworzy ten programista?Czy posiadasz własne systemy produkcyjne?Czy jesteś właścicielem procesu wdrażania?Czy można cofnąć wdrożenie (por. Zmiany schematu db itp.)?Czy możesz indywidualnie cofać łamanie zobowiązań w produkcji?Wydaje mi się, że najlepszym rozwiązaniem jest usunięcie obraźliwego dzieła z produkcji i odesłanie go do autora w celu weryfikacji.
@user9237382 - Czy masz testy automatyczne?Czy można je uruchomić za pośrednictwem serwera CI, takiego jak Jenkins?Czy regularnie wykonujesz regresję?Witryny hostujące repozytorium mają opcje automatycznego zapobiegania żądaniom ściągnięcia, dopóki nie przejdzie co najmniej 1 testu kompilacji / regresji.Poza tym zachowaj kompilacje Jenkinsa, aby mieć historię, która w razie potrzeby może zostać wykorzystana jako dowód.
Pięć odpowiedzi:
A. I. Breveleri
2020-07-16 23:12:00 UTC
view on stackexchange narkive permalink

Musisz stworzyć żelazną zasadę, że jeśli osoba zatwierdzi kod, który zepsuje kompilację, zatwierdzenie zostanie natychmiast cofnięte, a praca tej osoby nie zostanie ukończona .

Jeśli nie masz uprawnień do ustanowienia i egzekwowania takiej zasady, musisz przekonać stronę, która ma takie uprawnienia. Całkowicie udokumentuj faktyczne koszty zepsucia kompilacji.

Dopóki ta reguła nie zostanie wprowadzona, zachowuj się tak, jakby była. Gdy kompilacja zostanie zepsuta, wróć do ostatniej dobrej kompilacji. Zademonstruj, że jedyną różnicą między działającym oprogramowaniem projektowym a oprogramowaniem projektowym, które nie działa, jest to, że jedno zatwierdzenie.

Powinieneś robić o tym dużo hałasu, do wszystkich, od kolegów po wyższe kierownictwo. / p>

Greg ma rację.Nikt nie dba o to, czy czujesz się niewygodny lub zirytowany.Najważniejsze jest to, że * zepsute kompilacje kosztują *.
Myślę, że to rozsądna rada, niektóre z problemów z tym związanych są takie, że kompilacje psują się i nie są zauważane przez pewien czas.Mój zespół jest na to trochę bardziej wrażliwy, ponieważ częściej odbieramy powiadomienia o kompilacji.Ze względu na użycie współdzielonych komponentów chciałbym traktować je bardziej jako kontrakt (podobnie jak konsumowanie pakietu) i wymagać, aby wspomniany zespół opublikował swoje zmiany dla komponentów, które je zużywają.Ich zerwanie lub wprowadzenie przełomowej zmiany nie powinno mieć na nas tak złego wpływu?
Przepraszam, myślałem, że mówisz o członku własnego zespołu.Problem jest inny, jeśli wynika z innego zespołu.
@user9237382 - powinieneś zaimplementować Syrenę Wstydu, aby zmusić ludzi do szybszego naprawiania zepsutych kompilacji - https://sirenofshame.com/;)
Po przemyśleniu tego mamy wyższy niż oczekiwano współczynnik niepowodzeń kompilacji przy niewielkiej lub zerowej aktywności, aby naprawić to jako priorytet.Myślę, że trzeba to zmienić.
@user9237382 „_budynki psują się i nie są odbierane przez pewien czas._” - to jest główny czynnik, jeśli nie prawdziwy podstawowy problem.Im szybciej zauważysz zepsutą kompilację, tym bardziej oczywista będzie przyczyna awarii i tym łatwiej będzie sobie z nią poradzić.Gdybyś miał zautomatyzowane testy, mogłoby to być bardzo szybkie - a jeśli Twój system kompilacji lub kontroli wersji uruchomiłby je w ramach procesu sprawdzania, Twój kolega nie byłby nawet _able_ do sprawdzania uszkodzonego kodu!
Ta odpowiedź zakłada, że oficjalna kultura firmy * nie * polega na „szybkim działaniu i zepsuciu rzeczy”. To naprawdę nie do PO decyduje, jaka jest właściwa równowaga między postępem a stabilnością;jest to naprawdę pytanie, na które musi odpowiedzieć kierownictwo wyższego szczebla.Jeśli zarząd jest w porządku z czasem zepsutym oprogramowaniem, ale szybko postępuje (jak się wydaje, ponieważ chwalą programistę), może być gotowy na naganę, jeśli zastosuje się do twojej odpowiedzi.
Mój problem z tą odpowiedzią polega na tym, że pytanie nie mówi o "zerwaniu kompilacji", ale raczej o krytycznych i głębokich błędach w systemie produkcyjnym.Hipotetycznie, jeśli żadna kompilacja nie jest zepsuta, ale system produkcyjny jest uszkodzony, ta odpowiedź nie rozwiązuje tego problemu.
Ta odpowiedź zakłada, że "skrzypiące koło smaruje się", ale w biznesie bardziej przypomina przysłowie: "Kogut, który rano pije, nocą będzie w garnku!"Głośne narzekanie może sprawić, że skarżący będzie miał więcej kłopotów niż osoba, na którą się skarży się, jeśli uzna, że jest to raczej nękanie niż uzasadnione skargi i że zbyt często ma więcej wspólnego z polityką biura niż cokolwiek innego.
@lalala Nawet jeśli kultura „poruszaj się szybko i psuj rzeczy”, musi istnieć proces pozwalający natychmiast wiedzieć, kiedy coś się psuje (np. Testy automatyczne, systemy CI, monitorowanie produkcji) i reagować na to (jeśli zmiana jestodwracalne, wycofanie go jest zwykle najszybszą odpowiedzią).Jeśli to nie istnieje, tylko „psujesz rzeczy” i wcale nie poruszasz się szybko.
@ZachLipton zgodnie z pytaniem jego zachowanie prowadzi do „zadziwiającego tempa rozwoju” i jest postrzegane pozytywnie przez kierownictwo.Nie możesz go jednostronnie „zastraszyć”, to przyniesie odwrotny skutek.Decyzję w tej sprawie musi podjąć kierownictwo.W przeciwnym razie (postrzegana) prędkość produkcji może spaść, kierownictwo zapyta, co się dzieje, a odpowiedź „tak, teraz jest wolniejszy”.Osiągnąłem, że w końcu postępuje zgodnie z protokołem / procesem ”doprowadzi do szybkiego otwarcia nowych możliwości dla PO.Myślę, że obecnie nie jest dobry moment na szukanie nowej pracy.
Greg
2020-07-16 23:10:30 UTC
view on stackexchange narkive permalink

Jeśli chodzi o skłonienie kierownictwa do działania, pomocne jest ilościowe określenie problemu w odpowiednich kategoriach (pieniądze są najlepsze, czas też jest akceptowalny).

Na przykład:

Zmiana 123 zepsuła system, co spowodowało X godzin przestoju i kosztowało Y USD w postaci utraconych przychodów.

Zmiana 456 spowodowała błędy, które zdenerwowały dużego klienta (kosztowały go itd.). Duży klient rozważa teraz ponownie swoje relacje z naszą firmą.

Zmiana 789 spowodowała awarię, której naprawienie wymagało Z godzin pracy. Ten czas nadszedł z Ważnego Projektu X. Ważny Projekt X to teraz opóźniony Z godzin.

Chodzi o to, aby ująć problem jako wpływający na biznes.

równie ważne podczas pisania takiej listy, aby zignorować rzeczy, które nie mają wpływu na biznes (bezpośrednio). Nie ma znaczenia, jak bardzo jesteś zmęczony (przepraszam), nie ma znaczenia, że ​​musisz dużo pracować (znowu przepraszam). Nie ma również znaczenia, czy ta konkretna osoba nie odpowiedziała na Twoje poprzednie próby doprowadzenia ich do porządku. Żaden z tych problemów nie jest tak naprawdę problemem biznesowym.

To, co powinni zrobić Twoi menedżerowie (i powinieneś być przygotowany na sugestie), zależy od tego, co Twoja firma już posiada. Jeśli na przykład mają być przeglądy kodu przed zatwierdzeniem, ale nie mają one miejsca lub nie są wykonywane skutecznie, można to rozwiązać. Jeśli nie masz recenzji kodu, możesz zasugerować ich rozpoczęcie (oczywiście również kosztują czas / zasoby, więc należy to zrównoważyć). Możesz wdrożyć różne schematy testowe, lub możesz użyć tych, które masz (jeśli masz) itp.

Myślę, że jest to również pomocne, ponieważ używanie bramek jakości jako bezpośredniej formy kontroli niektórych z tych zachowań może pozwolić nam lepiej sobie z tym poradzić.Ta osoba jest znana z podejścia „tylko dlatego, że mogę, to zrobię”, co zaowocowało już dodaniem pewnych reguł.
W odpowiedzi na pytanie „To naprawdę nie ma znaczenia, że musisz dużo pracować” - do tego stopnia, że odciąga to wysiłek programisty od priorytetyzowania faktycznych rezultatów OP, przyczynia się do wypalenia zawodowego i może skutkować rotacją starszych pracowników [co,OP: zastanów się!], Nie powinno się tego tak zwyczajnie zmywać.Wygląda na to, że wymaga to pracy w godzinach nadliczbowych i naprawy całego zespołu.Trzeba to uwidocznić, aby zrównoważyć fałszywe pozory produktywności zajętego, który robi karierę na gromadzeniu długu technicznego.
W ramach retoryki przydatne może być skupienie się na wpływie finansowym / biznesowym na wynik finansowy.Ale powiedzenie, że inne rzeczy „nie mają znaczenia”, jest po prostu fałszywe.Np. Dobrze wiadomo, że same pieniądze nie są najlepszym motywatorem pracowników.Jeśli dobrobyt OP jest wystarczająco zdegradowany, powinni oni (i inni deweloperzy) odejść, a wtedy biznes znajduje się w spirali śmierci.
Podczas gdy rotacja pracowników wywołuje spirale śmierci i cokolwiek z pewnością może się wydarzyć, nic w tym pytaniu nie wskazuje na to, że dzieje się to w tej konkretnej firmie.Wystąpił problem wpływający na jeden z tak zwanych „zespołów podrzędnych”.W tym kontekście kierownictwo będzie bardziej skłonne do działania w kwestiach biznesowych.Komunikowanie (pozornie poziomu rezygnacji) niezadowolenia jednej osoby lub nawet jednego podgrupy osób jest mało prawdopodobne, aby pobudzić zmiany, których poszukuje OP i jako takie nie ma znaczenia w kontekście * tej * konkretnej rozmowy.
Mike Robinson
2020-07-16 23:08:06 UTC
view on stackexchange narkive permalink

Obowiązkiem ich przełożonego jest zajmowanie się wszystkimi „kwestiami kadrowymi”. Powinieneś porozmawiać ze swoim przełożonym, opisując sytuację, aby mógł porozmawiać z drugim menedżerem.

Oczywiście powinieneś być w pełni przygotowany, aby też chcą rozmawiać z tobą i ty też jesteś zobowiązany do wykonania swojej części (tak jak oni to widzą), aby osiągnąć rozwiązanie. Przygotuj się, aby usłyszeć - i zaakceptować - że ty możesz się mylić całkowicie lub częściowo. „Bądź profesjonalny”.

Dzięki za to.Ogólnie chcę być „profesjonalny”.Przyznaję, że jest to droga dwukierunkowa i że moje zaangażowanie w tę osobę było mniejsze niż to, czego już bym się po sobie spodziewał, z pewnością jest to coś, o czym będę mówił.
mxyzplk - SE stop being evil
2020-07-16 23:35:29 UTC
view on stackexchange narkive permalink

Przeprowadzaj retrospektywy i powtarzaj swój proces, aby być odpornym na błędy jednej osoby.

Przeprowadzanie bezbłędnych retrospekcji incydentów i regularnych retrospektyw zespołów programistycznych gdzie koncentrujesz się na problemach, wszyscy dowiadują się o swoim systemie i opracowują sposoby, aby system był odporny na błędy, jest najlepszym pierwszym krokiem.

Zidentyfikuj problemy, określ ich częstotliwość i wskaźniki kosztów oraz dowiedzieć się, jak to ulepszyć. Czy potrzeba więcej testów i większego pokrycia kodu? Czy ludzie muszą angażować się częściej, aby PR były mniejsze? Czy więcej osób musi być na PR? Czy powiadomienia o błędach kompilacji są wysyłane w sposób umożliwiający podjęcie działań (na czacie, w e-mailu itp.) Do właściwej osoby?

Programista powinien mieć swobodę popełniania błędów. Powinien istnieć framework, który pomoże wszystkim programistom szybko znaleźć błędy przed przekazaniem ich dalej.

Może nadal potrzebne jest działanie personelu - może.

Niektórzy uważają, że „wszystko” jest problemem systemu. W rzeczywistości są ludzie, którzy są obojętni lub popełniają błędy i żadna rozsądna ilość zabezpieczeń programistycznych tego nie naprawi.

Jest to jednak rzadsze, niż się ludziom wydaje. Jeśli masz bardzo płodnego programistę, który tworzy 5 razy więcej kodu niż ich koledzy, to jeśli tworzy on 5 razy więcej błędów / incydentów swoich współpracowników, jest to normalne, a ja wolałbym tego pracownika od innych pracowników, ponieważ otrzymuję 5 razy więcej wyników. Tylko wtedy, gdy powodują dziesięciokrotne problemy, rachunek różniczkowy zaczyna przekraczać linię.

Nawet jeśli musisz przekazać to swojemu menedżerowi, skup się na rozwiązaniach. „Rozmowa z” menadżerem i jego menadżerem „rozmawiająca” z nimi nie działa i zwykle nie działa. Zaangażuj go w naprawienie problemu. „W jaki sposób błędy w pracy twojego zespołu mogą nie wpływać na nasz? Jakie umowy lub zabezpieczenia techniczne możemy wprowadzić, aby było to najlepsze dla wszystkich?” Pamiętaj, że TY nie powinieneś tego robić, ale Twój menedżer powinien rozmawiać z menedżerem innego zespołu.

To, czego zaniedbujesz w swojej analizie 5x, to to, że programiści tacy jak opisany OP nie * naprawiają * 5x problemów.Ich produktywność uzyskuje się jedynie poprzez wymywanie produktywności wszystkich innych, którzy muszą posprzątać bałagan.W przeciwnym razie, dlaczego nie powiesz całemu działowi, żeby programował jak ten facet?
Retrosy są ostatnio wściekłe i myślę, że mają sens.Jednak wykonanie retro i upewnienie się, że są wywoływane regularnie, a nie gdy pojawia się problem, określ, czy to pomaga, czy po prostu wprowadza więcej polityki do środowiska.
Cóż, proces powinien również angażować zespół we wspieranie / naprawianie błędów we własnym kodzie.I tak, musisz uważnie przestrzegać nienagannego / uwzględniającego winy formatu retro, aby skupić się na rzeczy (wiele informacji jest dostępnych pod linkiem, który dodałem i / lub w Google).
Retrospektywy określam jako regularnie planowane spotkania.Jeśli występują tylko wtedy, gdy pojawia się problem, są to najlepsze sekcje zwłok, aw najgorszym przypadku gry z obwinianiem palcem.Doskonalenie procesów a gaszenie pożarów.
Istnieją dwa rodzaje retrospekcji: retrospektywy incydentów i retrospektywy zespołowe / sprinterskie.Obie są pomocne.
Uprawnienia do oświadczenia?Moim zdaniem nie ma dwóch.to są sekcje zwłok.używanie tej samej nazwy (jako części frazy) prowadzi do niejasnych oczekiwań i mieszanki obaw.W końcu Agile jest inny w każdej firmie i takie zamazywanie się słów prowadzi do problemów z moim doświadczeniem.Jeśli podoba ci się wyrażenia i działają dla ciebie, to dobrze i nie stanowi problemu.Po prostu nie byłbym tak zdecydowany dla innych.
Wiele osób woli nie używać terminu „sekcja zwłok” ze względu na jego negatywne konsekwencje, ale znowu krótkie wygooglowanie zapewni Ci aktualne informacje na temat preferowanego użycia
JasonH
2020-07-20 01:17:08 UTC
view on stackexchange narkive permalink

Zgadzam się z innymi, którzy opowiadali się za używaniem systemu CI i testów. W moim uruchomieniu uruchamiamy testy dla każdego żądania ściągnięcia i tylko te, które przejdą, mogą zostać scalone. Po scaleniu testy muszą przejść ponownie, zanim najnowsze scalenie zostanie wdrożone w środowisku produkcyjnym. A jeśli żądanie ściągnięcia przerwie produkcję, jest natychmiast cofane. Następnie to programista musi go wyczyścić, ponownie przejść przez przegląd kodu (zwykle za pomocą nowych testów, aby wykazać, że problem został rozwiązany) i upewnić się, że pomyślnie przeszedł testy. Nadal mamy problemy, które spowalniają produkcję, ale tylko na kilka minut. W razie wątpliwości najpierw cofamy się, a później zadajemy pytania.



To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 4.0, w ramach której jest rozpowszechniana.
Loading...