Mój szef chce wyjaśnienia naszego kodu po angielsku, wiersz po wierszu

155

Zostałem specjalnie poproszony o udzielenie wyjaśnienia lub komentarza wiersz po wierszu (lub odpowiednio - na przykład obraz po obrazie itp.), Który mój szef chce móc przeczytać i śledzić.

Ponieważ nie jest programistą, nie może postępować zgodnie z kodem, dlatego chce, aby wszystko zostało przetłumaczone na angielski.

Czy ktoś wcześniej został o to poproszony?

Skomentowałem cały kod źródłowy i użyłem JSDoc do wygenerowania pełnej dokumentacji wszystkich funkcji, zmiennych itp. I zawierałem przykład implementacji oraz w pełni działające dema z komentarzami w całym tekście .

Czy jest coś jeszcze, co mogę zrobić, aby skomentować kod dla osób niebędących programistami?

To nie jest rozsądna prośba, prawda?


AKTUALIZACJA

W końcu udało mi się wyjaśnić, dlaczego nie warto było robić czasu, o co prosił. Jest rozsądnym facetem i po prostu nie rozumiał, na czym polega moja praca. Kiedy zobaczył ten post, myślę, że szybko zrozumiał, że nie była to normalna prośba.

Dostarczyłem dokumentację odpowiednią dla innego programisty (JSDoc i komentarze wbudowane - a także kilka dodatkowych uwag na temat problemów technicznych) oraz bardzo szeroki schemat blokowy głównej logiki programu, którą powinien podążać mój szef.

W końcu wszystkie strony były zadowolone i ruszyliśmy dalej.

Billy Moon
źródło
Zablokowane z powodów historycznych, zobacz „Blokowanie najczęściej zadawanych pytań, które są zamknięte”, aby uzyskać więcej informacji.
yannis

Odpowiedzi:

160

Nie , to nie jest rozsądna prośba!

ROZMOWAJ GO Z NICH , lub niech ktoś inny go z tego wyciągnie. To irracjonalny pomysł, który, choć wykonalny, jest tak drogi, że tak naprawdę nigdy nie powinien zostać zrealizowany. Przegląd funkcji i podprogramów jest rozsądny, ale „wyjaśnienie” każdej linii kodu nie jest. Bardziej efektywne byłoby dla niego nauczenie się czytania języka, niż robienie tego.

Następną rzeczą, o którą poprosi, będzie tłumaczenie formuł matematycznych lub czegokolwiek innego na tekst angielski. Chociaż z pewnością jest to możliwe, wprowadza wiele miejsca na błędy i błędną interpretację i nigdy nie należy tego robić. Podobnie jak „tłumaczenie” kodu na angielski.

wieża
źródło
Ciekawe: przeczytaj wykłady Richarda Feynmansa na temat fizyki. Przekonasz się, że wiele z nich to starannie sformułowany argument w języku angielskim (jeśli X to Y musi być prawdziwe, a zatem Z ... itd.). Małe matematyki. Chodzi mi o to, że możesz wyjaśnić wszystko po angielsku. To, czy POWINNIŚCIE to inna sprawa.
szybko_now
1
@quickly_now - Przeczytaj je dawno temu na studiach. Niezła lektura. Zgadzam się, możesz to wyjaśnić - możesz to wytłumaczyć w dowolnym języku, gdy osoba, której tłumaczysz, już rozumie „abstrakcję” (kod, równanie matematyczne i jego znaczenie ...) // Jeśli nie rozumie t - będziesz miał problem z wyjaśnieniem tego w dowolnym języku.
Wieżowiec
4
@Rook - dobry punkt. Wyjaśnienie mechaniki kwantowej prymitywnemu plemieniu, którego słownictwo ogranicza się do kierunku, w którym poruszał się Ełk, byłoby trochę trudne.
szybko_now
Mogłem czasami uzyskać „intencję” twojego menedżera do mikro-zarządzania. Ale jeśli kod sam w sobie był bardzo przejrzysty, może po prostu odczytać go jako tekst w języku angielskim.
Arvind Chinniah,
150

Czy masz dokumenty projektowe ? Są to angielskie wyjaśnienia tego, co robi kod. Menedżer niebędący programistą nie powinien potrzebować więcej.

xtian
źródło
15
Dlatego sprecyzowałem: „Menedżer niebędący programistą nie powinien potrzebować więcej”.
Malfist
35
@Loren Pechtel: Chciałbym tam odwiedzić witrynę i oglądać, jak ten facet rzeczywiście czytał strony „Utwórz zmienną całkowitą o nazwie X. Ustaw ją na 0. Utwórz zmienną całkowitą o nazwie Y. Ustaw ją na 0. Utwórz zmienną całkowitą o nazwie Z Ustaw na 0. Utwórz zmienną całkowitą o nazwie Pozycja X. Ustaw na 0. Utwórz zmienną całkowitą o nazwie Pozycja Y. Ustaw na 0. Utwórz zmienną całkowitą o nazwie Z. Ustaw na 0. Utwórz zmienną całkowitą o nazwie Rotacja X. Ustaw na 0. Utwórz zmienną całkowitą o nazwie Rotacja Y. Ustaw na 0. Utwórz zmienną całkowitą o nazwie Z rotacja. Ustaw na 0. ”...
FrustratedWithFormsDesigner
9
@Frustated Jest to o wiele łatwiejsze dzięki podświetlaniu składni! „ [p32767, l21, c8] Zwiększ pXo wielkość an Integer. Zwiększ Sumo wartość wskazywaną przez pX. Zwiększ io 1. Jeśli ijest mniejsza niż 3, przejdź do strony 32768, wiersz 17, kolumna 42. W przeciwnym razie przejdź do strony 32767 , wiersz 21, kolumna 8.
Mateen Ulhaq
9
@muntoo, musisz wstawić wszystkie te funkcje, abyś nie musiał przeskakiwać między stronami. W przeciwnym razie można mieć problem z odzyskaniem stosu.
Kibbee,
15
@ Frustrated: Więc czyj głos sobie wyobrażasz? Nie mogę się zdecydować między Seanem Connery i Morganem Freemanem.
Beta
113

