Pytanie:
Jak poradzić sobie z nadrzędnymi procesami rozwojowymi połowy moich kolegów pod najmniejszą presją?
Eric Yan
2020-07-06 20:48:26 UTC
view on stackexchange narkive permalink

Jestem programistą. Mój zespół ma wiele procesów programistycznych, przez które kod powinien przejść, aby dostać się do gałęzi głównej. Rzeczy takie jak testowanie jednostkowe i przegląd kodu.

Pod najmniejszą presją ze strony dowolnego autorytetu (właściciela produktu, programisty pośredniego, mistrza scrumu, chęci ukończenia czegoś przed planowaniem standupu / sprintu, nawet przypadkowego sprzedawcy kto twierdzi, że coś jest „pilne”), pominie to i zmusi do podjęcia decyzji o opanowaniu go, aby wprowadzić go do produkcji. Nasz szef zgadza się, że nie powinniśmy tego robić, ale nie chce ciągle walczyć z ludźmi, więc po prostu pozwala mu się ślizgać i mówi, żebym powiedział innym programistom, aby się cofnęli. 80% kodu wychodzi teraz bez podążania za tym procesem.

Inni programiści uważają, że prawdopodobnie zostaną tu najwyżej przez rok, więc pozwolenie na gnicie kodu jest tańsze niż codzienne spory z różnymi ludźmi, którzy nie cenią starannej inżynierii.

Co mogę z tym zrobić?

