2009-06-06 3 views
6

G'day,Jak powiedzieć komuś, że jego mod do mojego programu nie są dobre?

Wiąże się to my question on star developers i this question regarding telling someone that they're writing bad code ale szukam w sytuacji, która jest bardziej szczegółowy.

To znaczy, w jaki sposób mogę powiedzieć "gwiazdce", że ich zmiany w programie, który napisałem, są słabo wykonane i niespójnie wprowadzone w życie, nie brzmiąc tak, jakbym był zły na kogoś "bawiącego się moimi rzeczami"?

Nowa dodana funkcjonalność została celowo pominięta w pierwotnej wersji tego skryptu powłoki, aby była tak prosta, jak to tylko możliwe, dopóki nie zorientujemy się, jakie błędy wystąpią w systemie z obciążeniem.

Zasadniczo argumentowałem, że próba odgadnięcia wszystkich błędów okazała się niemożliwa i w rzeczywistości mogła doprowadzić nas do zejścia z całkowicie niewłaściwej ścieżki po wykonaniu dużej pracy.

Po obejrzeniu tego, co potrzebne do dodania, ktoś zanurkował i wykonane dodatki ale niestety:

  1. logika nie jest zgodny
  2. nazwy zmiennych nie opisują zawartych w nich danych
  3. tam prawie nie ma żadnych komentarzy
  4. sposób, w jaki zmienne są używane, nie jest łatwy do naśladowania i znacznie zmniejsza czytelność, a tym samym łatwość konserwacji.

Zawsze staram się podchodzić do kodowania z punktu widzenia Damiena Conwaya "Zawsze koduj tak, jakby twój system był utrzymywany przez psychopatę, który wie, gdzie mieszkasz". To znaczy, staram się ułatwiać śledzenie, a nie reklamę własnego blasku. "Co robi ten fragment kodu?" ćwiczenia są zabawne i najlepiej zostawić je na konkursy zaciemniania IMHO.

Wszelkie sugestie bardzo otrzymane.

okrzyki,

+2

Co powiesz na pokonanie go z książką o dobrych praktykach w zakresie kodowania? ;-) –

Odpowiedz

10

Byłbym po prostu szczery. Nie musisz wskazywać na każdy najmniejszy szczegół, ale warto mieć kilka przykładów ogólnych punktów, które zamierzasz zrobić. Możesz zanotować inne przykłady, które nie wywołują w pierwszym krótkim spostrzeżeniu, na wypadek, gdyby zakwestionowały twoje rozumowanie.

Spróbuj się upewnić, że informacja zwrotna dotyczy wyłącznie kodu , a nie osoby. Na przykład:

Dobrze: Walidacja argumentu w foo() wydaje się być niezgodna z tą w bar(). W wersji foo() jest wywoływana NullPointerException, jeśli wywołujący przechodzi pod numer null, natomiast bar() wyrzuca IllegalArgumentException.

Złe: Twoja walidacja argumentów jest wszędzie. Rzucasz NullPointerException w foo(), ale IllegalArgumentException w bar(). Staraj się być konsekwentny.

Nawet z "proszę" drugi formularz mówi o kamerze , a nie o kodzie.

Oczywiście w wielu przypadkach nie trzeba się martwić o bycie tak ostrożnym, ale jeśli sądzisz, że będą bardzo wrażliwe, warto podjąć wysiłek. (Przeczytaj uważnie napisaną, czy jest to pisemna opinia: przypadkowo włączyłem "ty" w pierwszej wersji na początek :)

Zauważyłem, że większość programistów (superstar lub nie) jest całkiem uzasadniona akceptując: "Nie, nie zaimplementowałem tej funkcji, ponieważ ma ona problem X." Możliwe, że miałem szczęście.

+0

Chciałbym pójść dalej i powiedzieć, że opinia powinna w całości dotyczyć tego, co należy zrobić, a nie co jest nie tak. Nie mów: "Nie mogę zaakceptować tego kodu, ponieważ nazwy zmiennych są złe." Powiedz: "Podoba mi się to, co zrobiłeś, ale nazwy zmiennych muszą zostać poprawione, zanim będę mógł uwzględnić twoje zmiany." Jeśli nie chcesz w ogóle korzystać z tej funkcji, zasugeruj, aby rozwinęły Twój projekt. –

