Jak wprowadzić kod do kolegi

11

Jak zabierasz się za wprowadzanie bazy kodu, która może być dość złożona i zaplątana w wiele „gotchas”, dla nowego członka twojego zespołu?

Myślę, że najłatwiejszym sposobem byłoby zaprojektowanie ogólnej architektury za pomocą diagramów i poświęcenie kilku tygodni (lub miesięcy) na przydzielenie nowej osobie dobrze zdefiniowanych (i dobrze zakrojonych) zadań, w miarę jak przyzwyczaja się ona do kodu.

Jednak jako konsultant (i młodszy pracownik) nie zawsze mogę to mieć ze względu na ograniczenia czasowe lub wyznaczenie roli zespołu. (Brałem udział w tym konkretnym projekcie dwa razy dłużej niż ktokolwiek inny, więc „Junior” w żaden sposób nie „wie mniej o kodzie / projekcie”).

Miałem już kilka razy zadanie wprowadzenia nowego członka do projektu i kodu, i niestety za każdym razem, gdy okazuje się, że nie jestem w tym lepszy od poprzedniego. Uwielbiam diagramy i zdjęcia, ale często uważam, że nie uwzględniają odpowiednio złożoności systemu. (A co z „gotchami” tych małych?)

Projekt zbliża się do momentu, w którym przekażemy go klientowi. Aby uczynić trudniejszym, osoba, z którą będę przekazywać wiedzę, jest po prostu po studiach. (Nie to, że jestem znacznie lepszy, gdy wykonuję transfer wiedzy z wyższymi programistami).

Odwiedzam grupę użytkowników raz w miesiącu i inne pojawiające się okazje, więc nie jestem przyzwyczajony, że zapoznałem się z nowymi tematami, ale czuję, że moja zdolność do powielania skutecznego dzielenia się wiedzą jest żałośnie niewystarczająca.

Wszelkie porady będą mile widziane. Szukam głównie wskazówek, których mogę przestrzegać. Na przykład: od czego zaczynasz? Jak postępujesz? Jak radzisz sobie z nieznanymi technologiami lub wzorcami ze strony słuchacza, nie biorąc całego dnia? Gdzie łączysz logikę biznesową ze strukturą kodu?

Dziękuję Ci!

(Jak zawsze możesz edytować pytanie według własnego uznania).

emragins
źródło
3
Nie ma powodu, dla którego komentujesz kod ...
Przypomnijcie
4
@Rig - tak, zwykle z# TODO: fix this ugly hack
detly

Odpowiedzi:

9

Pierwszym krokiem jest oczywiście usunięcie „gotchas” z kodu. Przejrzysty, zwięzły, spójny kod jest łatwiejszy w obsłudze, pracy i debugowaniu.

Od czego zaczynasz

Pytam przybysza, jak chcą dostać się do bazy kodów. Każdy uczy się inaczej. Niektórzy ludzie lubią mieć małe zadania do pracy. Niektóre lubią debugować istniejący kod. Niektórzy chcą, aby kod działał, aby zrozumieć, co robi. Niektórzy chcą zacząć od punktu wejścia i po prostu nawigować. Niektórzy chcą diagramów Visio ... Żaden zestaw wzorów nie będzie najlepszy dla wszystkich.

Jak radzisz sobie z nieznanymi technologiami lub wzorcami ze strony słuchacza, nie biorąc całego dnia?

Unikam ich. Niech będą czarnymi skrzynkami, dopóki przybysz nie zapyta o nie. Następnie przekaż wystarczającą ilość informacji, aby uzyskać najpiękniejszą informację, z sugestią, że mogą dowiedzieć się więcej w swoim własnym czasie lub zapytać później, kiedy ogólne rzeczy są bardziej znane.

Gdzie łączysz logikę biznesową ze strukturą kodu?

Próbuję nie. Niemal zawsze lepiej jest, aby nowicjusz uczył się na własną rękę, tak aby zapadł mu w pamięć w strukturze bardziej naturalnej dla jego sposobu myślenia.


Należy pamiętać, aby instrukcja była krótka. Ludzie zwykle sprawdzają się dość szybko, więc żadne dalsze instrukcje w tym momencie po prostu nie „trzymają się”. Pokaż im rzeczy przez 15–60 minut (różne osoby mają różne zakresy uwagi), a następnie zrób im 5-30 minutową przerwę, aby je przetworzyć.