Czy istnieje nagroda mikro-menedżera roku? Wygląda na to, że twój szef zasługuje na nominację. Ktoś, kto uważa, że ​​potrzebuje zrozumienia kodu wiersz po wierszu, ale nie chce nauczyć się go czytać bezpośrednio, jest tak doskonały jak mikro-manager, jak można sobie wyobrazić.

Jedną z zalet bycia programistą jest to, że trudność w zrozumieniu kodu uniemożliwia mikrozarządzanie w pewnym stopniu, przynajmniej na poziomie szczegółowego wdrożenia, przynajmniej przez zarządzanie nietechniczne, ponieważ nawet najbardziej wymagający mikromanager rozpoznaje, że są nad ich głową na tym poziomie. Ale geniusz twojego szefa może znaleźć sposób na zniszczenie silikonowej kurtyny.

I, jako bonus, marnuje ogromną ilość czasu programisty na tłumaczenie, nawet zanim użyje angielskiego tłumaczenia, aby zacząć sugerować różne ulepszenia (zakładam, że wie, jak kodować lepiej niż programiści, chociaż nie może przeczytaj kod i będzie mógł dzielić się swoją mądrością, gdy tylko ktoś ją przetłumaczy, w przeciwnym razie dlaczego miałby potrzebować tłumaczenia każdej linii?).

Więc nie, to nie jest rozsądna prośba i nigdy o niej nie słyszałem. I współczuję tobie. Myślę, że każdy może potrzebować zacząć po cichu szukać innej pracy, ponieważ kiedy zacznie używać tłumaczenia kodu jako narzędzia zarządzania, prawdopodobnie będzie to brutalne miejsce do pracy (er, bardziej brutalne miejsce do pracy).

Na plus, może uda ci się uzyskać nowy anty-wzór nazwany na cześć twojej sytuacji? Co powiesz na anty-wzór „Brudny węgierski rozmówki” po skeczu Monty Pythona, w którym sklep tytoniowy próbuje komunikować się z kimś, kto nie mówi po angielsku, używając węgierskiego rozmówki z komicznie fałszywymi tłumaczeniami?

psr
źródło
21
+1 za zdiagnozowanie mikrozarządzania. Według moich słów: stamtąd stwórz f___!
tdammers
@tdammers: na szczęście jest to coś, co mogę powiedzieć mojemu szefowi. Jest dobrym facetem poza tym, że jest szefem!
heltonbiker,
5
Menedżer, który musi zrozumieć każdą linię kodu, nazywa się programistą.
James P.
91

Usiądź z nim i porozmawiaj z nim przez 10 wierszy kodu. Wyjaśnij każdy szczegół, dopóki oboje się nie zgodzicie, że rozumie go w takim zakresie, w jakim chciał.

Może to wszystko, czego szuka: wrażenie, jak wygląda twoja praca i jak wygląda oprogramowanie z twojego punktu widzenia. To dobrze w mojej książce.

Jeśli po tym nadal chce, abyś kontynuował, powiedz: zauważ, ile pytań musiałem zadać; wyobraź sobie, że musiałbym to wszystko wyjaśnić, nie mogąc zadawać pytań, skąd mógłbym wiedzieć, co uwzględnić, a co pominąć? Ile czasu zajmie, zanim wyniki będą dla Ciebie przydatne? Ile linii chcesz, abym zrobił w ten sposób?

reinierpost
źródło
57
Upewnij się, że po dwóch godzinach wyjaśniania dziesięciu wierszy zrozumie on, że zostało 50 000 (lub cokolwiek) wierszy kodu do wyjaśnienia.
HLGEM,
6
Właściwie to bardzo rozsądny sposób na kontynuację. Spraw, by zobaczył ignorancję swoich dróg.
Kibbee,
4
@reinierpost: twoja metoda jest genialna.
heltonbiker,
5
Jeśli masz zamiar to zrobić, najpierw powiedz szefowi, dlaczego jest to ogólnie zły pomysł, a następnie zademonstruj. Jeśli tego nie zrobisz, może się to wydawać, jakbyś naciągnął na niego „lewę” i postawił go w defensywie.
nerdytenor
5
Nigdy nie mów ludziom, że ich pomysły są złe !! Możesz jednak przedyskutować, co trzeba zrobić, aby się spełniły, a może nawet podać kilka pomysłów na skróty. Jeśli to doprowadzi ich do wniosku, że pomysł nie był wykonalny, lub sprawi, że początkowy pomysł przekształci się w coś zupełnie innego, i w pewnym momencie powinni to zauważyć, wzruszą ramionami i powiedzą: to życie.
reinierpost
43

Nie sądzę, żeby to była rozsądna prośba. KOD ŹRÓDŁOWY nie jest przeznaczony do czytania w języku angielskim (ani w żadnym innym języku).

