Pytanie:
Jak poradzić sobie z obroną programisty w obliczu złamania kodu?
HelterSkelter
2018-05-02 15:54:54 UTC
view on stackexchange narkive permalink

Zacząłem pracować w firmie jako młodszy programista, po zakończeniu świetnego bootcampu programistycznego z głęboką i szeroką wiedzą programistyczną. Od tego czasu (1,5 roku) wiele się nauczyłem, zyskałem wiarygodność jako dobry programista i dostałem kilka projektów pod moją odpowiedzialnością. Znaczna część moich postępów została osiągnięta dzięki pomocy, jaką otrzymałem w tym czasie od moich kolegów starszych programistów.

Od czasu do czasu seniorzy popełniają błędy, a czasami te błędy łamią moduły, które są pod moja odpowiedzialność. Kiedy tak się dzieje, zwykle rozmawiam z nimi i mówię coś w stylu:

„Hej, dokonałeś zmiany funkcji X na Y. Ta zmiana psuje mój kod, ponieważ nie bierze Z na koncie i Z jest to, co dzieje się po mojej stronie. Czy możesz zrobić K, aby to naprawić? ”

Jeden z nich, gdy podchodzi do błędu, staje do obrony i mówi takie rzeczy jak„ Więc czy nie wolno mi kodować? ” lub „Cóż, po prostu zmień swój kod, aby był zgodny z moim” (zamiast myśleć o innych, lepszych alternatywach).

Jak mam mu przekazać, że przychodzę z dobrymi intencjami, ale także sprawić, by zrozumiał (i zgodził się), że to on powinien wprowadzić wymagane zmiany, aby naprawić uszkodzony kod / moduł?