1

Jeśli jasno określone standardy kodowania dla projektu podkreślają, że kod musi być zmieniony w celu spełnienia tych norm. Lista, którą tam masz, wydaje się całkiem sensowną informacją zwrotną (chociaż # 3 jest mocno spierająca się, tylko popchnęłbym do udokumentowania naprawdę mylących części, jako że ustalenie pozostałych trzech punktów, miejmy nadzieję, sprawi, że kod będzie mniej mylący).

1

Jeśli istnieją inne przykłady, które masz w swoim repozytorium od tego dewelopera sprzed kilku miesięcy, pokaż mu i zapytaj, co robi. (Pokaż mu to za kilka miesięcy). Kiedy musi się zamykać, aby dowiedzieć się, co właściwie jest w jego zmiennych, i dekonstruować każdy wiersz kodu, aby dowiedzieć się, co robi. Przerwij sesję przeglądu kodu/parowania tutaj. Refaktor i zmień nazwę razem, aby mieć nadzieję, że sam zobaczy, dlaczego te rzeczy są ważne.

6

Pochodząc z innej perspektywy, zachęcam do zastanowienia się nad tym w swoich butach. Opiszę "hipotetyczne" doświadczenie.

Niektóre rzeczy o których warto pamiętać:

  • Facet starał się coś zrobić dobre.
  • Programiści są okropni w czytaniu umysłu . Zwykle wiedzą tylko, co czytają.
  • Możliwe, że nie otrzymał pełnych wskazówek, co należy zrobić (lub co nie musi być robione).
  • Prawdopodobnie robi najlepiej, jak umie.

Po prostu miej to na uwadze i porozmawiaj z nimi. Naucz ich. Nie ma potrzeby krzyczeć lub pissing konkursów. Pamiętaj tylko, że nie zamierzają utrudnić życia.

3

Widzę, że zadałeś wiele pytań o to, jak radzić sobie z niektórymi rodzajami programistów. Wygląda na to, że jest to dla ciebie wspólny wątek. Ciągle pytasz o to, jak zmieniać ludzi wokół siebie. Jeśli jest to dla ciebie stały problem, być może jesteś problemem.

Teraz wiem, że zadajesz pytania, aby dowiedzieć się, jak radzić sobie z ludźmi, których uważasz za trudne, i to dobrze, jednak wciąż pytasz (i otrzymujesz odpowiedzi) o tym, jak zmieniać ludzi.

Wydaje mi się, że musisz się zmienić. Pracuj z tymi osobami, aby zmienić kod na taki, jaki chcesz. Z nimi. Nie próbuj ich zmusić do tego. Po prostu zrób to i powiedz im, co zrobiłeś i dlaczego, i poproś o sugestie dotyczące dalszych ulepszeń i ucz się od siebie nawzajem. Odtwarzaj swoje doświadczenia i mocne strony. Tylko moje 2 centy.

+0

@Richard, dzięki za informację zwrotną. Szukałem trochę duszy w tej sprawie. Właściwie to, co śmieszne, to właśnie te wszystkie pytania, które zadawałem, dotyczą tej samej osoby! (-: –

1

Szczerze mówiąc, uważam, że jest to problem polityczny, a nie kodowanie.W szczególności ...

  1. KTO POWIEDZIAŁ, ŻE TA OSOBA MIAŁO "GWIAZDĘ"? Jeśli jest to ta sama osoba, którą opisałeś w swoim drugim pytaniu, masz już tam odpowiedź: TO OSOBA JEST NO "GWIAZDKA".

Więc potem dostać się do innych efektów polityki ...

  1. Kto twierdzi tę osobę być gwiazdą? Dlaczego nie możesz po prostu powiedzieć osobie "to jest bzdura"? Kto ich chroni/broni ich, czy to zrobiłeś? Czy możesz to zrobić, czy zostałbyś przeklęty/zdegradowany/nałożony na stos "do zwalniania"?

Zadajesz pytania, na które w rzeczywistości nie można odpowiedzieć w odosobnieniu. JEŻELI kod to bzdura, wyrzuć go i wykonaj to sam. JEŚLI istnieją powody, że nie możesz tego zrobić, to musisz zadać sobie pytanie, czy korzyści z tego miejsca przeważają nad negatywami.

Cheers,

-R

1

Tworzenie program, a następnie zwalniając go do przepracowania przez innych programistów jest trudne. Rzucacie swój kod na łaskę innych stylów rozwoju, konwencje kodowania itp.

Mówienie programistom, że źle kodują, po wpisaniu kodu, jest jedną z najtrudniejszych rzeczy, które można zrobić. Najlepiej rozwiąż swoje obawy, zanim zaczną pracować z Twoim kodem. Można to zrobić na dwa sposoby: Utrzymanie szczegółowego standardu kodowania, wymaganie, aby zgłoszony kod przylegał do tego i utrzymywanie mapy drogi rozwoju, a nie tylko szkicowanie, kiedy pojawią się nowe funkcje, ale tworzenie zależności w celu uniknięcia takich zdarzeń losowych.

Co ważniejsze dla twojej sytuacji, ważne jest, aby nie krytykować lub nie powodować wrogości i gorszego kodu. Być może możesz wspólnie z tym programistą tworzyć dokumentację standardów. Będziesz mógł wyrazić swoje poglądy na temat tego, jakie normy powinny być, a dostaniesz ich wkład, bez powodowania żadnych trudnych uczuć.

Zawsze wskaż dobre rzeczy w swoim kodzie i bądź pewny, że omawiając słabości, które im wskażesz, wskazując powody, dla których przyniesie to korzyści każdemu (włączając programistę), nigdy nie krytykuj.

Powodzenia.

1

chciałbym wykonać następujące czynności:

  • Upewnij się, że wie, że jego ciężka praca jest doceniana (najlepiej, powinno to być prawdą)
  • Zapytaj go, czy on nic co kilka zmian, dzięki czemu brzmi to jak bezużyteczne i łatwe do naprawienia. Wyjaśnij problemy, w tym przyczyny problemów, i zasugeruj konkretne zmiany, aby ustawić go na właściwej ścieżce.

Mam nadzieję, że ćwiczenie pomoże mu lepiej zintegrować się z projektem kultury.

1

Staramy się rozwiązać te potencjalne problemy „” proaktywnie:

  • Każdego „większy” projekt, gdzie ludzie pracują razem zostaje przydzielony projektu codelead '(jeden z programistów). Obraca to każdy projekt (w zależności od preferencji, doświadczenia z konkretnym zadaniem ...), tak aby każdy mógł od czasu do czasu być w roli "wnosząc wkład" i "projektując kod".
  • Jesteśmy jawnie zawarli umowę, że nich projekt „prowadzi” może zdecydować co chcą z kodem składki z innymi (rodzaj jak tymczasowej dyktatury: zmiana to, sugestie, prosić ludzi, aby powtórzyć rzeczy itp.). Kod projektu "ołów" ponosi pełną odpowiedzialność za zagregowany kod .

Myślę, że z tymi sformalizowanymi "namiarami" (i zmieniającymi się rolami) ludzie mają mniej problemów z (konstruktywną) krytyką części, które wnoszą.

1

Tak, zachowaj opinie w sposób doceniający, profesjonalny i techniczny, jak to możliwe, poprzyj swoje obawy możliwymi scenariuszami "najgorszego przypadku", aby wady tych funkcji i/lub tej konkretnej implementacji stały się oczywiste.

Ponadto, jeśli chodzi o funkcje/kodu, które są bardzo specyficzne i nie są w jakikolwiek sposób użyteczne dla większości użytkowników, wyrazić swoje obawy dotyczące stosunku Kod/obsłudze - wskazujących obawy o zwiększonej złożoności kodu bazowego itp

Idealnie, przedstaw swoje obawy jako otwarte pytania - w sensie: "Chociaż zastanawiam się, czy ten sposób działania może działać w dłuższej perspektywie, ze względu na ...". Abyś rzeczywiście zachęcał do aktywnego dialogu między współpracownikami.

Zaproś swoich współpracowników i użytkowników, aby przedstawili swoje opinie na temat tych problemów, w rzeczywistości poproś inne osoby/współpracowników o to, co myślą o tym dodatku (pod względem zalet & wad, wymagań, jakości kodu), zrób oświadczenie że chcesz ponownie rozważyć swoją aktualną pozycję, jeśli inni współpracownicy/użytkownicy mogą zapewnić odpowiedni wgląd.

Jesteś w zasadzie zachęcanie nieformalną opinię, że sposób, prosząc społeczność również przyjrzeć się z proponowanymi dodatkami, tak że zalety i wady mogą być dyskutowane.

Bez względu na to, jaka będzie decyzja, będzie ona wspierana przez społeczność, a nie tylko przez Ciebie.

Ty jako architekt oryginalnego projektu, są również w doskonałej pozycji, aby zapewnić przyczyn architektonicznych, dlaczego coś nie jest (jeszcze) nie nadaje się do włączenia/wdrożenia.

Jeśli stabilność, kompleksowość i jakość kodu są poważnym problemem, nie pokazują, jak inne wkłady musiał także przejść pewien proces przeglądu, aby być do zaakceptowania.

Można również wspomnieć, jak konkretny kod nie pasuje do obecnego projektu lub w jaki sposób może nie być zbyt dobrze skalowany z przyszłym rozszerzeniem do obecnego projektu, podobnie można podkreślić, dlaczego pewne rzeczy zostały wyraźnie pominięte.

Jeśli rzeczywiście jak funkcji lub ideą, należy podkreślić doskonały dodatek te cechy stałaby jeśli prawidłowo wdrożony i zintegrowany, ale także podkreślić, że obecna implementacja nie jest to właściwe ze względu na liczba powodów.

Jeśli możesz, poczyń konkretne sugestie dotyczące ulepszeń, podaj przykłady, jak robić rzeczy lepiej, a czego unikać i wyrażać, że masz nadzieję, że można je przerobić, aby dodać je z pomocą społeczności Twojego projektu.

Najlepiej, jeśli przedstawisz swoje wymagania dotyczące faktycznego zaakceptowania tego wkładu i wspominasz kontekst swoich wymagań, możesz w rzeczywistości powiedzieć, że sam nie cierpisz niektórych z tych wymagań.

Najlepiej, prezentuj i omawiaj sytuacje, w których sam przyczyniłeś się do podobnego kodu (lub nawet gorzej) i że skończyłeś z poważnymi problemami związanymi z własnym kodem, więc zasady te są już dostępne, aby zapobiec takim problemom. Mówiąc o swoim złym kodzie, możesz być bardzo subiektywny.

Podkreśl, że na ogół doceniasz sam wysiłek i że jesteś gotów udzielić niezbędnej pomocy i wskazówek, aby dany kod był lepszy i lepiej dopasowany. Zachęcaj także, aby podobny wkład w przyszłości był odpowiednio koordynowany w obrębie twojej społeczności, aby uniknąć podobnych problemów.

Zawsze myśl w kategoriach funkcji i funkcjonalności (i przypomnij o tym, aby Twój współpracownik robił to samo), a nie kodu - wyobraź sobie, że jest to proces dokładnego sprawdzania kodu, w którym ostateczny kod, który ostatecznie zostanie zatwierdzony/zaakceptowany, może nie mieć cokolwiek wspólnego z pierwotną implementacją.

To znowu dobra okazja, aby zaprezentować przykłady, w których sam opracowałeś kod, który w dużej mierze został przerobiony, tak że znaczna jego część została zastąpiona przez znacznie lepszą implementację.

Podobnie, zawsze jest problem z kodem, który nie ma aktywnych opiekunów, więc równie dobrze możesz zasugerować, że jesteś zaniepokojony kodem, który może zakończyć się brakiem opieki, możesz nawet zapytać, czy odpowiedni programista byłby skłonny pomóż zachować ten kod, być może w oddzielnym oddziale.

W tym samym znaczeniu zawsze należy wymagać dodania nowego kodu wraz z odpowiednimi komentarzami, dokumentacją i innymi aktualizacjami. Innymi słowy, kod, który dodaje nowe lub zmienia istniejącą funkcjonalność, powinien zawsze być uzupełniony aktualizacjami do całej stosownej dokumentacji.

Ostatecznie, jeśli od razu wiesz, że nie możesz i nie zaakceptujesz żadnego z tych kodów w najbliższej przyszłości, możesz przynajmniej zaprosić programistę do oddziału, a nawet do rozwidlenia projektu, być może w twoim repozytorium iz twoją pomocą i wskazówki, aby nadal wyrażać swoją wdzięczność za współpracę z projektem.

Powiązane problemy