Może boi się, że zmusisz swój kod do zrobienia czegoś, czego nie zaakceptuje lub o czym nie wie. W takim przypadku nie sądzę, że można coś z tym zrobić. Będziesz musiał napisać dokumentację lub przekonać go / ją do zatrudnienia kogoś do audytu twojego kodu.

Pablo Santa Cruz
źródło
13
Nawet przy tłumaczeniu na angielski , nieprogramiści mogą bardzo wierzyć:/* and this line is transferring deposits to the correct account */ deposits.TransferAll(acctInfo);
IAbstract
15
Jeśli szef „boi się, że zmusisz swój kod do zrobienia czegoś, czego nie zatwierdzi lub jest tego świadomy”, nie zrobi nic, aby złagodzić jego obawy. Ta sama osoba zapewnia tłumaczenie, który napisał kod. Co powstrzymuje ich przed kłamaniem na temat tego, co robi? Tu dzieje się coś jeszcze.
mmc
4
COBOL miał być czytany w języku angielskim.
oosterwal
1
Być może próbuje dowiedzieć się, co robi kod, aby sprawdzić, czy zgadza się z rozumowaniem i być może uzyskać lepsze pomysły. W każdym razie nie jest to jego zadaniem, przynajmniej nie w ten sposób ...
heltonbiker
32

To naprawdę jest bardzo proste:

  • Zostałeś zatrudniony ze względu na swoje umiejętności programistyczne
  • Twój menedżer nie ma tych umiejętności
  • Ergo, twój menedżer nie powinien racjonalnie oczekiwać, że będzie w stanie w pełni zrozumieć, co robisz

Miałem podobne doświadczenie w poprzedniej pracy. Mój kierownik był księgowym (a więc zorientowanym na szczegóły na niskim poziomie) i nie rozumiał ani nie ufał programowaniu. Nie mogła pojąć, że jako osoba nietechniczna nie powinna oczekiwać, że będzie w stanie uchwycić najdrobniejsze szczegóły tego, co napisałem. Po wielu prośbach o nadmierną dokumentację i szkoleniach nietechnicznych użytkowników w zakresie zarządzania i modyfikacji kodu (tak, naprawdę), przestałem próbować ją wyrzucać i wprost odmówiłem. Analogia, którą wyjaśniłem, była prosta:

  • Nie jestem księgową
  • Nie powinienem oczekiwać, że zrozumiem każdą pojedynczą transakcję lub księgowanie na naszych kontach
  • Nie oznacza to, że konta są błędne lub niewiarygodne, po prostu dlatego, że ich nie rozumiem
  • Jest to możliwe dzięki zaufaniu osobie, która je skompilowała

Na koniec tak to dla mnie brzmi: kierownik, który ma trudności z zaufaniem swoim pracownikom; lub obawia się, że odejdą, i uważa, że ​​jest to skuteczny sposób na złagodzenie tego.

Jedynym rozwiązaniem tego jest usiąść i wyjaśnić, dlaczego nie ma to sensu. To twoja praca, aby zrozumieć kod i pozwalają na kogoś z podobnym zestawem umiejętności do Ciebie, aby je zrozumieć, a nie Twój menedżera. Pokazanie im tego wątku może być dobrym pomysłem (lub naprawdę, naprawdę okropnym, w zależności od ich osobowości).

John N
źródło
jak twój kierownik przyjął twoje wyjaśnienie?
Jeff Martin
1
Dokładnie tak, jak można się spodziewać. ;) Jednak o to chodziło i żądania zostały zatrzymane. Nie wiem, czy to dlatego, że przekonałem ją do słuszności mojego argumentu, czy też uznała, że ​​to nie było warte kłopotów i poddała się.
John N
25

Linia po linii jest absurdalna. To, co mogę zasugerować, to zaoferowanie generowania dokumentów z komentarzy i dawania mu tego. To wystarczyło w przypadku szeregu dotacji i audytów rządu kanadyjskiego, nad którymi pracowałem w przeszłości.

On nie dostanie linia po linii, ale dostanie metodę-by-metody, które powinny nadal być bardziej ziarnistość niż potrzebuje.

Niektóre istniejące rozwiązania, w zależności od platformy:

  • C #: zamek z piasku
  • Java: javadoc
  • „C ++, C, Java, Objective-C, Python, IDL (smaki Corba i Microsoft), Fortran, VHDL, PHP, C # i do pewnego stopnia D.” : doksygen
Steven Evers
źródło
Ponieważ jest Pas2Dox, dodaj Delphi do listy doxygen ;-)
Fabricio Araujo
Przejdź do linku Sandcastle. Spójrz pod wrażeniem. Kliknij kartę „Dokumentacja”. Zobacz komunikat „Ten projekt nie ma jeszcze dokumentacji”. Wyglądaj mniej niż pod wrażeniem.
Kaz Dragon,
16

Byłby o wiele szybszy, gdyby nauczył się czytać kod niż tłumaczyć cały kod dowolnej interesującej aplikacji na angielski. Poza tym próbowaliśmy tego z COBOL i to wcale nie pomogło. Jeśli nie chce się uczyć, ale chce sprawić, że jego ignorancja stanie się problemem kogoś innego, masz poważnie spiczastego szefa.

Kevin Cline
źródło
3
Myślę, że angielski powinien być językiem. Szef powinien poprosić o napisanie całego oprogramowania w języku DSL (język specyficzny dla domeny), a następnie może wprowadzić zmiany w działaniu systemu.
David d C e Freitas
Myślę, że wzmianka o Cobolu to podsumowanie. Każdy, kto wydrukował prosty świat cześć, wie, jak absurdalnie trudny jest ten język. Był to dobry krok w kierunku czegoś zrozumiałego, ale zdecydowanie zbyt formalnego.
James P.
15