Komentarze nie służą do rozszerzonej dyskusji;ta rozmowa została [przeniesiona do czatu] (https://chat.stackexchange.com/rooms/77024/discussion-on-question-by-heyjude-how-to-handle-a-developer-getting-defensive-wh).
Dziesięć odpowiedzi:
simbabque
2018-05-02 17:12:00 UTC
view on stackexchange narkive permalink

"Hej, dokonałeś tej zmiany X w tej funkcji Y. Ta zmiana zepsuje mój kod, ponieważ nie bierze ona pod uwagę Z, a Z jest tym, co dzieje się po mojej stronie. Czy możesz zrobić K, aby naprawić? ”

Musisz uczynić to mniej osobistym. Nie ma mojego kodu i Twojego kodu . Oboje jesteście pracownikami firmy, która jest właścicielem kodu. Po prostu go napisałeś, ale przekazałeś własność intelektualną swojemu pracodawcy. Przejęcie własności jest ważne, ale nie mów o tym w ten sposób.

Zamiast tego pomyśl o całym kodzie jako o naszym kodzie i tak go sformułuj. Lub zostaw to. Kiedy nie skupiasz się na tym, co zrobili, ale raczej na obecnym stanie, będzie to mniej przypominać atak osobisty.

W wyniku zmiany X na Y ta inna funkcjonalność się zepsuła . Przyjrzałem się temu i stwierdziłem, że musimy również pomyśleć o Z.

Możesz wtedy zobaczyć, co mówią. Mogą odpowiedzieć czymś w rodzaju „pokaż mi”, „śmiało i napraw to” lub „och, nie myślałem o tym” i zaproponować, że naprawią to samodzielnie.

Idealnie, tak naprawdę ma jednak znaczenie, kto rozwiązuje problem. Ważne jest, aby istniał dialog i wszyscy współpracowali, aby cały produkt był stabilny i funkcjonalny. Posiadanie tylko jednej osoby odpowiedzialnej za konkretny element produktu jest samo w sobie niebezpieczne, a tego rodzaju sytuacja jest równie dobrą okazją do upewnienia się, że wszyscy są świadomi innych elementów produktu.


Z bardziej technicznego punktu widzenia wygląda na to, że naprawdę chcesz testy jednostkowe lub inną formę testów automatycznych przynajmniej dla tego konkretnego fragmentu oprogramowania. Jeśli istnieje ogólna infrastruktura, która je uruchamia i wyświetla wyniki, będzie oczywiste, że coś (nie ktoś (!), Chociaż jest oczywiście git blame ) zepsuło testy. Są tam jako siatka bezpieczeństwa i wszyscy mogą zauważyć, jeśli coś pójdzie nie tak.

Dodatkową korzyścią wynikającą z przeprowadzania testów jednostkowych dla krytycznych elementów systemu jest to, że tak naprawdę nie trzeba wychodzić i zwracać uwagę, że coś jest zepsute. Nie ma już osoby policji kodowej . Jeśli zajmie się tym łańcuch narzędzi, nikt nie dostarcza złych wiadomości i jest mniej złych wibracji w zespole, ponieważ jest mniej miejsca na kłótnie.

Z drugiej strony wiąże się to z koniecznością zaktualizuj również testy. Omawianie zalet i wad tego jest poza zakresem.

Na miejscu!Programista przyjmuje krytykę zwykle bardzo osobiście.To leży w naszej naturze :) Po prostu porozmawiaj o problemie, a nie że to czyjaś wina, że coś już nie działa.(Tyle że to było naprawdę głupie)
Nigdy nie powiedział, że nie mają testów automatycznych.Testy nigdy nie obejmują wszystkiego, więc nie odnoszą się do oporu, jaki można uzyskać od osoby, która złamała kod.Lepszą sugestią byłoby ** dodanie ** testu, który dowodzi, że zmiana coś zepsuła, i wykorzystanie go jako dźwigni, aby skłonić ich do naprawienia błędu.
@Michael Zgadzam się.I masz rację, nigdy nie powiedzieli, że nie ma testów.To jest to, czego nie sugeruję, żeby coś zrobili.Po prostu mówię, że testy są podejściem mniej konfrontacyjnym, ponieważ eliminują potrzebę wskazywania, że coś jest zepsute, jeśli są prawidłowo prowadzone.Jednak dodanie testu później nie jest moim zdaniem zbyt pomocne.Celem mojej odpowiedzi nie jest nakłonienie kogoś do naprawienia błędu, ale pomoc zespołowi jako całości w lepszej współpracy.Dobrze zbudowany zestaw testów prawdopodobnie złapie jednak pewne rzeczy, nawet jeśli dzieje się tak tylko dlatego, że nie został zaktualizowany.
„Nie ma jednak znaczenia, kto to naprawi”.Naprawdę się z tym nie zgadzam, jeśli masz harmonogram i nie masz czasu na naprawienie błędów innych osób, masz prawo poprosić ich o naprawienie.
@Ckankonmange Myślę, że to zależy od struktury zespołu, produktu, firmy i tego, czego chce kierownictwo.Naprawdę trudno jest znaleźć ogólną odpowiedź.Edytowałem tę część, ponieważ była nieco przesadna.Dzięki za wskazanie tego.
@simbabque „Dodanie testu później nie jest moim zdaniem zbyt pomocne” Kiedy więc dodajesz test?Czy piszesz wszystkie testy na początku projektu i nigdy więcej nie dodajesz?
@Michael nie, oczywiście, że nie.Ale jeśli zmiana zepsuje coś, czego nie mam testu, naprawiłbym to zachowanie, a następnie dodałbym test regresji, aby upewnić się, że nigdy się nie powtórzy.Nie zostawiłbym oprogramowania zepsutego i nie dodałbym testu, aby udowodnić, że jest zepsute, aby dać je komuś innemu do naprawy.Chyba że, oczywiście, gdybym był liderem zespołu i dał zadanie naprawienia go juniorowi, który nie ma jeszcze umiejętności, aby ustawić test.
Problem @simbabque OP polega na tym, że chce, aby ten drugi facet to naprawił.Twoim rozwiązaniem nie może być „sam to naprawię”.
To jest bardzo dobra rada!Zaledwie kilka tygodni temu znalazłem błąd i używając kontroli wersji, znalazłem programistę, który wprowadził zmiany, które nie masowały danych poprawnie.Powiedziałem o tym im i mojemu zespołowi, ale celowo unikałem stwierdzenia, że to komuś wina programisty.Kiedy szukaliśmy źródła problemu, okazało się, że to właściwie _ moja_ wina - nie ustawiłem poprawnie środowiska programistycznego!Ale ponieważ nie miałem spiczastych palców, nikt nie stracił twarzy.
+1 - Ponadto nie chcesz tworzyć środowiska, w którym programiści są zbyt zaniepokojeni karą za złamanie udostępnionego modułu, więc samodzielnie odtwarzają inny.Wtedy wszyscy przegrywają.
Kiedyś rozwiązałem podobny problem z programistą, który powiedział „Nie zmieniam swojego kodu”.jako jego mantra.Zrobiłem to: „Hej, wydaje mi się, że do kodu, który napisałeś, są przekazywane nieprawidłowe parametry, czy możesz umieścić tam jakieś instrukcje debugowania, abyśmy mogli złapać winowajcę?”WIEMY, że przekazywane są właściwe informacje.To przyniosło światło, a nie ciepło.I jak można się domyślić, pan „Nie zmieniam swojego kodu” przyznał się do problemu.
Ważne jest, aby nie winić programisty, ponieważ tak naprawdę nie wiesz, czy to ich wina.Bardzo możliwe, że błąd, który wprowadzili, wynikał ze złych wymagań postawionych im przez kogoś innego.Ożywienie oprogramowania wymaga wielu różnych osób i wszyscy są jednakowo odpowiedzialni za produkt końcowy.Obwinianie jednostek to strata czasu.Liczy się to, że problemy zostały rozwiązane.
Zgadzam się, aby nie obwiniać dewelopera, jednak ważne jest, aby zidentyfikować dewelopera i upewnić się, że zrozumiał błąd (jeśli jest to naprawdę pomyłka), aby mogli się uczyć.Wygląda na to, że złamali zasadę Open / Closed.
@DidIReallyWriteThat tak, to prawda.Ale musimy też pamiętać, że PO jest młodszym członkiem zespołu, a druga osoba jest dużo starsza.Poza pychą i generalnie brakiem silnego gracza zespołowego, nadal istnieje szansa, że postąpili słusznie, a junior może jeszcze tego nie powiedzieć.
+1 za testy jednostkowe.Junit tyle razy uratował mi tyłek, odkąd przekonano mnie, żebym go użył.
Depersonalizacja błędów to podstawa.Unikanie osobistego traktowania pomaga w sytuacji, ale nie ma żadnych długoterminowych konsekwencji w zakresie rozwoju osobistego dla danego starszego programisty.Jeśli nie może znieść tego, co powiedziałeś, to wątpliwe, że w ogóle rośnie.Spróbuj poprosić go o przeczytanie jakiegoś materiału na temat radzenia sobie z opiniami, jeśli możesz (np. Za pośrednictwem innego seniora), jeśli chcesz mieć dobry wpływ, zamiast po prostu znosić problem.
@simbabque na pewno, aw tym przypadku jest całkiem możliwe, że to OP musi zostać przeszkolony.
Chcę tylko podkreślić - to świetna rada dla każdej dziedziny, nie tylko dla tworzenia oprogramowania.Zbyt wielu ludzi daje się wciągnąć w tę całość, „nie obwiniaj mnie. Moja część działa dobrze” mentalność, że nikt nie jest w stanie skupić się na szerszej perspektywie - tworzeniu działającego produktu.Z mojego doświadczenia wynika, że kiedy wszyscy zaangażowani w projekt przyjmują podejście holistyczne, rzeczy są wykonywane szybciej i pojawia się mniej niepowodzeń.
Mogła to być dobra odpowiedź, ale wtedy nie można winić programistów.Zawsze obwiniaj programistów ... = P (+1)
HorusKol
2018-05-02 17:21:59 UTC
view on stackexchange narkive permalink