Komentarze nie służą do rozszerzonej dyskusji;ta rozmowa została [przeniesiona do czatu] (https://chat.stackexchange.com/rooms/110350/discussion-on-question-by-eric-yan-how-to-deal-with-half-my-colleagues-overridin).
21 odpowiedzi:
Matthew Gaiser
2020-07-06 21:46:03 UTC
view on stackexchange narkive permalink

Zasadniczo potrzebujesz organizacji, aby doceniać ją jako całość.

Byłem z tobą kilka miesięcy temu. Jestem teraz jednym z tych programistów, na których jesteś sfrustrowany.

W rzeczywistości ludzie mają na myśli pewne ramy czasowe, które nigdy się nie zmieniają. Demonstrujesz im coś, a potem oni są „gdzie to jest? Gdzie to jest?” I będą to robić za każdym razem. Dotyczy to ludzi, którym zależy na tym, by sprawy toczyły się naprzód. Organizacje również cenią pewne rzeczy, a te wartości decydują o tym, jak się je robi.

Rozmowa zwykle wygląda następująco:

Osoba: „Hej, gdzie jest ta funkcja, którą pokazałeś mi wczoraj ? "

Ja:„ Oczekuje na sprawdzenie kodu. ”

Osoba:„ Cóż, potrzebujemy tego do kontroli jakości / naprawy problemu z produkcją / umieszczenia go w wersji demonstracyjnej sprintu / dla klienta spotkanie jutro ”

Ja:„ To jest za sprawą, o którą pytałeś mnie wczoraj w kolejce. ”

Osoba:„ Cóż, potrzebujemy tego do kontroli jakości / naprawy problemu z produkcją / mam to w wersji demo sprintu / na jutrzejsze spotkanie z klientami ”

Ja:„ Zobaczę, co da się zrobić. ”

Osoba (godzinę później):„ Jakaś aktualizacja? potrzebuję go do kontroli jakości / naprawy problemu z produkcją / umieszczenia go w demonstracji sprintu / na jutrzejsze spotkanie z klientem. ”

Po miesiącach i miesiącach git push dużo łatwiejsze do zrobienia. Zwłaszcza, że ​​dla nich jest to pilne, więc są bardzo zmotywowani, aby go zdobyć. Pod wieloma względami mają rację, ponieważ terminy są rzeczywiste i nie są czymś, co mogą kontrolować. Więc nawet z perspektywy bycia jednostką biznesową jest to prawdopodobnie właściwa decyzja.

Aby procesy przetrwały, organizacja jako całość (lub przynajmniej cała jednostka biznesowa) musi je cenić. Twoja organizacja najwyraźniej tego nie robi. Czy powoduje to więcej błędów? Prawdopodobnie. Ale ludzie spoza oprogramowania zaakceptowali błędy jako coś, co się zdarza, więc zapobieganie im często nie jest głównym priorytetem.

To kwestia kompromisów, zarówno dla organizacji, jak i dla poszczególnych programistów.

Jeśli chcesz to naprawić, po prostu musisz przekonać sprzedawców, Scrum master i właściciel produktu, że warto nie omijać tego procesu. Prawdopodobnie uważają to za biurokrację.

Nie wiem, że musi to być cenione przez każdą osobę w organizacji, ale musi to być cenione przez osoby odpowiedzialne.Jeśli nie masz kierownictwa chętnego do wspierania cię, gdy komuś powiesz „Nie, nie jest jeszcze gotowe, nadal wymaga przeglądu kodu”, to masz spieprzone.Jeśli tylko połowa programistów robi to, ponieważ zarządzanie pozwala im uciec bez robienia tego, druga połowa szybko się rozczaruje i przestanie
@Kevin w takim przypadku zarządzanie sprawami musiałoby nie tylko go docenić, ale także egzekwować.Jeśli kierownictwo uzna to za wartościowe, sprzedaż nadal nie ma powodu, aby Cię nie zasypywać, a na deweloperze nadal spoczywa obowiązek utrzymania solidności.
tak, to właśnie powiedziałem
@MatthewGaiser "to prawdopodobnie właściwa decyzja" - kto z Twojego punktu widzenia powinien podjąć taką decyzję?Deweloper, jego lider, właściciel produktu czy jedyna osoba odpowiedzialna za termin?
„Po prostu musisz przekonać sprzedawców, mistrza Scrum i właściciela produktu, że nie omijanie tego procesu ma wartość”.Ci ludzie już słyszeli o wartości, ale ich to nie obchodzi.Możesz ulepszyć kulturę firmy tylko wtedy, gdy jesteś na stanowisku stróża bramek (niekoniecznie na stanowisku kierowniczym), gdzie możesz zablokować coś przed wdrożeniem, a szef cię poprze.Oznacza to, że dziadek wesprze twojego szefa ... że szef wnuczka poprze go i tak dalej.
W przypadkach, gdy osoby postronne zaczynają wtrącać się w twój proces, po prostu przestań im wyjaśniać swój proces i nie dawaj im haczyków do dalszej argumentacji.W firmie, w której refaktoryzacja była ciągle pomijana z powodu „pilnych” terminów, po prostu zacząłem liczyć refaktoryzację jako prace rozwojowe, które były częścią szacunku.Zamiast „2 dni rozwoju, 1 dzień przeglądu / refaktoryzacji, które kończyłyby się jako„ wypychanie po 2 dniach ”, powiedziałem zamiast tego„ 3 dni rozwoju ”, a kierownictwo straciło możliwość spierania się, które części mojej pracy mogę pominąć, ponieważnie obchodzi ich to osobiście.
@HenryM Istnieje dość duża różnica między powiedzeniem komuś czegoś a przekonaniem kogoś.Mówienie komuś polega na autorytecie, przekonanie można zrobić na wiele sposobów.
@GregoryCurrie Ktoś, kto jest doświadczonym menedżerem technicznym na poziomie wiceprezesa, powiedział mi, że może minąć 5 lat, zanim przekona właściciela firmy, aby zrobił wszystko we właściwy sposób, więc jestem trochę sceptyczny, że mogę to zrobić, zanim większość firm upadnie lub zostanie sprzedana.Ale?
@HenryM: Jest to silnie zależne od kultury organizacyjnej.W mojej firmie standardowa odpowiedź na pytanie „Wypuśćmy nowe funkcje bezpośrednio do produktu” to coś w rodzaju „Dlaczego nienawidzisz swoich użytkowników?”Ale startup będzie działał zupełnie inaczej.
@Kevin Co może prowadzić do innego problemu "zajmuje 7 miesięcy, aby nowa wersja została opublikowana na wszystkich serwerach produkcyjnych na całym świecie, ponieważ każda organizacja krajowa musi również zielone światło dla wersji i innych długotrwałych procesów".Więc tak nie jest takie proste.
@Voo: Celem SRE jest szybkie poruszanie się bez zepsucia rzeczy.W moim zespole generalnie naciskamy raz w tygodniu, chyba że budżet błędów zostanie wyczerpany.
@Flater Czy rozważyłbyś przekonwertowanie tego komentarza na odpowiedź?Daje pomysł, że żadna z obecnych odpowiedzi nie spełnia (a zatem jest to prawidłowa odpowiedź), ale obecnie jest trudna do znalezienia, ponieważ jest pochowana w sekcji komentarzy.
@ivan_pozdeev: Nie jestem pewien, czy jest to pełna odpowiedź, ale dodałem ją na Twoją prośbę.
Wujek Bob ma do powiedzenia kilka interesujących rzeczy na temat „Zobaczę, co mogę zrobić” oraz tego, jak menedżerowie to usłyszą, a co ogólnie oznacza osoba mówiąca.
W bardziej zorganizowanych miejscach, w których pracowałem, ludzie robiąc dema używają staging (lub nawet gałęzi dev / ci) zamiast prod.Coś trafia do prod tylko wtedy, gdy wszyscy są z tego zadowoleni i przejdzie przez automatyczny potok testowy podczas etapowania.
Kevin
2020-07-06 21:12:58 UTC
view on stackexchange narkive permalink

Nasz szef zgadza się, że nie powinniśmy tego robić, ale nie chce nieustannie walczyć z ludźmi, więc po prostu odpuszcza i każe mi powiedzieć innym programistom, żeby się wycofali. 80% kodu wychodzi teraz bez

Prosi ciebie o wykonanie jego pracy. Całkowicie nieprofesjonalny. To nie powinna być ciągła walka. To powinno być absolutne prawo i walka zakończyłaby się po pisemnej naganie lub dwóch.

Naprawdę niewiele można zrobić w tej sytuacji. Ty i inni programiści, którym zależy, możecie spróbować presji rówieśników, ale nie wydaje się, że jest wystarczająco dużo tej troski lub nie (co zrozumiałe) zrezygnowaliście, aby coś zmienić.

Chciałbym zacznij uczciwie szukać innej pracy

EDYTUJ:

Inną opcją, jeśli czujesz, że próbowałeś już wszystkiego ze swoim szefem, byłoby przejście ponad głową szefa do swojego szefa i staraj się rozwiązać ten problem na dalszych etapach łańcucha. Musiałoby to być zrobione ostrożnie i prawdopodobnie anonimowo, ponieważ omówienie głowy szefa może mieć poważne konsekwencje.

Inni też szukają innej pracy, powiedzieli OP.
Prawie każda odpowiedź na tej stronie kończy się słowami „szukaj innej pracy” ...
@ ДамянСтанчев Wiele pytań na tej stronie stwarza problemy, których OP nie może rozwiązać, więc to ma sens.
W zależności od tego, czy „szefem” w tej historii jest kierownictwo najwyższego szczebla, czy też nie, wstrzymywałbym się z całą poradą dotyczącą „szukania nowej pracy”.Jeśli zostawisz jakąkolwiek pracę, w której jest jedna osoba, która nie wykonuje swojej pracy prawidłowo, trudno byłoby ci znaleźć zatrudnienie.Zamiast tego, tam gdzie to możliwe, przejmij niechęć szefa do egzekwowania dobrych praktyk z _z ich_ szefem.Opierając się na wypowiedziach własnego szefa (zgadza się, że należy to zrobić, a następnie nie zadaje sobie trudu, aby to zrobić), masz wystarczający dowód, że tak naprawdę nie wykonuje swoich obowiązków.
@Mast: Zgodnie z tą samą logiką, każde zgłoszenie do pomocy technicznej powinno być zakończone komunikatem „zdobądź nową [rzecz, która nie działa]”.Nakazanie komuś odejścia z pracy jest masowym przemilczaniem wpływu / wysiłku związanego z odejściem z pracy, a na losowy plakat internetowy naprawdę nie ma wpływu konieczność poszukiwania nowej pracy przez OP, więc porady są wydawane znacznie częściej niżplakat sam by za tym podążał.
@Flater Zgadzam się z twoim ostatnim komentarzem, ale w końcu to najlepsza odpowiedź na pytanie OP: jeśli naprawdę zależy ci na jakości kodu, musisz zdać sobie sprawę, że przez większość czasu nie możesz sam zmienić całej firmy, w której pracujesz, jeśli kierownictwo tego nie robit działać.Walczy z wiatrakami.Bardziej czytam to jako „nie pozwól, żeby ci się to za bardzo obciążało, jeśli przekroczy próg, zmień” zamiast „musisz zmienić pracę”
@Flater, ale to nie jest jedna osoba.to całe środowisko pracy, od kierownictwa, przez innych programistów, po ludzi w innych działach.I to do tego stopnia, że nawet inni dobrzy programiści się poddali.To nie jest coś, co można łatwo naprawić.Zgadzam się, że łatwo jest polecić zmianę pracy przypadkowemu nieznajomemu w Internecie, może to być trochę za bardzo rzucane, ale naprawdę nie widzę tutaj rozwiązania
@Kaddath (i Kevin) Istnieje rozsądna granica, którą należy wyznaczyć, gdzie dopuszczalne jest zwolnienie za kaucją w firmie / środowisku pracy, w porównaniu do sytuacji, gdy na pierwszy rzut oka jest to po prostu toksyczne podejście.Odpowiedź trafnie wskazuje na fakt, że istnieje _jeden_ menedżer, który nie ciągnie za siebie.Zachowanie innych programistów można przypisać zasadniczo robieniu tego, co im powiedziano, co może prowadzić do złych praktyk, ale w rzeczywistości nadal jest to „bycie dobrym pracownikiem”.Nie ma powodu, by sądzić, że jeśli ten menedżer zostanie usunięty z równania, problem będzie nadal występował w tym samym stopniu.
@Flater Co sądzisz o mojej edycji?
@Kevin Ta sytuacja kończy się tylko dlatego, że szefowi nie udało się przekonać zespołu, że pozostanie dłużej niż rok to dobry pomysł.Nawet jeśli szef będzie stanowczo żądał, prawdopodobnie tylko szybciej wypchnie ich za drzwi.
@ ДамянСтанчев każdy ma listę rzeczy, z powodu których rzuciłby pracę.Chociaż istnieje pewne oczywiste pokrywanie się tej listy, w praktyce ta lista jest nieco inna dla nas wszystkich, więc w przypadku każdego niepożądanego stanu rzeczy przynajmniej * część * ludzi zrezygnuje z niej.Więc prawie dla każdego, prawdopodobnie przynajmniej jedna osoba będzie się z tym bawić.
Ertai87
2020-07-07 02:25:55 UTC
view on stackexchange narkive permalink

W tej chwili: nic nie rób. Wszystko jest w porządku, nic nie jest zepsute.

Następnym razem, gdy pojawi się błąd, który zepsuje produkcję: krzycz z czubka płuc (nie dosłownie) o tym, jak tego błędu można było uniknąć, gdybyśmy mieli testy, aby złapać to. Wyjaśnij, jak staranne testowanie i poświęcanie czasu ma na celu uniknięcie tego typu sytuacji. Określ, ile pieniędzy straciła firma i ile przestojów miała usługa z powodu błędu, który nie został wychwycony, ale mógłby być, gdyby programiści mieli więcej czasu na zachowanie ostrożności.

Zarządzanie jest zawsze bardziej otwarte do zmiany procesu, gdy widzą wartość z pierwszej ręki i natychmiast. Jeśli mówisz abstrakcyjnie, na przykład „cóż, naprawdę powinniśmy przeprowadzić testy, ponieważ pewnego dnia możemy mieć problem, który może zlikwidować nasze serwery”, nikogo to nie obchodzi, ponieważ tak prawdopodobne, jak może się zdarzyć, może się również nie zdarzyć, a teraz to się nie dzieje, więc nikogo to nie obchodzi. Jednak z pewnością to się w końcu wydarzy i wtedy możesz wskazać to jako problem i natychmiast pokazać wartość, a nie abstrakcyjnie.

Oczywiście kierownictwo może wrócić i powiedzieć „cóż, gdybyście byli lepszymi programistami, nie robilibyście błędów i nie potrzebowalibyście testowania ”. W tym momencie odświeżasz swoje CV i znajdujesz inną pracę. Każdy programista popełnia błędy; nie ma programisty, który nigdy nie wysłał błędnego kodu, a obowiązkiem firmy jest dać programistom czas na upewnienie się, że ich kod jest jak najbardziej wolny od błędów.

„Jak można było uniknąć tego błędu, gdybyśmy mieli testy, aby go wykryć” - czy to naprawdę możliwe?Istnieje ogromna luka między konfiguracją testów regresji a faktycznym ulepszeniem ich do poziomu, w którym ma prawdziwą wartość biznesową.Chodzi mi o to, że podążanie za twoją radą może postawić OP w bardzo niewygodnym miejscu, gdy kierownictwo wymusza PR / regresję, a podobny błąd wystąpi w produkcji w przyszłym tygodniu.
Jako ktoś, kto naciskał na to, aby dany projekt miał testy i znaczną ilość czasu na refaktoryzację rzeczy, które są kruche, ale był w stanie przeprowadzić * niektóre * refaktoryzacje dopiero po dosłownym roku pracy nad nim, ta odpowiedź brzmi przyjemnie w teoriiale w praktyce całkowicie destrukcyjne.Jeśli nie będziesz nadążać za konserwacją kodu, otrzymasz dużo kodu, którego nie odważysz się dotknąć, gdy ktoś w końcu zdecyduje, że możesz poświęcić trochę czasu na utrzymanie tego kodu, ponieważ każda wprowadzona zmiana możemożesz go nie zepsuć i nie masz pojęcia, kiedy i dlaczego tak się dzieje.
„jak można by uniknąć tego błędu, gdybyśmy przeprowadzili testy, aby go wykryć” Byłem tam, nie działał.Pod koniec dnia firma zrobi to, co zrobi firma.
Dwa udoskonalenia.Pierwszym z nich jest spamowanie zespołu, mówiąc: „będziemy pracować w ten sposób, ale (szef) zaplanuje nam czas, abyśmy to naprawili później”.Drugim jest posiadanie systemu informacji o wydaniu, który ma oddzielne informacje o wydaniu, wewnętrzne i zewnętrzne, a wewnętrzna informacja o wydaniu mówi pogrubioną czcionką „tego nie zrobiliśmy i musimy to opisać na następny raz”.W ten sposób się zakryłaś.Przekazałeś planowanie swojemu kierownikowi;a kierownictwo podpisało się na wersji, w której wyraźnie przedłożyłeś datę wydania nad jakość i określiłeś, w jaki sposób.
... Jeśli klient wysadza w powietrze z powodu braku przeglądu / testów, a firma w rezultacie traci pieniądze, nie lekceważ chęci właścicieli firm, aby znaleźć winowajcę.Zgodnie z ISO-9001 identyfikacja znanych problemów, takich jak ta, jest * pozytywną * rzeczą, ponieważ podejmujesz proaktywne kroki w celu poprawy w przyszłości.Nie poddawaj się presji, aby rozwodnić wewnętrzną informację o wersji, ponieważ powodem, dla którego masz wewnętrzną informację o wersji, jest uchwycenie znanych problemów, o których nie zamierzasz powiedzieć klientowi.
@iehrlich Większość błędów nie jest trudna do wykrycia i naprawienia.Proste testy jednostkowe i integracyjne mogą wykryć większość problemów, a staranne testy jednostkowe i integracyjne mogą wykryć prawie wszystkie problemy.W tej chwili OP nie ma swobody dla zainteresowanych stron, aby to zrobić, a ponadto zainteresowane strony nie rozumieją wartości takiego działania.Czy testowanie gwarantuje wykrycie każdego błędu?Nie. Czy jest duże prawdopodobieństwo, że wykryje większość błędów?Tak.Czy niektóre testy zapewniają wartość niż brak testowania?Zdecydowanie.
@Graham Ta sugestia jest fajna w teorii, ale: 1) OP nie wie, jakie błędy wypuszcza, ponieważ nikt w jego zespole nie testuje, czy są jakieś błędy.Gdyby były błędy, jestem pewien, że inżynierowie z zespołu nie wysyłaliby błędnego kodu „tylko dlatego”.Naprawienie ich zajmie trochę czasu.Inżynierowie uważają, że kod jest wolny od błędów, ale nie zweryfikowali tego w żaden sposób.Dlatego taka „wewnętrzna informacja o wersji” nie zadziała.Problem polega na tym, że interesariusze nie dają OP możliwości testowania i naprawiania tych błędów.
@Ertai87 Oczywiście nie musisz wiedzieć, jakie są nieznane błędy.Tam, gdzie nota wydania powinna zawierać wyniki testów, zamiast tego zawiera pogrubione stwierdzenie: „To nie zostało przetestowane zgodnie z procedurami jakości. Klienci mogą znaleźć błędy, które zostałyby rozwiązane przez testowanie. (Menedżer) wymaga, aby zostało to wydane w stanie, w jakim jest przeznaczonepowodów komercyjnych. Przyszłe wersje powinny przeprowadzać testy. ”Naprawdę to zrobiłem i miałem to zatwierdzone przez kierownika i kontrolę jakości.To powiadomienie pozostało w informacjach o wersji do czasu faktycznego zakończenia testów.
@Ertai87 I BTW, jeśli Twoja organizacja przestrzega akredytacji ISO-9001, wtedy interesariuszem, który ma znaczenie, jest kierownik ds. Zapewnienia jakości.Jeśli chodzi o walkę z terminami i jakością, są kluczowym sprzymierzeńcem.
@Graham Zakładasz również, że firma OP ma informacje o wydaniu.Nigdy w życiu nie pracowałem nad projektem, który miałby informacje o wydaniu.Przede wszystkim właśnie ogłosiliśmy zainteresowanym stronom, kiedy funkcje, których chcieli, zostały zaimplementowane, a „wewnętrzne informacje o wydaniu” były błędami w naszym module śledzenia zgłoszeń.
@Ertai87 Przez 25 lat nigdy nie pracowałem nad projektem, który by tego nie robił, ponieważ zawsze pracowałem w firmach, które były ISO-9000 (lub BS-5750, oryginał).Niedawno dołączyłem do firmy, która nie ma odpowiednich procesów deweloperskich, ponieważ oprogramowanie dla nich było przemyślane.Jedną z rzeczy, które przynoszę na tę imprezę, są odpowiednie praktyki tworzenia oprogramowania, a informacje o wydaniu są tego częścią.Bez formalnego procesu wydania oprogramowanie nie zostanie wydane, po prostu ucieknie!
Głosowałem za tą odpowiedzią, ale częściowo z pobożnych życzeń.Mój cynik wierzy, że to prawdopodobnie przysporzy ci jeszcze większych kłopotów.Na przykład.„Jeśli wiedziałeś, że to problem, dlaczego tego nie naprawiłeś”.Są szanse, że gdybyś to wszystko wykrzyczał, stałbyś się miłym kozłem ofiarnym, gdybyś zamiast tego przypinał rzeczy.
@TasosPapastylianou Na co odpowiedź brzmi: „Ponieważ zespół biznesowy powiedział, że jutro powinno to być na zewnątrz, chociaż powiedzieliśmy, że potrzebujemy więcej czasu, następnym razem daj nam więcej czasu”.Na co mogą powiedzieć „tak, zrobimy” lub „nie, nie zrobimy” i spróbować obwinić cię jeszcze bardziej.W pierwszym przypadku wszystko jest dobrze, w drugim znajdź inną pracę.
@Ertai87 Myślę, że to jest zbyt czarno-białe.Przypuszczalnie, gdybyś był szczęśliwy, mogąc znaleźć inną pracę _ w każdym razie_, nie musiałbyś czekać, aż nastąpi następny błąd powodujący załamanie produkcji, tylko po to, by być pasywnym i agresywnym dla szefa.W takim przypadku ten drugi wynik jest w rzeczywistości dość zły, jeśli wszystko, na co liczyłeś, to naprawienie złych procesów w preferowanym miejscu pracy.Poza tym, szczerze mówiąc, takie podejście jest złe.Tak, to była „wina” kogoś innego, ale tego rodzaju odchylenie odpowiedzialności świadczy o braku odpowiedzialności i inicjatywy ze strony pracownika.
@TasosPapastylianou Jeśli OP mówi „Naprawdę uważam, że powinniśmy poświęcić więcej czasu i nie wdrażać jutro”, a zespół biznesowy mówi „Chrzań, idziemy w tym stylu Leeroya Jenkinsa”, to nie odwraca się, gdy OP zgłasza tak dużo kierownictwukiedy (nie jeśli) projekt eksploduje.Nie jest też pasywno-agresywne stwierdzenie: „Powiedziałeś zrobić X, ostrzegałem X to zły pomysł, i tak powiedziałeś, żeby zrobić X, zrobiłem X, jak powiedziałeś, wszystko eksplodowało”.To stwierdzenie oparte na faktach.Jeśli to stwierdzenie faktyczne powoduje cofnięcie się do OP, jest to wystarczający powód do znalezienia innej pracy przez IMO.
Kevin
2020-07-07 18:43:49 UTC
view on stackexchange narkive permalink