Wykorzystaj swoją wiedzę techniczną, aby prześladować swojego szefa.

  1. Poinformuj go, że najpierw zajmie to tyle samo czasu, co w przypadku kodowania (możesz go przedłużyć).
  2. Zapytaj go, jak aktualny powinien być ten dokument. Poinformuj go, że wszystkie zmiany kodowania potrwają teraz przynajmniej dwa razy dłużej.
  3. Jeśli ty lub ktokolwiek znajdzie jakieś błędy, zapytaj go, czy powinieneś je teraz naprawić lub poczekać, aż skończysz kodowanie psuedo. Przypomnij mu o numerach 1 i 2.

Podobnie jak wszystkie sugestie złych rozwiązań, lepiej zidentyfikować problem. Może twój szef został dotknięty pytaniami technicznymi ze strony kierownictwa i czuje się zawstydzony, ponieważ nie jest w stanie odpowiedzieć. Może istnieć jedna szczególna sekcja kodu, która najbardziej go niepokoi, więc możesz ograniczyć to ogromne przedsięwzięcie tylko do tego obszaru.

Przesyłając próbkę, może dojść do wniosku, że jeśli nie rozumiesz, jak działa kodowanie (co to jest pętla i co robi z tymi wszystkimi elementami?), Nie ma znaczenia, w jakim języku jest. Jest lepszy zrozumienie aplikacji z perspektywy zaawansowanego użytkownika. Myślę, że to uczciwe, aby poinformować go, że wolisz pisać prawdziwy kod / wskazówkę - szukam innej pracy.

JeffO
źródło
7
musimy uważać, by określić kogoś jako „idiotę”. Chociaż jest to dla nas osobiście satysfakcjonujące dla programistów, nie wydaje mi się, aby było to profesjonalne, a wszelkie prośby kierownika, bez względu na to, jak dziwne, powinny być traktowane na podstawie jego zalet.
funkymushroom,
6
@funkymushroom: Zaletą tej prośby jest to, że jest idiotą.
DeadMG,
3
@funkymushroom - Myślę, że możemy pozwolić sobie na odrobinę lekkomyślności na tej stronie. W końcu idziesz przez funkymushroom.
JeffO
2
@Jeff: Punkt dobrze zajęty. W żadnym wypadku nie jestem kijkiem w błocie. Istnieją jednak dwa rodzaje „idioty”. „Malicious Idiot” i „Ignorant Idiot” i ja pracowaliśmy z obiema. Pierwszy należy zignorować, jest niebezpieczny dla naszych karier, a drugi może być dobrym sojusznikiem, więc powinniśmy go uczyć.
funkymushroom,
@funkymushroom - zgadzam się, więc to wyjąłem.
JeffO,
12

Dlaczego?

Komentarz linijka po linii nie jest rozsądny, ale o to zapytam: dlaczego tego chcesz?

Czy to dlatego, że ...

  • chcesz w pełni zrozumieć, co robi oprogramowanie (niekoniecznie jak)?
  • chcesz mieć pewność, że inny programista przejmie projekt, jeśli odejdę?
  • chcesz zobaczyć, że wykonuję prawdziwą pracę?

Może być uzasadnione pragnienie i możesz uszczęśliwić swojego szefa, uzgadniając to z potrzebą.

Aktualizacja

Opierając się na Mikey'skomentarzach, być może powiedziałem to trochę zbyt otwarcie. Nie chodzi mi o to, że powinieneś dosłownie powiedzieć „dlaczego tego chcesz?”, Po prostu powinieneś to odkryć . Duże znaczenie ma brzmienie i ton głosu. W szczególności możesz powiedzieć coś takiego:

„Zastanawiałem się nad twoją prośbą o wyjaśnienie każdego wiersza kodu. Robienie tego w ten sposób jest trochę niezwykłe. Zastanawiałem się, czy może jest coś, czego nie komunikuję ci dobrze na temat mojej pracy. Co tak naprawdę chcesz zrozumieć na temat naszego kodu lub tego, co robię? Co tutaj próbujesz osiągnąć? ”

Oczywiście możliwe jest, że twój szef jest całkowicie nierozsądny. Ale bardziej prawdopodobne jest, że nie wie, jak dziwna jest ta prośba, i ma na myśli racjonalny cel.

Jeśli nie, zacznij polerować swoje CV. :)

Nathan Long
źródło
-1 dla tej odpowiedzi: jeśli chcesz utrzymać swoją pracę (lub przynajmniej zostawić ją dobrowolnie), nie powinieneś pytać takiego szefa „dlaczego”? Jest to coś, co należy ukarać, jak sugerowali inni.
Wektor
3
Nie zgadzam się z komentarzem Mikeya. Ślepe wykonywanie rozkazów jest głupie. Pytanie „dlaczego?” na każde żądanie zaoszczędziło mi niezliczone godziny niepotrzebnej pracy i zaoszczędziło mojej firmie mnóstwo pieniędzy. Nazywa się to konsultacją, a ci, którzy nie boją się swoich szefów, robią to swobodnie i ze świetnym skutkiem. Kiedy ludzie, którzy dla mnie pracują, coś sugerują, pytam ich także „dlaczego?”. także. W obu przypadkach szuka uzasadnienia i jest to całkowicie do przyjęcia.
Soviut
10