Po pierwsze - nie jest niczym niezwykłym, że kod zależności dzieli kod podrzędny. Istnieją praktyki programistyczne, które mogą to złagodzić, takie jak dobra specyfikacja, dokumentacja i testy. Ale to nie jest odpowiedź na twoje pytanie.

Hej, dokonałeś tej zmiany X w funkcji Y. Ta zmiana psuje mój kod, ponieważ nie bierze pod uwagę Z, a Z dzieje się po mojej stronie. Czy możesz zrobić K, aby to naprawić?

To, co powiesz, może zostać odebrane jako oskarżenie - zasadniczo mówisz „złamałeś mój kod” - a to sprawi, że ludzie w defensywie.

Lepszym sposobem jest utrzymanie tego mniej „złamałeś mój kod”, a bardziej „czy mógłbyś spojrzeć jeszcze raz na X?

Z drugiej strony, jeśli ta osoba jest zrzędą bez względu na to, jak do niej podchodzisz, musisz poinformować swojego szefa, że ​​twoja praca jest opóźniona, ponieważ musisz naprawić pracę zrzędą. Ponownie, nie wytykaj palcami, ale zostaw to jako „praca nad Z została opóźniona przez zmiany w X i musiałem najpierw zrobić K”.

I to jest główny powód, dla którego warto używać SemVer.
„Lepszym sposobem jest trzymanie tego mniej” złamałeś mój kod ”i więcej” czy mógłbyś spojrzeć jeszcze raz na X?Myślę, że musi zrobić K, aby pracować z Z "."Oznacza to, że _ w rzeczywistości_ po prostu _ myślisz_, że musi to zrobić, a ten drugi facet może nie _ myśleć_, że tak.Jednak to nie jest to, co się tutaj dzieje, OP wie * na pewno *, że zmiana zepsuła istniejącą funkcjonalność i jest to coś, co * na pewno * wymaga rozwiązania.
@Demonblack OP może się mylić.OP może rzeczywiście być tym, który musi zaktualizować kod, aby był zgodny z kodem starszego programisty.Ważną radą jest mówienie o problemie z kodem zamiast wskazywać palcami, a nie o tym, kto ma rację, a kto nie.
Jednak tak naprawdę nie ma znaczenia, kto musi co zmienić.Nawet jeśli zmiana jest rozsądna, nie popełnisz czegoś, co zepsuje istniejący kod bez wcześniejszej rozmowy z osobami, których to dotyczy.
u8it
2018-05-03 00:00:38 UTC
view on stackexchange narkive permalink