Błędnie zdiagnozowałeś swój problem.

Co widzisz w przypadku omijania standardów, recenzji itp.? To symptom twojego problemu.

Twój rzeczywisty problem to połączenie dwóch rzeczy:

  • Twój szef nie chce być konfrontacyjny w różnych sprawach
  • Twoi współpracownicy postrzegają pracę jako tymczasową i wykonują tylko minimum

Twój szef skutecznie delegował konfrontację z obszarem biznesowym do Twoich współpracowników ... a Twoi współpracownicy są po prostu idą z prądem, dopóki nie znajdą innej pracy. Byłbym bardzo zdziwiony, gdyby standardy były jedynym tego objawem. Czy Twoje priorytety są podyktowane najgłośniejszymi krzykami z wyższych sfer, a nie tym, co najbardziej pomaga biznesowi? To nie jest odrębny problem od twojego pytania - to jest coś, co również wynika z tego połączenia. Itd - prawdopodobnie istnieją dziesiątki problemów, dużych i małych, które wynikają z tych dwóch czynników.

Realistycznie nie możesz naprawić tego problemu. Twoje najlepsze zdjęcia to:

  • Nakłonienie szefa do rozpoczęcia pracy lub zastąpienie go kimś, kto to zrobi.
  • Sprawienie, by atmosfera w pracy była na tyle przyjemna, aby Twoi współpracownicy postrzegał to jako karierę.