Brzmi jak dobra okazja do wypróbowania programowania. Wygoogluj to. :)

Ale ... niekoniecznie jest to całkowicie nieuzasadniona prośba. Częścią twojego zadania (ważniejsza część, imo) jest przekazywanie algorytmu (algorytmów) innym programistom oraz, w razie potrzeby, osobom nietechnicznym. Wydaje mi się, że samotni genialni programiści, którzy nie potrafią się komunikować, są zawsze problematyczni.

W tym celu twój kod powinien być bardzo wyraźny (co oznacza: albo naprawdę samodokumentujący lub dobrze udokumentowany, a przez „samodokumentowanie” rozumiem, że zmienne i funkcje mają jedno znaczenie lub odpowiedzialność, a ich nazwy odzwierciedlają to wyraźnie). Twój szef może mieć dobre powody swojej prośby. Może (zgaduję tutaj) ty lub twój poprzednik macie reputację nieprzeniknionego, delikatnego kodu i to jest lekarstwo twojego szefa. Jest to trochę ekstremalne, ale może być dla ciebie pożytecznym ćwiczeniem. Zakładam, że wie, że pisanie lepszych dokumentów zajmuje dużo czasu (a jeśli tego nie zrobi, należy go uczyć - to tak jak pisanie pracy terminowej: pisanie zajmuje więcej czasu niż czytanie).

rev JohnL4
źródło
Rzuciłem okiem na stronę Wikipedii. Przypomina mi „uporządkowane <wstaw tutaj ludzki język>”, które widziałem podczas studiów. Używasz języka ludzkiego do reprezentowania struktury programowania linia po linii za pomocą wyrażeń takich if blah then add 1 to xjak alternatywa dla nassi-schneiderman lub schematów blokowych. Czy to rozumie się przez programowanie piśmienne?
James P.
Jesteś jedynym na tej stronie, który wspomniał o piśmiennym programowaniu Knutha - zastanawiam się, pod jaką skałą żyły pozostałe plakaty przez ostatnie czterdzieści lat ...
cji
@James: kup kopię „Tex - program” Knutha i przeczytaj ją. To jest umiejętne programowanie.
cji
10

Nawet tłumaczenie wiersz po wierszu nie przekazuje skutecznie znaczenia każdego wiersza kodu. Programiści rozumiejący wiersz kodu zawsze znajdują się w kontekście wielu czynników. Wejdź w coś w rodzaju wielowątkowego kodu, a angielskie tłumaczenie nie będzie miało większego sensu niż surowy kod. Pomyśl o funkcjonalności rozłożonej na wiele funkcji / plików. Niektóre kody nie mają absolutnie żadnego sensu bez wyjaśnienia dużej ilości innego kodu. Spróbuj wyjaśnić różne części związane z wtryskiem zależności „linia po linii”, a zobaczysz, co mam na myśli. Prawie wszystko, co wykracza poza kod proceduralny funkcji Boga, będzie wymagało dużej wiedzy programistycznej, aby zrozumieć tłumaczenie na angielski. Spójrz także na coś tak prostego jak oświadczenie o decyzji if / else. Nie ma linii po linii, ponieważ następny wiersz zależy od danych w czasie wykonywania. Kolejna linia może być jedną z kilku możliwości.Zanim wyjaśnisz, czym zajmuje się twoja aplikacja, uczynisz z PM swojego programistę i oboje będziecie o 5 lat starsi.

Morgan Herlocker
źródło
10

Ponieważ uczyłem programowania, byłbym bardzo szczęśliwy, mogąc spróbować.

Szybko się dowie, że dostaje więcej, niż się spodziewał, co mnie zasmuci, bo lubię tłumaczyć :-)

Mike Dunlavey
źródło
3
Myślę, że to najlepsza odpowiedź tutaj. Nie rozumiem całej niechęci do spróbowania, to znaczy, że dostaniesz wynagrodzenie za usiąść tam i wyjaśnić swój kod! Do diabła, chyba że twój kod to bzdury, prawdopodobnie spodoba ci się i bez względu na to, jak dobry jest, prawdopodobnie znajdziesz jakieś błędy i miejsca do poprawy.
Bill K
1
Miałem nauczyciela, który wyjaśniał rzeczy podczas pisania kodu wyświetlanego przez projektor. Może można to zrobić trochę jak lekcję jazdy. Jeśli nie potrafisz przejść całego kodu, możesz lepiej zrozumieć, co zostało zrobione i jak.
James P.
1
Sam próbuję zająć się nauczaniem i dałem podobną odpowiedź. Jestem z @Bill, jestem bardzo rozczarowany, że ludzie przyjęliby tak samotne stanowisko. Czy jesteśmy zepsute, że uważamy, że warto poświęcić czas na wyjaśnianie choćby niewielkiej części kodu?
Rei Miyasaka,
1
@Rei: Postawy, złe lub dobre, mają tendencję do przejmowania dużych podgrup podobnych ludzi. Mam szerokie doświadczenie (inżynier, student, profesor, konsultant, pracownik długoterminowy), więc lubię myśleć, że daje to perspektywę. Poza tym moje postawy zmieniły się na przestrzeni lat.
Mike Dunlavey,
10

Kiedy mówisz o swoim „szefie”, czy jest to „menedżer średniego szczebla odpowiedzialny za ciebie / twój zespół”? lub właściciela Twojej firmy? Czy otrzymujesz wynagrodzenie „za godzinę”, czy „z pensji”?