W rzeczywistości to wspaniała okazja w przebraniu. Większość inżynierów nie docenia, jak wielkie jest to dla obecnego lub potencjalnego pracodawcy. Równolegle z umiejętnościami technicznymi jest Twoja zdolność do współpracy z ludźmi, akceptowania odpowiedzialności za błędy, pracy z innymi na własną rękę i taktycznego propagowania swoich myśli. Panuje powszechna zgoda co do tego, że najlepiej pokazać to podczas rozmowy kwalifikacyjnej, dzieląc się anegdotyczną historią. zazwyczaj ludzie splatają takie historie z perspektywy czasu, ale możesz być bardzo strategiczny i zdać sobie sprawę, że masz okazję napisać tutaj świetną historię, która odpowiedziałaby na pytania typu „jak radzisz sobie z konfliktem” i prawdopodobnie otworzyłaby zaskakujące możliwości u obecnego pracodawcy .

Coś do rozważenia to taktyka kontra strategia.

Taktyka

Twoja taktyka to podstawa systemy i działania, które zdecydujesz się pomóc w rozwiązaniu problemu. Na przykład, wybierając lepsze sformułowanie, które jest mniej osobiste, wybierając właściwy czas, zwracając uwagę na publiczność / osoby postronne, pomagając osobie, do której się zwracasz, lub używając automatycznych testów, aby wykryć błąd. Poświęć czas na naukę i ćwiczenie dobrych taktyk. To będzie Twój zestaw narzędzi, który możesz wykorzystać w swojej strategii.