Myślę, że nie zidentyfikowałeś też prawdziwych problemów.„Właściciel produktu” jest właścicielem produktu.Jeśli chcą X, muszą mieć X. W sposób pośredni uzyskują również stabilność Y.Jedynym problemem jest to, że gwarancja stabilności jest „dorozumiana”. Jeśli występuje blowback, właściciel produktu musi być za to odpowiedzialny.W przypadku każdego żądania powiadom właściciela produktu i powiedz, że potrzebujesz jego podpisu.Kiedy sprawy idą na bok, pojawia się łańcuch odpowiedzialności.
TomEberhard
2020-07-07 11:31:38 UTC
view on stackexchange narkive permalink

Sprzedawcy, którzy potrzebują funkcji w swojej wersji demonstracyjnej, mogą skonfigurować oddział demonstracyjny i serwer demonstracyjny. Po prostu wepchnij wszystko, czego pilnie potrzebują, a następnie scal to z powrotem do gałęzi deweloperskiej i ostatecznie do gałęzi głównej, po zakończeniu testów jednostkowych i przeglądu kodu.

Pomijanie procesu, aby uzyskać coś przed końcem sprintu lub przed standup jest głupi, a krótkoterminowe zyski zostaną zrekompensowane koniecznością naprawy czegoś w produkcji. Twój zespół musi zrozumieć wartość testów i przeglądu kodu, a także być może będziesz musiał zrewidować swoje szacunki punktów fabularnych, jeśli spieszysz się z niedokończonymi rzeczami przed końcem sprintu.

W jednym miejscu, w którym pracowałem, mieliśmy oddziały dla indywidualnych sprzedawców.Okazało się to niezwykle przydatne, ponieważ oznaczało, że każdy z nich miał również swoje własne środowisko demonstracyjne z własnymi danymi.Daliśmy im skrypty do tworzenia kopii zapasowych i przywracania środowiska w dowolnym momencie, aby mogli skonfigurować dane testowe do wersji demonstracyjnej, zapisać je, a następnie przywrócić do poprzedniego punktu.Działa dobrze, jeśli masz zasoby infrastruktury do jej obsługi.
Jeśli nie masz nic przeciwko pytaniu, jak te gałęzie zmieniły się w środowiska demonstracyjne?
Flater
2020-07-09 00:51:06 UTC
view on stackexchange narkive permalink

W przypadkach, gdy osoby z zewnątrz zaczynają wtrącać się w Twój proces, po prostu przestań im wyjaśniać. Każdy fragment informacji, który im podasz, daje im nowy punkt zaczepienia do argumentacji, dlaczego powinieneś / nie powinieneś czegoś robić.

W firmie, w której refaktoryzacja była ciągle pomijana z powodu "pilnych" terminów (ja używam cudzysłowów ponieważ wszystko było zawsze priorytetem bez wyjątków), po prostu przestałem wspominać o refaktoryzacji jako oddzielnym (a tym samym możliwym do indywidualnego pominięcia) kroku i zacząłem liczyć refaktoryzację jako prace rozwojowe, które były częścią oszacowania.