JEŻELI twój szef jest menedżerem średniego szczebla, który jest odpowiedzialny, ROZMÓW DO SWOJEGO BOSS, zwróć uwagę, że aby spełnić wymagania szefa, Twoja produktywność w firmie spadnie do 1/3 tego, co mogłoby być.

JEŻELI twój szef jest „facetem, który podpisuje czeki”, wyjaśnij mu to samo, tylko bardziej dyplomatycznie. Twoje zadanie zmieniło się z „Napisz kod” na „Napisz kod, napisz wyjaśnienie kodu, wyjaśnij wyjaśnienie”.

wprowadź opis zdjęcia tutaj

Cos Callis
źródło
Dlaczego tego nie zrobisz i nie weź pieniędzy? Czy jesteś pewien, że twoją jedyną wartością jest tworzenie kodu jak małpa?
Bill K
9

Schemat blokowy przyniesie mu prawdopodobnie więcej korzyści. Jest to z pewnością niezwykła prośba i niewiele mówi o nim jako menadżerze.

James
źródło
18
Właściwie wiele mi mówi o tej osobie ...
Marjan Venema,
5
To właśnie oznacza w tym kontekście „niewiele mówi” - w rzeczywistości dużo mówi, ale po prostu nie wskazuje wiele dobrego na temat jednostki.
Joseph Weissman,
8

Fakt, że twój szef jest gotowy poświęcić trochę czasu na zrozumienie napisanego przez ciebie kodu, możesz wykorzystać dla swojej korzyści. Spróbuj przedstawić go Ogórkowi: http://cukes.info/

i spraw, aby Twój szef napisał dla ciebie test BDD w przyszłości.

błysk księżyca
źródło
Od jakiegoś czasu próbuję uruchomić Ogórek w moim sklepie ... niestety (a może na szczęście!) Mój szef nie dba o to, co dzieje się za kulisami, o ile działa. Dopiero zrozumienie korzyści płynących z pisania testów było ciężką bitwą.
Jason Lewis,
6

Nie powinien zadawać sobie trudu, aby o tym wiedzieć. Powiedz mu, że wdrażanie oprogramowania może ulec zmianie. Projekt wydarzenia może ulec zmianie. Powiedz mu o ukrywaniu informacji, enkapsulacji i abstrakcji.
On, jako część twojego zespołu, jako klient twojego kodu, w szerszym znaczeniu, powinien pracować tylko z wyraźną, wysokopoziomową abstrakcją tego, co robi twój kod. W ten sam sposób każda warstwa kodu działa z inną warstwą kodu innej osoby. Wiedząc o tym więcej, spowolni go i ryzykuje, że będzie przyjmował założenia w oparciu o wewnętrzne działanie twojego kodu. Te założenia przestaną obowiązywać, gdy będziesz musiał zmienić kod, co staje się problemem, jeśli zbuduje on jakikolwiek system lub proces na ich podstawie.
A także konieczność wykonywania tego rodzaju pracy zmniejszy Twoją wydajność. Będziesz musiał nie tylko wprowadzać kolejne zmiany w dwóch różnych miejscach, ale także negatywnie wpływać na morale pracy, co jeszcze bardziej obniży wydajność.

back2dos
źródło
6

Piękno języka angielskiego polega na tym, że pięknie się zaciemnia. Jeśli wykorzystasz to na swoją korzyść, możesz nigdy nie mieć odwagi poradzić sobie z tego rodzaju prośbą ponownie. Wziąłbym mały fragment kodu jako próbkę, ale taki, który jest bardzo abstrakcyjny i wcale nie jest łatwy do zrozumienia. Następnie napisałbym komentarze w angielskim języku technicznym, tak jakbyś pisał je w rozdziale książki programistycznej. Im dłużej i bardziej skomplikowane, tym lepiej. Powiedz mu, ile godzin zajęło Ci udokumentowanie tej jednej funkcji. Następnie wyjaśnij, że jest to tylko 1/10 z 1% (użyj rzeczywistych liczb opartych na wierszach kodu, jeśli możesz, są one prawdopodobnie gorsze od tego) rzeczywistej podstawy kodu. Kiedy zda sobie sprawę, że nie ma pojęcia, co mówi angielskie tłumaczenie i że zrobienie tego poziomu dokumentacji zajmie 20 000 roboczogodzin, wycofuje się dość szybko. Ale bardzo szczerze staraj się wypełnić swoje zadanie. Don; t spróbuj tego, jeśli nie możesz tego zrobić, a on podejrzewa, że ​​go grasz.

HLGEM
źródło
6

To wygląda na kandydata do specjalnego świątecznego paska szefa Dilberta ze spiczastymi włosami ! Jego prośba z pewnością nie brzmi rozsądnie na pierwszy rzut oka.

Pomijając humor, spróbuj dowiedzieć się, czego naprawdę potrzebuje i dlaczego, a następnie poinformuj go, ile będzie to kosztować w dolarach lub godzinach, i pozwól mu zdecydować, czy chce wydać na to tyle pieniędzy.

Jeśli chodzi o ciebie, policz godziny, jakie zajmie ci spełnienie jego pozornie dziwnej prośby, a następnie ustal, czy nie lepiej byłoby zainwestować ułamek tej ilości czasu w znalezienie nowej pracy dla pracodawcy gotowego cię leczyć jako profesjonalista!

John Tobler
źródło
1
Analiza kosztów i korzyści powinna zadziałać. Może menedżer ma jakieś dodatkowe korzyści do wprowadzenia. Jeśli to się nie opłaca, trudno jest egzekwować i bronić wyższego kierownictwa.
mbx
6