Strategia

Problem, z którym się zmagasz, jest symptomem jeszcze większego problemu: ta osoba naprawdę cię nie lubi. Właśnie to chcesz strategicznie naprawić.

W miejscu pracy, szczególnie w zespole, nie masz kontroli nad tym, że masz osobiste relacje z każdym członkiem zespołu. Może ktoś cię nie lubi, a ty go nie lubisz, szkoda, że ​​jesteś zmuszony do związku, będąc w zespole. To twój wybór, czy te relacje są dobre, czy złe. Możesz włożyć wysiłek w innych ludzi lub nie. Prawdziwy rozwój zawodowy następuje wtedy, gdy wykraczasz poza myślenie o sobie jako o łamaczu kodu (co prowadzi do problemów z arogancją kodu), ale jako funkcjonującym członku zespołu i chcesz pokazać, że z tobą w zespole ten zespół jest większa niż suma jego części. Oznacza to dużą świadomość relacji.

Strategiczną decyzją jest zadanie sobie pytania, jak chcesz, aby wyglądał ten związek? Czy to możliwe? Czego brakuje lub jakie wyzwania mogą utrudnić związek? Co musisz zrobić, aby to się stało? Na przykład wiele problemów w związkach sprowadza się do zaufania. Tak więc strategia polegałaby na pokazaniu temu deweloperowi, że myślisz o jego / jej interesach, a nie tylko o własnych, i doprowadzenie twojego związku do punktu, w którym ta osoba ci ufa. Nie bądź stoikiem, wiedzącym wszystko, co nie stawia ludzi po twojej stronie, nawet jeśli masz rację i masz rację. Strategia polega na uświadomieniu sobie, że chcesz ludzi po swojej stronie i przemyśleniu, jak to się dzieje. Co działa, a co nie. Ważne jest również, aby zdać sobie sprawę, że skuteczna strategia często wymaga cierpliwości. Być może będziesz potrzebować więcej pracy i stawiania sobie wyzwań, niż chcesz, aby osiągnąć prawdziwy postęp.

Fajne w tym jest to, że jeśli rozwiniesz naprawdę solidne relacje z tym starszym programistą, taktyki, które cię tam doprowadziły, stają się znacznie mniej potrzebne i łatwiej jest być bardziej wydajnym i skuteczniejszym w swojej pracy. Dobra strategia może doprowadzić Cię do dobrych relacji, a dzięki dobrym relacjom znacznie łatwiej będzie Ci osiągnąć swoje cele. Pomyśl więc o pracy nad swoją relacją z tą osobą, gdy nie ma problemu, a to ułatwi, gdy pojawią się takie problemy.

user8365
2018-05-02 18:32:41 UTC
view on stackexchange narkive permalink

Jak mam mu zakomunikować, że mam dobre środki, ale także sprawić, by zrozumiał (i zgodził się), że to on powinien wprowadzić wymagane zmiany, aby naprawić uszkodzony kod / moduł?

Lepiej upewnij się, że twój szef / zespół zgadza się, że tak powinno być. Idealnie w środowisku programistycznym jest jakiś zautomatyzowany system testujący, więc jeśli kod, który ma być sprawdzany w przerwach, jest odrzucany, dopóki nie zostanie naprawiony. Zwykle jest to osoba, która to zmieniła. Każdy powinien być dumny ze swojej pracy, która wiąże się z odpowiedzialnością za naprawianie rzeczy, które psują.

Twój szef może uznać, że marnowanie czasu starszych programistów na naprawianie każdego drobnego błędu, który wprowadzają system. Uważają, że zadanie to pozostawiono młodszym programistom; Nie zgadzam się z tym. Musisz dowiedzieć się, jak to powinno działać.