Telastyn
źródło
im dłużej współpracuję z tą osobą, tym bardziej widzę, jak przydatna jest twoja rada, aby na razie pozostawić nieistotne lub „bardziej zaawansowane” tematy, a nawet o nich nie wspominać.
emragins
2

Z mojego doświadczenia wynika, że ​​dobrym sposobem na zlikwidowanie luki między ogólnym przeglądem schematu architektury a drobiazgowymi szczegółami faktycznej pracy z kodem jest przeprowadzenie analizy systemu, tj. Co się stanie, gdy nadejdzie żądanie (dla kodu serwera ) lub użytkownik wprowadza dane wejściowe (dla kodu klienta), a następnie wyjaśnia krok po kroku wszystkie zaangażowane warstwy kodu.

Innym sposobem jest „prezentacja” kodu źródłowego, tzn. Przejrzenie pakietów / przestrzeni nazw / modułów / katalogów i wyjaśnienie, co ogólnie robi kod w każdym z nich. Oczywiście wymaga to logicznego ułożenia kodu.

Michael Borgwardt
źródło
1

Nie uczysz ich podstaw kodu, uczysz ich swojej pracy. Nie próbuj myśleć, czego mogą potrzebować, spójrz na to, co naprawdę musisz wiedzieć, wykonując swoją pracę.

Pobierz kilka ostatnich miesięcy historii śledzenia błędów, historii użytkowników Scrum, raportów o stanie i kontroli źródła. Jakie pliki najbardziej dotknąłeś? Jaki kod jest najbardziej problematyczny? Jakie zadania zabrałeś najdłużej? Możliwe, że jeśli nie dotknąłeś go w ciągu ostatnich kilku miesięcy, nie jest to tak ważne, jak mogłoby się wydawać.

Spójrz na stos wydruków na biurku. Sprawdź swoją najnowszą historię przeglądarki. Poszukaj zapisanych wiadomości e-mail, do których często się odwołujesz, kontaktów, których używasz, pobranych dokumentów. Niektóre z najbardziej przydatnych odniesień, które przekazałem innym, to notatki, które zachowałem dla siebie podczas pierwszej nauki lub projektowania systemu. Jaki materiał referencyjny jest dla Ciebie najbardziej przydatny ?

Następnie podciągnij znane zaległości. Jakie rzeczy musisz zbadać, aby ukończyć te zadania? Jakie obszary kodu najprawdopodobniej zawierają problem? Przekaż te informacje, jakbyś robił notatki dla siebie.

Jeśli odwołujesz się do wykresów lub diagramów w swojej codziennej pracy, dołącz je. Jeśli nigdy nie zadałeś sobie trudu, prawdopodobnie nie będzie on tak przydatny dla twojego następcy / kolegi.

Jednym z najtrudniejszych zadań podczas nauczania jest postawienie się na ich miejscu. W tym przypadku, w ich buty. Wykorzystać jak najwięcej.

Karl Bielefeldt
źródło
Mnóstwo dobrych porad tutaj - przedstawia inne spojrzenie na rzeczy, które powinny pomóc. Dzięki!
emragins,
0

Praca z pomocą jest najlepsza, weź łatwy błąd i poprowadź go przez obszary, w których się znajdziesz. szybko dowiedzą się, jak kod pasuje do siebie. Oczywiście będą przychodzić i zadawać pytania na temat tego błędu i bazy kodu, ale dotrą tam (a ty naprawisz błąd). Często znacznie łatwiej jest rozgryźć przykłady na podstawie przykładów, podobnie łatwiej jest opracować bazę kodu, uruchamiając ją w debugerze.

Jeśli nie masz pewności co do zmian w kodzie (lub są, zwykle nie jestem pewien, czy moje poprawki do kodu są znane, dopóki nie zaznajomię się z bazą kodu), możesz to sprawdzić przed zameldowaniem.

Oczywiście twoje istniejące pomysły na szerokie przeglądy i schematy blokowe są niezbędnymi pierwszymi krokami.

gbjbaanb
źródło