Zabierz go do swojego biura i opowiedz mu o swoim kodzie.

W pewnym momencie uświadomi sobie, że wysunął absurdalne żądanie, i odejdzie i nigdy więcej nie będzie ci przeszkadzać.

Jeśli nie poddasz się jego żądaniom, aby pomóc mu w zrozumieniu twojego kodu, znajdzie inne, ale równie absurdalne sposoby, aby cię wkurzyć.

Jest to przypadek, w którym uspokajanie działa lepiej niż ścieranie.

Rei Miyasaka
źródło
+1 - Myślałem w ten sam sposób - weź go na prośbę - prawdopodobnie się nudzi i / lub przestraszy na śmierć za długo ...
Vector
+1 Podoba mi się - „działa lepiej niż ścieranie”.
Mike Dunlavey,
6

Byłoby bardzo miło, gdybyśmy mieli do tego tłumacza „Język X na angielski”. Wtedy można się uśmiechnąć i powiedzieć: nie ma problemu, szefie, będziesz miał to za minutę. A potem przychodzi wiadomość z kilkoma megabajtami tekstu o treści:

  • Niech będzie nową tablicą liczb całkowitych z 20 elementami.
  • Niech x będzie zmienną do przechowywania liczb całkowitych.
  • Ustaw x na 0
  • Podczas gdy x jest mniejszy niż 20, rób to, co jest zalecane w następnych 2 wierszach
  • ustaw element tablicy z indeksem x na wynik wywołania nThPrime z argumentem x + 1
  • zwiększyć x o 1
  • ....

Inną opcją byłoby odtąd sugerowanie programowania w Szekspir .

Ingo
źródło
Chciałem przedstawić tę samą sugestię. Szef nie chce przeglądu pojęć, chce go wiersz po wierszu, więc powinno być możliwe wykręcenie czegoś w ciągu jednego dnia, co stworzy całkowicie bezużyteczną, ale powierzchownie poprawną dokumentację. Nie miałoby znaczenia, gdyby było to gniazdo szczurów w perlu, które łatwo było pomylić przez przypadki narożne, po prostu identyfikowało deklaracje zmiennych, modyfikacje zmiennych, wywołania metod itp. (Pamiętaj, że to wiersz po wierszu, nie ma sposób porusza się po kodzie).
PhilDin
Tak, ten szef jest po prostu ignorantem. Nie wie, czym jest „abstrakcja”, nie wie, że angielski nie jest dobry do wyrażania programów komputerowych, nie wyobraża sobie, że tak naprawdę nie chce znać tych wszystkich szczegółów, dlatego płaci programistom. Dlatego zasługuje na taką lekcję.
Ingo
5

Mój szef chce wyjaśnienia naszego kodu po angielsku, wiersz po wierszu

Twardy.

Ponieważ nie jest programistą, nie może postępować zgodnie z kodem, dlatego chce, aby wszystko zostało przetłumaczone na angielski.

Jeśli nie jest programistą, nie powinien czytać kodu. W ogóle.

Zamiast tego zapewnij dokumentację wysokiego poziomu.

To nie jest rozsądna prośba, prawda?

Nie.

Lekkość Wyścigi na orbicie
źródło
4

Jako programista naprawdę masz „dwa” zadania.

Pierwszym z nich jest tworzenie dobrych programów. Drugim jest „sprzedaż” ich klientom wewnątrz i na zewnątrz firmy.

Prośba szefa „boli” twoją pierwszą pracę. Dokumentowanie programów zajmuje więcej czasu. Z drugiej strony sprawia, że ​​ciężko pracujesz nad swoją „drugą” pracą.

Twój szef prosi cię o udokumentowanie programu w języku angielskim dla JEGO korzyści, i prawdopodobnie dla korzyści osób, z którymi ma do czynienia, w firmie i poza nią. Jeśli pomożesz mu wykonywać swoją pracę, powinno to działać na twoją korzyść na dłuższą metę, kiedy poprosisz go o więcej sprzętu, personelu lub pieniędzy na podwyżki. W końcu poprosił cię o więcej pracy.

Tom Au
źródło
3
Dokumentowanie linia po linii! = Sprzedaż projektu. Powinien już istnieć dokument zawierający te informacje, zwany wymaganiami. Zgadzam się z twoim opisem 2 stanowisk, ale dokumentowanie do tego poziomu nie będzie korzystne dla sprzedaży projektu / systemu / aplikacji. Istnieje odpowiedni poziom dokumentacji do prezentacji twojej pracy, ale to nie wszystko.
cdkMoose,
Założę się, że osoba wypisująca czeki w tej firmie nie byłaby zadowolona, ​​że ​​ten menedżer marnuje tyle zasobów firmy.
JeffO,
@Jeff O: Może być. Lub może być tak, że CAŁA firma jest taka, aż do szczytu.
Tom Au
4

Myślę, że BDD będzie dobrze pasować do tego problemu, chociaż wydaje się, że twój projekt jest już prawie ukończony, więc trochę trudno go teraz wdrożyć, więc bardziej przypomina to na przyszłość.

W przypadku BDD przypadki użycia są opisywane jako czytelne dla ludzi dokumenty, które są następnie tłumaczone na zautomatyzowane testy funkcjonalne.

Teoria
źródło
To może być jak dotąd najbardziej konstruktywna sugestia. Programowanie oparte na zachowaniu ma dokładnie spełnić tę potrzebę: pomóc programistom i ich menedżerom / klientom uzgodnić, co robi oprogramowanie. Pisanie opisów pomaga w planowaniu kodu, a uruchomienie testów dowodzi, że są one nadal dokładnymi opisami.
Nathan Long,
4