Zamiast „ 2 dni rozwoju, 1 dzień przeglądu / refaktoryzacji ”, co zawsze wywoływało taką samą reakcję ze strony kierownictwa („ Potrzebuję wydania po 2 dniach, nie mamy czasu na refaktoryzację ”), zamiast tego powiedziałem„ 3 dni rozwoju ” i nie przerwał tego dalej. Kierownictwo straciło zdolność do spierania się, które części mojej pracy mogę pominąć tylko dlatego, że ich osobiście to nie obchodzi.

Refaktoryzacja i przegląd kodu, z perspektywy zarządzania krótkoterminowego, to „marnotrawstwo” czasu, który można poświęcić na kolejną płatną pozycję. Ale radykalnie poprawia jakość życia programistów, co zmniejsza wypalenie programistów i ludzi rezygnujących z rezygnacji, co radykalnie poprawia długoterminową wydajność zespołu programistów.

W firmach, w których jakość kodu i odejście deweloperów w mniej niż rok to kwestia ciągły problem, to (z mojego doświadczenia) prawie zawsze przypisywane jest kierownictwu, które wtrąca się w procesy rozwojowe, których nie doceniają lub nie rozumieją wartości. Pracowałem w kilku takich firmach.

Niektórzy menedżerowie rozumieją znaczenie jakości życia swoich pracowników, a niektórzy menedżerowie albo nie dbają o to, albo ich to nie obchodzi - tak czy inaczej, wynik jest podobnie. Kiedy mam do czynienia z menedżerami należącymi do tej drugiej kategorii, zawsze jestem oszczędny w szczegółach, więc nie wtrącają się tam, gdzie nie powinni się wtrącać.

+1, mówi Bob Martin - „nigdy nie proś kierownika o pozwolenie na refaktoryzację. Jesteś programistą. Refaktoryzacja to coś, co robisz”.
Doskonała uwaga.To idzie w parze z przysłowiem „Planuj wyrzucić”.Istnieje ideał iteracji w tworzeniu oprogramowania oraz rzeczywistość okrucieństwa i zależności.Potrzebujesz czasu na wypróbowanie podejść, popełnienie błędów, uświadomienie sobie, że są one błędami i naprawienie ich, zanim staną się długiem technicznym.W przeciwnym razie staje się to kosztem utopionym i często kończy się na „starszych” (kruchych) aplikacjach, które „działają”, więc „po co się z tym bawić?”.
bytepusher
2020-07-07 03:16:27 UTC
view on stackexchange narkive permalink

Tę bitwę wystarczy stoczyć tylko raz, jeśli przekonasz swojego szefa i wystarczającą liczbę współpracowników do skonfigurowania systemu uprawnień, który po prostu na to nie pozwala.

Używamy GitHub, ale innych usług mają podobne opcje, aby umożliwić scalanie do głównej gałęzi tylko po zatwierdzeniu kodu przez właściciela kodu. Oczywiście tylko ci, którzy poważnie traktują ten proces, powinni być właścicielami kodu.

Po ustaleniu stanie się to nową normą. Niektórych procesów najlepiej nie pozostawiać przypadkowi.

Główne argumenty, które przedstawiłbym menedżerowi, dlaczego należy egzekwować przeglądy kodu:

  • przegląd kodu należy do najczęściej skuteczne środki zapobiegania błędom. Osobiście uważam je za skuteczniejsze niż testy (choć trzeba mieć jedno i drugie!). Jeden dobry programista może zapobiec najgorszemu z wielu mniej doświadczonych lub zmotywowanych programistów.
  • wystarczy jeden poważny błąd, aby spowodować potencjalnie poważną utratę funkcjonalności i / lub danych. Co gorsza, w pewnym sensie jest uszkodzenie danych, które może pozostać niewykryte przez jakiś czas i sprawić, że procedury odzyskiwania, takie jak kopie zapasowe, będą praktycznie bezużyteczne. Zależy to oczywiście od produktu.
  • błędy prawdopodobnie spowodują bezpośrednie koszty dla firmy w postaci utraconych przychodów i / lub klientów (ponownie zależy to od produktu, ale niewielu może sobie pozwolić na być podziurawionym błędami)
  • jako bonus, recenzje są świetnym narzędziem szkoleniowym
to.po prostu skonfiguruj ochronę gałęzi i uruchom testy w swoim potoku CI przed zezwoleniem na scalenie ... https://docs.github.com/en/github/administering-a-repository/configuring-protected-branches
Bardicer
2020-07-07 21:20:18 UTC
view on stackexchange narkive permalink

Użytkownicy końcowi (sprzedaż, obsługa klienta, klienci / klienci / partnerzy itp.) nie powinni ogólnie mieć bezpośredniego dostępu do zespołu programistów. (Jeśli sekretarka, sprzedawca lub dział obsługi klienta dzwoni bezpośrednio do programistów / wysyła e-maile do programistów, należy się tym zająć i powinni oni skontaktować się z interfejsem biznesowym zespołu ... czyli strażnikiem).

Zespół programistów powinien skierować wszelkie pytania dotyczące statusu poprawki / zmiany / funkcji do strażnika zespołu (technika / kierownik zespołu, BA, PM, PO, cokolwiek).

Ponieważ jest to niemożliwe Aby całkowicie odizolować zespół programistów od reszty organizacji, ważne jest, aby strażnik nie był „człowiekiem tak”, był dumny ze swojej pracy i rozumiał pojęcie „pośpiech to marnotrawstwo”.

Jeśli robisz zwinne podejście do programowania ze sprintami / retrospektywami, jako część zespołu programistów możesz poruszyć to w retrospekcji. „Mieliśmy przepchniętych wiele zgłoszeń bez wystarczających testów i weryfikacji, musimy nad tym popracować”. Właśnie dlatego retrospektywy są tak ważne - „Co poszło dobrze, co poszło źle, co możemy zrobić, aby naprawić zło?”

Jeśli jeden z tych żądań PR spowoduje zgłoszenie usterki, jak tylko widzisz, że błąd został zgłoszony, jeśli możesz połączyć go z oryginalnym zgłoszeniem, zrób to. Upewnij się również, że jest on przypisany do osoby, która go wprowadziła (tylko dlatego, że ma najnowsze doświadczenie w tej dziedzinie kodu i najprawdopodobniej szybko rozwiąże problem, oczywiście nie dlatego, że „zepsułeś to, napraw to ”).

Jest wiele sposobów rozwiązania tego problemu - niektóre odniosą większy sukces niż inne, a wiele z nich zależy od procesów organizacji, a także osobowości zespołu ( łącznie ze swoim przełożonym).