Jeśli kod przekracza granice modułu, jest to zdecydowanie materiał dla starszych programistów.
To starszy programista powinien zdecydować, jak to naprawić.Ale to nie znaczy, że muszą osobiście napisać poprawkę lub że poprawka musi znajdować się w napisanym przez nich kodzie.
@ThorbjørnRavnAndersen - to może mieć sens, aby przypisać go starszemu programistowi, ale większość projektów czasami staje się chaotyczna i nie stosuje się najlepszych praktyk.Ponadto, może to być postrzegane jako moment do nauczenia się dla młodszego programisty, aby to rozgryźć i poprosić starszego członka o większy nadzór.
Sentinel
2018-05-03 04:24:40 UTC
view on stackexchange narkive permalink

Moje podejście do tego rodzaju problemów polega na upewnieniu się, że istnieje wystarczająca metodologia i narzędzia, aby problem był techniczny, a nie osobisty.

Na przykład upewnij się, że masz zautomatyzowane kompilacje i testy dymne. Jeśli te się zepsują, zastosuj zasadę, że łamacz musi zapewnić jedzenie na następnym spotkaniu zespołu.

Czasami ludzie po prostu śmiało rzucają wyzwanie status quo w samolubnym dążeniu do osobistego postępu. W pewnym sensie jest to normalne. W najlepszym przypadku jest przedsiębiorczy. Jednostka idzie naprzód w ramach, które na to pozwalają. Więc zmień ramy. Tym typom ludzi nie przeszkodzi, będą robić postępy na różne sposoby. Jako menedżer Twoim celem jest wykorzystanie tego ducha i kierowanie nim w sposób pozytywny dla zespołu i celów.

Częścią tej strategii wykorzystania woli jest upewnienie się, że ludzie nadal czują rozsądek własności. Najpopularniejsza odpowiedź, jak dotąd, opowiada się za filozofią wyrzeczenia się własności. Myślę, że to może przynieść efekt przeciwny do zamierzonego. Pozwól ludziom z pasją posiadać swój obszar. Ale upewnij się, że nie naruszają innych ”.

Napisałem odpowiedź, do której się odnosisz, i zgadzam się z tym, co mówisz.Jednak dla juniora w danym zespole twoja rada nie jest szczególnie przydatna.Nie wierzę, że mogą zmienić sposób, w jaki mają się sprawy w ich firmie.Czy możesz udzielić bardziej konkretnych porad nie dla roli menedżera, ale raczej dla stanowiska, na którym znajduje się PO?Sam nie jestem pewien, jak mogli na to wpłynąć, dlatego z odpowiedzią poszedłem inną drogą.Chciałbym usłyszeć, co myślisz.
@simbabque Tak, moja odpowiedź dotyczy raczej ról kierowniczych.Myślę, że OP zawsze mógłby przekazać swojemu kierownikowi tę samą radę, ale mam wrażenie, że to nadal utrzymuje problem w sferze „interpersonalnej”, w której może być dostępne rozwiązanie techniczne.Trudno poznać szczegóły, ale sposób, w jaki OP określa swój problem, sugeruje, że jest on odpowiedzialny za delegowanie błędów i istnieje luźna kultura, w której OP po prostu podchodzi do kolegów i twarzą w twarz zrzuca błędy na ludzi.Z technicznego punktu widzenia może tego uniknąć, dodając więcej testów lub sprawiając, że kod wymusza zależności w czasie kompilacji / kompilacji.
Dzięki za twoją odpowiedź.Teraz widzę, skąd pochodzisz.Szczerze mówiąc, zrozumiałem to bardziej w taki sposób, że PO jest raczej młodszy i niedoświadczony, a więc może zbyt szybko wyciągać wnioski.Dlatego uważam, że sugerowanie menedżerowi sposobu działania może nie być preferowanym posunięciem, w zależności od ich kultury.
@simbabque Trudno to wiedzieć.Moim zdaniem, gdy loguje się błąd i mówi "moduł A wyprowadza wartości 1..6" i "zależny moduł B oczekuje danych wejściowych 1..5" to ktoś musi określić, gdzie należy dokonać zmiany, jeśli kultura zachęcawłasność obszaru.Jeśli tak się nie stanie, zmianę może wprowadzić każdy.W każdym razie wydaje mi się, że jest to problem dla przywództwa technicznego i arbitrażu charakterystycznego dla tej kultury.
@simbabque Jeśli celem jest upewnienie się, że istnieją wystarczające narzędzia i metodologia, a eskalacja przez kierownictwo nie wchodzi w grę, wówczas kontrahenci w sporze o własność mogą rozwiązać swój problem, aktywnie pracując między sobą nad narzędziami / metodologią.
HopefullyHelpful
2018-05-03 17:06:32 UTC
view on stackexchange narkive permalink