Prawdopodobnie jest to dobry moment, aby dowiedzieć się czegoś takiego jak ANTLR . Weź ANTLR, weź gramatykę swojego języka, parsuj cały posiadany kod, przeglądaj AST generując opisy oparte na szablonie dla każdego węzła, więc i++jest to opisane jako increase i by 1 using postfix increment operator. To powinno być naprawdę zabawne. Twój szef może również chcieć włączyć to narzędzie do skryptu kompilacji, więc za każdym razem, gdy wprowadzisz jakieś zmiany, otrzyma około 20 MB wiadomości e-mail z opisem działania nowej wersji.

PS Żartowałem, to idiota.

Peter Mortensen
źródło
3

Chociaż zgadzam się, że jest to nieuzasadnione żądanie, twój szef może docenić coś takiego jak dane wyjściowe Docco , które dzielą twój kod i komentarze wiersz po wierszu lub klauzula po klauzuli na dwukolumnowe wyjście HTML, z kodem na jednym po drugiej stronie i proza. Oczywiście musisz sam wpisać komentarze, ale prezentacja jest raczej ładna IMHO, nawet dla nietechnicznych czytelników. Zobacz na przykład sekcję z komentarzem wiersz po wierszu kodu z komentarzem dla Underscore.js . Istnieją również wersje skryptów Python i powłoki.

Btown
źródło
To jedna z najbardziej użytecznych odpowiedzi, jakie widziałem na pytanie. W rzeczywistości próbowałem użyć docco, ale okazało się, że wystąpiły problemy z niektórymi moimi istniejącymi komentarzami i źle wyrenderowałem. Dlatego wybrałem JSDoc i postępowałem zgodnie z wytycznymi Google, aby wygenerować dokumentację. Nie tak ładny, ale bardzo kompletny, a także standardowy format. Problem z docco polega na tym, że musisz ustrukturyzować swój kod, aby pasował do komentarzy, w przeciwnym razie nie ma to sensu. Dzieki za sugestie.
Billy Moon,
3

Możliwe, że twój szef jest po prostu niedoinformowany i zastraszony, ale w rzeczywistości jest rozsądną osobą. Jeśli tak, rozumowanie z nim może zadziałać - swobodna rozmowa, w której obiecujesz dostarczyć „to, czego naprawdę chce”, tj. przewodnik po prozie na temat tego, co robi program.

Jeśli chodzi o „moją drogę lub autostradę”, lepiej sprawdź teraz swój gaz.

ddyer
źródło
3

Mógłbyś napisać kilka testów akceptacyjnych przy użyciu frameworku opartego na zachowaniu, takiego jak ogórek ? To nie wyjaśni kodu; wyjaśni, co robi, w języku naturalnym. Ma również tę zaletę, że jest wykonywalny, więc zawsze możesz mieć pewność, że dokumentacja jest aktualna, ponieważ jeśli nie, tester będzie czerwony.

Sprawdź wideo wprowadzające. Być może jest to dobra okazja do znalezienia nowego szefa ... ;-)

Peter Mounce
źródło
2

Twój menedżer prawie na pewno jest zakłopotany faktem, że nie rozumie, co ludzie robią, którymi zarządza, i nie ma wystarczającego zaplecza, aby zrozumieć wyniki, które produkują.

Wątpię, żeby dokładnie przemyślał to rozwiązanie i na pierwszy rzut oka wydawało mu się to rozsądne. Ale głównie dlatego, że nie rozumie, czym właściwie jest kod programowania.

Każdy programista rozumie absurdalność tej prośby, ale robimy to, ponieważ intuicyjnie wiemy, że kiedy przejdziesz przez język, wszystko, co zostanie ujawnione, to algorytm, który jest równie tajemniczy.

// Set s to the first address in the server list
server_info *s = cmd->servers;
// Loop until s is NULL
while (s) {
    // call the server's init function passing our current ID and address
    s->init(proc->id,*addr);
    // call log::info with our custom message
    log::info("Starting server %s",s->name);
    // Set s to the value returned by the server's next() function
    s=s->next();
} // end of loop

Problem polega na tym, że podczas gdy komentarze wyjaśniają, co robi każda linia, nadal nie masz pojęcia, co naprawdę robi kod, chyba że zrozumiesz, jakie są wszystkie konsekwencje. To oczywiste, że jesteś programistą i widziałeś już ten wzór; ale pokaż to komuś, kto rozumie tylko sprzedaż, a po przeczytaniu komentarzy będzie tak samo zdezorientowany jak wcześniej.

Możesz zaoszczędzić czas , ucząc swojego szefa podstawowego programowania. Jeśli chce przeczytać Twój kod, daj mu narzędzia, aby to zrobić. Większość języków jest dość zwarta pod względem składni, a nauka struktury zajmuje tylko godzinę lub dwie. Prawie na pewno zrezygnuje po kilku dniach, ale przynajmniej będzie wiedział, co przekazuje, a co ważniejsze, dlaczego nie chce czytać twojego kodu.

tylerl
źródło
1

IMHO ... jeśli jest odpowiedzialny za wykonanie zadania, powinien wiedzieć, jak to działa ... :)

John K.
źródło
2
Masz na myśli menedżera lub programistę?
Nathan Long,
Ile firm może sobie pozwolić na to, aby każdy nietechniczny menedżer wykorzystał tyle czasu programisty?
JeffO