Myślę, że to zależy.Mogę uzyskać o wiele bardziej zaawansowaną integrację z dostawcą zewnętrznym, jeśli pominę oba BA po obu stronach i zamiast tego poproszę programistów do współpracy z programistami.Zgodnie z manifestem agile jest to również preferowane podejście.Komunikacja twarzą w twarz.
@UncleIroh masz rację.To zależy.Różne zespoły zajmują się różnymi sprawami i tak, programista powinien rozmawiać z deweloperem.Ludzi biznesu należy trzymać jak najdalej od deweloperów.To właśnie miałem na myśli, mówiąc o odźwiernym.Bardzo bolesne wspomnienia związane z posiadaniem ludzi biznesu dla klientów, którzy chcieli mieć bezpośredni dostęp do moich maniaków, ale nie chcieli, aby ja i moi geekowie mieli do nich dostęp.Ponadto manifest Agile nie ma być biblią - w zwinności chodzi o elastyczność i to, co działa dla Ciebie.Ale myślę, że zgadzamy się co do zasady, tylko niektóre rzeczy zgubiły się w tłumaczeniu.
To jest właśnie to, co uważam za najlepsze podejście.Zespół programistów powinien kierować pytania do swojego szefa.Zwykle lubię poprzedzać go pozytywem."Tak, absolutnie, ale najpierw musisz go uruchomić przez Sama."Wtedy możesz zacząć naciskać na swojego szefa, aby ustalił rzeczywiste priorytety.Poleciłbym to, nawet jeśli twój szef zawsze mówi tak.Dodaje trochę tarcia, które eliminuje bardziej przypadkowe prośby.
@UncleIroh Myślę, że sprowadza się to do mikro-zarządzania a makro-zarządzania.Mikrozarząd mówi: „proszę podać pisemną odpowiedź na te trzy zgłoszenia do centrum pomocy w tej konkretnej kolejności; zignoruj wszelkie bezpośrednie kontakty”;kierownictwo makro mówi: "proszę poświęcić dzień na czyszczenie zaległości w zgłoszeniach do działu pomocy technicznej dla klienta X, tutaj jest nasz kontakt techniczny; skontaktuj się ze mną, jeśli nie jesteś pewien priorytetów lub czy coś jest w uzgodnionym zakresie".Jest też rozróżnienie typu push / pull: generalnie programista inicjuje kontakt z klientem, a nie odwrotnie.
Ross Millikan
2020-07-07 08:41:31 UTC
view on stackexchange narkive permalink

Procesy powinny być zaprojektowane tak, aby praca była wykonywana dokładnie i szybko. Jeśli ludzie rutynowo obchodzą system, a system jest dobrze zaprojektowany, powinieneś być w stanie przytoczyć szereg problemów, które zostały wygenerowane przez obejście. Ty i / lub Twój szef (być może Twój szef uzbrojony w dane od Ciebie) musicie sporządzić szczegółową listę tych problemów, która ma dużo większą wagę niż tylko narzekanie na obejście przepisów. Jeśli obejście jest tak powszechne, jak mówisz, i nie możesz sporządzić takiej listy, procesy są nieprawidłowe. W rzeczywistości przeszkadzają w dobrej pracy. Czas na dokładną analizę procesu. Pominięte kroki przeglądu nie stwarzają problemów, więc pozbądź się ich. Zobacz, jakie problemy zostałyby wyłapane przez jakie recenzje. Organizacja musi następnie zdefiniować, które przeglądy są obowiązkowe, egzekwować te normy i nadać przeglądom priorytet, aby były przeprowadzane na czas, aby nie spowalniać zbytnio pracy.

Dominique
2020-07-07 13:09:39 UTC
view on stackexchange narkive permalink

Twoje dane są bezużyteczne, jeśli nie zostaną zapisane. Dlatego proponuję skonfigurować system logowania, który rejestruje wszystkie akcje wykonywane na określonym zadaniu:

Gdy ktoś coś zaimplementuje, skrót zatwierdzenia jest dodawany do raportu o błędzie i każde dodatkowe zadanie (przegląd kodu, testy jednostkowe, ...) są również dodawane do raportu o błędzie w taki sposób, że można łatwo znaleźć następujące pytania:

  • Jaki procent zgłoszeń błędów faktycznie przeszedł weryfikację kodu?
  • Który procent zgłoszeń błędów faktycznie przeszedł przez cały łańcuch rozwoju?
  • ...

Ponadto musi być można zarejestrować, dlaczego coś nie jest zrobione:

  • weryfikacja kodu nie przeszła z powodu priorytetów biznesowych.
  • Testowanie jednostkowe niekompletne (wykonano tylko 20% testów)
  • ...

Bez takiego logowania po prostu krzyczysz w ciemności.

brokethebuildagain
2020-07-07 22:48:05 UTC
view on stackexchange narkive permalink

Masz rację. Wszyscy inni w tej sytuacji są w błędzie.

Wygląda na to, że musisz nadal być „tym facetem”, który irytuje wszystkich, nalegając na ten proces . Twój szef nie przejmuje w tym przywództwa, więc zamiast tego musisz to zrobić. Pchnięcie bezpośrednio do mistrzostwa oznacza, że ​​to tylko kwestia czasu, zanim Twój produkt będzie ucieczka, która wpłynie na Twoich klientów i zespół.

Chcesz być osobą, która powie „Tak ci powiedziałem” w tym przypadku i ma komunikację (e-maile itp.), aby to potwierdzić. To powinno postawić cię na lepszej pozycji - możesz nawet skończyć z pracą swojego szefa.

Inną rzeczą do rozważenia jest poproszenie o lepsze narzędzia , które ułatwią ludziom postępuj zgodnie z procesem i trudniej zmusić do opanowania. GitHub i GitLab mają funkcję chronionej gałęzi, która umożliwia tylko właścicielom projektów push to master. Możesz nawet zablokować repozytorium, aby prośby o scalenie musiały zostać zatwierdzone przez innego programistę i osobę odpowiedzialną za kontrolę jakości, zanim zostaną scalone. Możesz również uzyskać serwer kompilacji, który automatycznie uruchamia testy jednostkowe na żądanie scalania / ściągania. Wygląda na to, że Twój szef jest na pokładzie, mimo to, więc przekonanie go, aby zaczął używać lepszych narzędzi, nie powinno być trudne.

Nie czekaj tylko, aż coś się zmieni po tym, jak ktoś zauważy wielką awarię. Nie masz kontroli nad tym, co się stanie, jeśli zarząd zauważy, że zespół programistów popełnia duże błędy. Zgłaszaj problemy wcześnie i często dla własnego dobra, tak samo jak reszty drużyny.

Oczywiście, jeśli jesteś zmęczony walką, zawsze masz możliwość odejścia, ale może to być szansa na rozwój kariery, jeśli zdecydujesz się zostać.

Proces istnieje po to, aby służyć biznesowi, a nie na odwrót.Obrona procesu może być bardzo słuszna, ale nie jest to kwestia dogmatów.Solidna analiza ryzyka i różnicowe śledzenie błędów mogą pomóc w _okwantyfikowaniu_ bólu, który nie jest związany z procesem, który powoduje biznes.Czy przewyższa to koszt utraconych możliwości wynikających z przekroczenia „pilnych” terminów?Może to pójść w obie strony, ale niezależnie od tego, posiadanie twardych danych wzmocni wszelkie argumenty za zmianą.
Nie sądzę, aby naleganie, aby nikt nie łączył się bezpośrednio z wzorcem, jest tak naprawdę sprawą firmy obsługującej ten proces.Chodzi o ochronę siebie i swoich klientów.Nie widzę przypadku biznesowego, w którym straciłbyś szansę lub przychody, nawet nie przeprowadzając szybkiego zestawu testów regresji.Czy naprawdę potrzebujesz „twardych danych”, skoro istnieje wiele przykładów (czasami w międzynarodowych wiadomościach) tego, co dzieje się z organizacjami, które * nie * prawidłowo testują / audytują swojego oprogramowania?Pobieżna ocena ryzyka to wszystko, czego potrzebujesz, aby udowodnić wartość procesu IMO.
Jeśli „pobieżna” analiza ryzyka obejmuje również uwzględnienie kosztów alternatywnych i rozsądne oszacowanie liczby błędów faktycznie wychwytywanych przez elementy procesu, to z pewnością. To, na jakim etapie życia znajduje się firma, będzie miało ogromny wpływ na rozsądny poziom procesu.
Pete
2020-07-09 03:11:39 UTC
view on stackexchange narkive permalink

Miałem przyjemność uczestniczyć w zajęciach Agile prowadzonych przez Boba Martina („Wujek Bob”). Jeśli go nie znasz, jest jednym z założycieli tego, co nazywamy Agile.