To pytanie prawdopodobnie w dużej mierze zależy od kultury firmy.

Są firmy, w których „błędy się nie zdarzają”. A raczej nie możesz o nich mówić, a menedżer, który pozna kogoś, kto popełnił błąd, będzie „uważnie obserwował tę osobę”.

W takiej sytuacji osobiście ujawniasz problem tej osobie w ten sposób kierownik słyszy o tym tylko wtedy, gdy jest to absolutnie konieczne, mówiąc im dokładnie, co chcesz, aby zrobili lub naprawili, po tym, jak sam spróbujesz to naprawić. (Oczywiście powinieneś też biegać, czerwone flagi yada yada.) Powinieneś także powiedzieć im, że jest między tobą a nimi i że jesteś fajny.

W każdej działającej firmie musisz upewnić się, że ujawnienie nie brzmi jak oskarżenie.

Nadal musisz się upewnić, że powiesz im dokładnie, czego od nich chcesz i dlaczego nie możesz tego zrobić sam (ponieważ jeśli możesz to naprawić, to dlaczego narzekasz, szybko to naprawiaj i idź dalej, nie zrobili tego, aby stworzyć dla Ciebie pracę, musieli rozwiązać swój własny problem).

Upewnij się również, że ich kierownik lub kierownik projektu jest świadomy i zgodził się, aby to naprawić.

Nie mogą zdecydować, co zrobić z własnym czasem i otrzymać zlecenie od swojego menedżera / kierownika projektu.

Przyjście i rozmowa o błędzie w bilecie, który powinien być już zrobiony, bez robienia tych rzeczy wcześniej i bezpośredniego adresowania ich spowoduje stres i wrażenie, że chcesz, aby wykonali pracę w czasie, w którym są przypisani do czegoś innego lub w wolnym czasie.

Steve B
2018-05-04 17:49:36 UTC
view on stackexchange narkive permalink

Większość konfliktów lub problemów z ludźmi wynika z podstawowych procesów. Z pewnością tak jest w tym przypadku.

Ty, Twoi koledzy, Twoja firma i, co gorsza, Twoi ostateczni klienci jesteście ofiarami nieudanych procesów, które powinny być wdrożone, aby zarządzać jakością i integralnością połączonego kodu.

Myślenie a działanie z tej perspektywy jest kluczem do rozwiązania podstawowych problemów z jakością, które bezpośrednio doprowadziły do ​​problemów, których doświadczasz. Jest to również klucz do znalezienia wspólnej płaszczyzny z kolegami (np. Łatwo będzie Ci dojść do porozumienia w kwestii procesów, które sprawiają Ci cały ból).

Andrew Ebling
2018-05-07 17:22:54 UTC
view on stackexchange narkive permalink

Chociaż prawdopodobnie chcesz po prostu wykonać swoją pracę i rozwijać się w swojej karierze, jeśli jesteś postrzegany jako osoba, która chce zmierzyć się z bardziej doświadczonymi współpracownikami, zniszczysz swoje relacje zawodowe z tymi, którzy są najlepiej przygotowani aby ci pomóc.

Moją radą byłoby zaproponowanie poprawki, albo w szczegółach (na przykład jako pull request), albo w zarysie ogólnego podejścia, które zaproponowałbyś jako rozwiązanie. Zanieś to osobie, której kod uważasz za złamany i poproś o opinię. A co najważniejsze posłuchaj odpowiedzi .