Celem Agile jest uzyskanie „tej funkcji, którą klient chce zobaczyć 1 października” przed klientem 1 października LUB, wyjaśnij swojemu kierownictwu, powiedzmy 1 lipca, że ​​nigdy nie ukończysz tej funkcji do 1 października. Z kolei 2 lipca kierownictwo daje klientowi do zrozumienia, że ​​nie zobaczy tej funkcji 1 października. Chyba że uzgodniono pewne rodzaje zmian / kompromisów. To właśnie powinno robić kierownictwo.

Więc pomimo posiadania wszystkich technicznych pułapek Agile, jest dla mnie jasne, że Twoja firma tak naprawdę nie wykonuje ważnej części. Kierownictwo musi wiedzieć, czego chce klient i kiedy tego chce. Potrzebują widoczności (pewnych wiarygodnych wskaźników ilościowych) na temat miejsca, w którym znajdują się programiści. Informacje te muszą być stale omawiane i dostosowywane z klientem w miarę upływu czasu. To jest zwinne.

Przeglądy kodu, TDD, programowanie w parach i refaktoryzacja to zadania techniczne, które zapewniają dobrą jakość oprogramowania i wykonanie. Jednak same te rzeczy nie oznaczają, że firma korzysta z procesu Agile. Menedżerowie muszą zarządzać przy użyciu danych uzyskanych z tych procesów uwzględniać opinie klientów w celu dostosowywania ram czasowych zgodnie z wymaganiami. To takie proste.

Sytuacja, w której się znajdujesz, polega na tym, że programiści próbują wykorzystać dobre techniki rzemieślnicze w firmie, która nie korzysta z procesu zarządzania Agile. Brzmi jak chaos, w którym różni ludzie składają różne obietnice w nieskoordynowany sposób. Jako programista nic nie możesz na to poradzić.

Dave3of5
2020-07-07 13:14:23 UTC
view on stackexchange narkive permalink

Inni programiści uważają tę sytuację za to, że prawdopodobnie będą tutaj co najwyżej przez kolejny rok, więc pozwolenie na gnicie kodu jest tańsze niż codzienne kłótnie o proces z różnymi ludźmi, którzy nie cenią uważnej inżynierii.

Myślę, że to jest główny problem. Jeśli deweloperzy czują, że zamierzają pozostać w firmie tylko przez krótki czas, to pomijanie najlepszych praktyk w celu wykonania rzeczy nie wydaje się dużym problemem.

Dlaczego deweloperzy czują się tak, jakby byli zamierza zostać w firmie najwyżej przez „rok”? Wydaje się, że to dość krótki okres dla każdego, kto planuje pracę w firmie.

eee
2020-07-07 18:47:24 UTC
view on stackexchange narkive permalink

Istnieje wiele sposobów zorganizowanego rozwoju, w zależności od zespołu i produktu. Przepływ, który jest teraz zwykle przekazywany, zakłada, że ​​każdy pracuje nad wszystkim i wprowadza częste, ale niewielkie zmiany do tej samej gałęzi głównej, ale poprzez przegląd kodu i żądania ściągnięcia.

Nie jest to jedyny sposób na zorganizowanie rozwój. Jeśli „procesy nie są przestrzegane”, ale rozwój przebiega dobrze, być może faktycznie przestrzegane są inne zasady i procesy: programowanie w parach, własność kodu, gałęzie wydania, gałęzie funkcji, gałąź programistyczna, programowanie sterowane testami lub coś podobnego.

Jeśli tak, być może lepiej będzie odkryć i uchwycić rzeczywiste procesy niż próbować naprawić, który prawdopodobnie nie jest uszkodzony.

HenryM
2020-07-07 13:08:18 UTC
view on stackexchange narkive permalink

Co mogę z tym zrobić?

Twój szef powiedział Ci, że możesz odepchnąć, abym nie czuł presji ignorując komunikację który ma na celu wywieranie presji na Ciebie, gdy już pracujesz nad jakimś przedmiotem. To nauczy innych, aby przestali próbować wywierać na Ciebie presję.

Po przeczytaniu kilku innych komentarzy dotyczących kultury firmy: Możesz poprawić kulturę firmy tylko wtedy, gdy jesteś na stanowisku strażnika bramek (niekoniecznie w zarządzie), gdzie możesz zablokować wdrażanie czegoś, a szef cię poprze. Oznacza to, że dziadek wesprze twojego szefa ... że szef wnuczka poprze go i tak dalej.

Przyjmuję do wiadomości komentarz Gregory'ego Currie, że: „Istnieje dość duża różnica między mówieniem kogoś coś i kogoś przekonać. Mówienie komuś opiera się na autorytecie, przekonanie można zrobić na wiele sposobów ”

Pracowałem w miejscach, w których nie można było robić rzeczy we właściwy sposób pokazane, ponieważ kierownictwo dopuszczało nierealistyczne harmonogramy. Nie widziałem, żeby to działało, gdy ludzie są przekonani bez autorytetu wspierającego dobre procesy.

Zazwyczaj, jeśli sprawy idą w określony sposób, dzieje się tak dlatego, że właśnie tego chce kierownictwo, niezależnie od tego, co mówią ty. Facet, obok którego pracujesz, który nie dba o jakość, został zatrudniony przez kogoś, kto wiedział, że taki jest, lub nie obchodziło go, że taki jest. Jeśli masz nierozsądny termin, to dlatego, że wiele osób powyżej Ciebie zgodziło się z tym. Jeśli nie możesz sobie wyobrazić, dlaczego publikowany jest tandetny kod, Twój szef może wyobrazić sobie dlaczego i rozumie dlaczego.

Ostatecznie wszystko, co robimy jako programiści (w firmie), wynika z potrzeb biznesowych. Strona biznesowa może mieć uzasadniony powód, aby zmusić Cię do pośpiesznego kodowania, tak jakby wiedziała, że ​​firma upadnie w krótkim czasie, jeśli klientom nie będzie można pokazać nowych funkcji i czekanie, aż funkcje będą wyższej jakości, również zajęłoby

Widziałem firmy, w których zmagały się z problemem, który opisujesz. A potem w ciągu 1-2 lat wszyscy zostają zwolnieni. Zarząd wiedział, że to nastąpi na długo przed deweloperami.

Benjamin
2020-07-06 21:46:51 UTC
view on stackexchange narkive permalink

Porozmawiaj ponownie ze swoim szefem. Twój szef musi od teraz stwierdzić, że takie jest prawo .Jeśli nie chce ciągłych walk, stwórz wystarczająco sztywne zasady dotyczące wyjątków, aby ludzie nie brali ich beztrosko.

Jeśli będzie to trwało zbyt długo, ludzie się do tego przyzwyczają i coraz trudniej będzie to zmienić. Może szef musi zaangażować swojego szefa.

Sam nie możesz wiele zrobić bez wsparcia. Możesz spróbować przekonać swoich współpracowników, że przestrzeganie tego procesu jest dobre dla ich CV, a umiejętność grzecznego odmawiania sobie dalszej kariery w dowolnym miejscu. To prawda, ale też trudno ją sprzedać.

Paddy
2020-07-07 12:39:37 UTC
view on stackexchange narkive permalink

Zgadzam się z innymi odpowiedziami, że proces ten powinien obowiązywać z jakiegoś powodu i powinien być przestrzegany.

Zgadzam się również, że zadaniem twojego szefa jest toczenie tej walki z interesariuszami biznesowymi i powinno to być do nich, aby wyjaśnić, że uwolnienie z zawrotną prędkością drastycznie zwiększa ryzyko wypuszczenia do życia problemów z zatrzymaniem pokazów (zakończeniem działalności?).

To powiedziawszy, jednym ze sposobów zakończenia tego pomijania proces polega na wdrożeniu poprawki technicznej. Możesz „chronić” gałąź główną i wyłączyć możliwość wysyłania do niej przez ludzi bez odpowiedniego procesu przeglądu:

https://docs.github.com/en/github/administering- a-repository / defining-the-mergeability-of-pull-request

Można to również zrobić w innych rozwiązaniach do zarządzania repozytorium, takich jak TFS.

Jeśli odebrać programistom możliwość przyspieszenia kodu do produkcji, a następnie zlikwidowany zostaje nacisk na nich, aby to robili. To przenosi presję w górę łańcucha na twojego szefa (tam, gdzie powinno być), a następnie to on musi mieć te argumenty.

WoJ
2020-07-07 13:02:15 UTC
view on stackexchange narkive permalink

Na początek - to nie jest Twoim obowiązkiem, aby to naprawić, ale mimo wszystko dobrze jest być zorientowanym na proces.

Możesz zasugerować użycie jakiegoś systemu CI / CD, który pozwoli na wdrożenie tylko wtedy, gdy spełnione są wszystkie kryteria (testy, ...). W przeciwnym razie potok ulegnie awarii i zmiana zostanie odrzucona.

Jeśli masz wystarczająco ścisłą kontrolę nad potokiem, takie skróty zawiodą. Chciałbym również wyraźnie udokumentować proces wyjątków, aby było coś, co należy wskazać, kiedy sprzedawca lub ktokolwiek potrzebuje pilnego.

Ian Kemp
2020-07-09 16:45:15 UTC
view on stackexchange narkive permalink
  • Twoi współpracownicy nie widzą długoterminowych perspektyw w firmie, więc nie są zainteresowani śledzeniem procesu.
  • Twój szef po prostu płaci frazesami za przetwarzanie i nie jest zainteresowany egzekwowaniem to.
  • Działy zależne od oprogramowania nie przejmują się defektami, tylko rzeczami, którymi mogą wczoraj pokazać klientom, więc nie przejmują się też procesem.

Jest to niezwykle powszechny scenariusz w firmach, które nie rozumieją, że ich najważniejszym produktem nie jest towar lub produkt, który sprzedają, ale oprogramowanie za nim stojące. Takie firmy nigdy nie będą traktować priorytetowo robienia oprogramowania „właściwie”, ponieważ nie widzą w nim żadnej wartości.

Jeśli nie jesteś na pozycji władzy w takiej firmie, nie możesz zrobić nic, aby to naprawić postrzeganie. W związku z tym jedyną opcją - jeśli chcesz zachować zdrowy rozsądek - jest znalezienie pracy w innym miejscu, w firmie, która rozumie, że wysokiej jakości oprogramowanie jest podstawą ich sukcesu, a nawet istnienia w przyszłości.

NKCampbell
2020-07-09 21:40:56 UTC
view on stackexchange narkive permalink

Jedna kiepska rzecz do rozważenia, w odpowiedzi na ten cytat z pytania.

Mój zespół ma wiele procesów programistycznych, przez które kod ma technicznie przejść, aby dostać się do gałęzi głównej. Na przykład testowanie jednostkowe i przegląd kodu.

Nie - nie. Proces, który ma miejsce, to proces, który masz i proces, który zespół, cały zespół (od menedżerów w dół), faktycznie ceni.

Jeśli jest gdzieś dokument lub mglisty zbiór ideałów w głowach kilku programistów, to w porządku, ale to nie jest twój proces. Jedną z rzeczy, które możesz zrobić, to poczuć się komfortowo w swoim rzeczywistym procesie, zdać sobie sprawę, że nie jest on idealny i żyć z nim (i komunikować konsekwencje) lub przekonać zespół programistów do wprowadzenia zmian strukturalnych, które w bardziej namacalny sposób wymuszają procesy, które chcesz, takie jak as: scalanie nie może się fizycznie odbywać poza zatwierdzonym żądaniem ściągnięcia, automatycznymi potokami kompilacji itp. ...

Powodzenia - to kiepska sytuacja jako programista

Tasos Papastylianou
2020-07-10 01:39:19 UTC
view on stackexchange narkive permalink

Nie jestem w tym ekspertem, ale moje 2 ¢ byłoby takie:

Za każdym razem, gdy testy / proces są wycofywane, oszacuj liczbę błędów, którym to się równa, plus , szkody, które jest równoznaczne z utratą pieniędzy dla firmy, plus godziny pracy, które będą wymagane, jeśli stanie się to starszą poprawką (która jest zwykle znacznie większa niż ilość czasu potrzebnego na śledzenie rozwoju opartego na testach w pierwsze miejsce). Niestety, wymaga to oczywiście odrobiny pracy domowej z Twojej strony, co prawdopodobnie wykracza poza zakres Twojego opisu stanowiska, ale jednocześnie przybliżone obliczenia są w porządku i prawdopodobnie możesz dostać jakiś pomysł na to z poprzednich raportów o błędach, które dotyczyły opuszczonych testów, itp.

Pamiętaj, aby trzymać się tych danych i aktualizować je za każdym razem, gdy testy są pomijane. Następnie, na koniec każdego spotkania, zachowując normalny ton (ale nie pasywno-agresywny), zanotuj „narosły dotychczas dług techniczny”, zgodnie z tymi liczbami. Ludzie na początku będą chichotać, a potem być może zmęczy się ich słyszeniem, ale kiedy ta liczba zacznie rosnąć, ludzie mogą to zauważyć. Miejmy nadzieję, że w pewnym momencie dojdzie do punktu krytycznego, a dyskusja może potoczyć się tak:

Szef: Powiadom mnie o wczorajszym przejściu do produkcji.

Ty: Oczywiście. Wczoraj przesłaliśmy do gita 5000 linii kodu. Ze względu na pilność pominęliśmy testy na żądanie, szacowane na około 30 testów jednostkowych dla tego zatwierdzenia. Z poprzednich doświadczeń wynika, że ​​1 na 3 pominięte testy jednostkowe objawia się jako zgłoszenie błędu przez użytkownika 2-3 miesiące później, przy szacowanym koszcie sprzedaży około 10 000 USD i 40 osobogodzinach starszej wersji poprawek na błąd , więc wczorajsze zatwierdzenie kosztuje szacunkowo 100 000 USD strat i długu technicznego 400 PH. Biorąc pod uwagę nasze poprzednie oszacowanie długu technicznego na 470 błędów, minus 30 błędów związanych z brakującymi testami, które naprawiliśmy w ciągu ostatniego miesiąca (wydaliśmy na to około 1200 ph), plus dzisiejszy szacowany dług techniczny w wysokości 10 błędów, to daje nam zadłużenie dzisiaj do około 450 błędów, co przy szacunkowej wartości 10 000 USD / 40 PH na błąd, prowadzi to do szacowanej straty firmy w wysokości 4 500 000 USD plus 18 000 PH wartości zadłużenia technicznego do tej pory .

Szef: ... Wtf. Ok, dobrze, pomyślmy o tym. Wczesne wysyłanie bez testów wygenerowało dla nas dodatkowe X USD, niż gdybyśmy spóźnili się ... ale jeśli to, co mówisz o testach, jest prawdą, kosztowało nas również Y USD. Może powinniśmy zastanowić się, czy koszt długu technicznego Y $ faktycznie rekompensuje zysk z wczesnej wysyłki X $ w tym przypadku ... ile dodatkowego czasu potrzebowałeś na egzekwowanie tych testów?



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...