To przedstawia współpracownikowi, któremu być może właśnie przerwałeś, rozwiązanie, a nie problem, a tym samym dodatkową pracę. Nie tylko prawdopodobnie dowiesz się czegoś z otrzymanej odpowiedzi, ale będziesz postrzegany jako pomocny i działający w zespole.

Jak sugerowali inni, musisz to spersonalizować. Powinna istnieć zbiorowa własność kodu. Mniej „zepsułeś moje zmiany!” i bardziej jak „w jaki sposób możemy sprawić, by obie zmiany dobrze ze sobą współpracowały?”

Możesz również zastanowić się, czy można poprawić komunikację podczas codziennych konfrontacji (jeśli je masz - lub zasugeruj wprowadzenie ich, jeśli nie), więc ogólnie rzecz biorąc, istnieje większa świadomość tego, nad czym ludzie pracują, a tym samym mniejsze prawdopodobieństwo konfliktu lub przełamania zmian.

Zapewnienie odpowiedniego poziomu szczegółowości podczas stand-upów jest trudne, ale jeśli Twoi koledzy nie są nie zdając sobie sprawy z szerokiego obszaru kodu, w którym pracujesz, możesz rozważyć podanie nieco więcej szczegółów.

Coś innego, o czym należy pamiętać - jako młodszy, ale mniej doświadczony programista jest całkiem możliwe, że potrafisz kodować szybciej niż Twoi bardziej doświadczeni koledzy (młodszy, bystrzejszy mózg to czasami prawdziwy atut!), jednak powinieneś zdaj sobie również sprawę z tego, że Twoi starsi koledzy mają przewagę dzięki doświadczeniu i mogą być bardziej rozważni w swoim podejściu na podstawie ich wieloletniego doświadczenia. Rzeczywiście, większość projektów rozwojowych bardziej przypomina maratony niż sprint na 100 metrów. Najlepsze zespoły mają doświadczenie na każdym poziomie.

KishKash
2018-05-04 01:17:04 UTC
view on stackexchange narkive permalink

Jak mam mu przekazać, że przychodzę z dobrymi intencjami, ale także sprawić, by zrozumiał (i zgodził się), że to on powinien wprowadzić wymagane zmiany, aby naprawić uszkodzony kod / moduł?

Zgadzam się z większością z tego, co zostało już powiedziane. Różni ludzie różnie interpretują ten sam komunikat, a to, co jedna osoba postrzega jako całkowicie normalną, skuteczną komunikację, dla innej jest irytujące lub onieśmielające - z jakichkolwiek powodów. Ta osoba prawdopodobnie komunikuje (pośrednio), że uważa twój styl za nieprzyjemny. Następnym razem spróbuj czegoś innego. Spróbuj zmienić ustawienie - złap go raczej przy fontannie niż przy jego siedzeniu. Usiądź obok niego, zanim zaczniesz rozmowę, zamiast stać nad nim. Wypróbuj różne podejścia - kieruj się zdrowym rozsądkiem.

I jeszcze jedna rzecz, którą mogę zasugerować, spróbuj zrównoważyć twoją z nim komunikację. Jeśli jest wrażliwy na to, że wytykasz jego błędy, znajdź okazje, by (szczerze) pochwalić go za sprytne projekty lub skuteczne wykonanie - w przypadku większości ludzi to bardzo dużo.

cpphilosophy
2018-05-04 15:13:00 UTC
view on stackexchange narkive permalink

Najłatwiej sobie z tym poradzić. Zamiast tego pozwól deweloperowi dyskutować z zakończeniem niepowodzenia testu. Zapytaj ich, jak kod ma działać, a następnie zbuduj wokół niego test. Daj im test i powiedz, że się nie udał.

Pasywno-agresywne i mogą znaleźć rozwiązanie, które zarówno przejdzie test, jak i złamie twój kod.Co w takim razie - eskalować inteligentny aleckry?


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