Pięciu nowych młodszych programistów i wiele skomplikowanych zadań. Co teraz?

10

Nasza firma zatrudniła pięciu nowych młodszych programistów, którzy pomogli mi opracować nasz produkt. Niestety nowe funkcje i nadchodzące poprawki błędów zwykle wymagają głębszej wiedzy niż zwykle niedawno ukończył programista (wątki / współbieżność, debugowanie wąskich gardeł wydajności w złożonym systemie itp.)

Delegowanie (i planowanie) zadań, które (prawdopodobnie) mogą rozwiązać, odpowiadanie na ich pytania, mentoring / zarządzanie nimi, przeglądanie ich kodu zajmuje cały mój czas i często uważam, że mogłem rozwiązać problemy krócej niż cały proces delegowania (licząc tylko mój czas). Ponadto nie mam czasu na rozwiązywanie zadań wymagających głębszej wiedzy systemowej / bardziej zaawansowanych umiejętności i nie wydaje się, aby zmieniło się to w najbliższej przyszłości.

Więc co teraz? Co powinienem zrobić, aby efektywnie wykorzystać ich czas?

MXE
źródło
1
Czy wszyscy 5 Jr. zaangażowali się w Twój projekt? Czy jesteś jedyną Siostrą Dev, która je nadzoruje?
Tyanna
@Tyanna: Tak, jestem jedynym seniorem w tym projekcie. Inni seniorzy zostali jakiś czas temu przeniesieni do innych projektów.
mxe
2
pierwszą rzeczą do zrobienia jest wyjaśnienie kierownictwu, że będziesz nieco mniej produktywny, gdy zwiększysz liczbę początkujących
jk.
Jako niedawny absolwent jestem bardzo zaskoczony, że istnieje program, który nie obejmuje współbieżności ani wydajności.
Daniel Joseph
+1. Żałuję tylko, że nie mogę więcej głosować.
Shivan Dragon,

Odpowiedzi:

2

Tak, możesz rozwiązać rzeczy szybciej niż oni, dlatego jesteś starszy, a oni nie. Jednak dobry senior chce również przenieść swoich juniorów na wyższy poziom, a jedynym sposobem, aby to zrobić, jest pozwolenie im nauczyć się, jak to robić.

Mentoring to obecnie najbardziej efektywne wykorzystanie twojego czasu, a nie kodowanie.

Spójrz na to w ten sposób, jeśli spędzisz kolejne sześć miesięcy efektywnie na mentoringu, a juniorzy nauczą się wystarczająco, aby zostać pośrednimi programistami - wtedy masz 5 pośrednich programistów i jednego starszego. Jeśli wykonasz całą ciężką pracę samemu, ponieważ jest to szybsze, w ciągu sześciu miesięcy będziesz miał 5 juniorów kręcących kciukami (cóż, najlepsi z nich przeniosą się do innych miejsc pracy, jeśli nie dasz im trudnej pracy, więc może mieć mniej lub więcej młodszych dewloperów) i jednego przepracowanego i zepsutego seniora.

Wiesz, jakie skomplikowane interakcje występują zwykle w błędach, więc opracuj szkolenie dotyczące tych typów, jeśli to, jak rozwiązywać problemy i znaleźć rzeczywisty problem, a następnie rodzaje metod zwykle potrzebnych do ich rozwiązania. Potem daj im te problemy, gdy się pojawią. Tak, ich naprawienie potrwa dłużej i należy to uwzględnić w szacunkach czasu.

Pomysł programowania par jest świetny. Sparuj z innym dla każdego naprawdę zaawansowanego problemu. Nawet jeśli nie wiedzą jeszcze wystarczająco dużo, aby rozwiązać problem, posiadanie junior przy klawiaturze podczas mówienia im, co należy zrobić, aby znaleźć przyczynę, pomoże im nauczyć się rozwiązywania problemów. Oczywiście, nie spodziewaj się po prostu, że wezmą dyktę. wyjaśnij, czego chcesz i dlaczego. Zapytaj o ich pomysły i ich wysłuchaj. Wyjaśnij, dlaczego ich pomysł nie jest dobrym wyborem, jeśli nie jest. Sokratejską metodę nauczania wykorzystuj, zadając wiodące pytania. Lepiej zapamiętają rozwiązanie, jakie wymyślili na podstawie twoich wiodących pytań, niż to, które im podyktowałeś bez wyjaśnienia. Będą również lepiej pamiętać, jeśli faktycznie wpisali rozwiązanie, a nie tylko patrzyli, jak to wpisujesz.

Gdy junior pomógł ci rozwiązać konkretną klasę problemów w ramach pary z tobą, możesz sparować go z kimś innym, gdy następnym razem ta klasa pojawi się problem i być dostępnym tylko do konsultacji, nie stojąc nad ich ramionami, podczas gdy próbują różnych rzeczy.

Masz pięciu nowych ludzi, co jest naprawdę trudne. Musisz być wobec nich sprawiedliwy i zmieniać, z kim się sparujesz lub udzielić wskazówek. Nie graj w ulubione. Ale musisz też być osobą, która zapewnia „twardą miłość”, jeśli ktoś nie odnosi sukcesu i nie robi postępów. Być może będziesz musiał odwołać jednego lub więcej z nich i powiedzieć im, że muszą się poprawić i dlaczego uważasz, że im się nie udaje. SOme peopel pozwoli ci wykonać całą pracę, jeśli połączysz w parę i możesz; pozwól na to, ponieważ jest to łatwiejsze. Jeśli dana osoba nie jest w stanie wykonać pracy, jest to dla niej milsze i znacznie lepsze dla Twojego zespołu, jeśli jej nie nosisz, gdy jest oczywiste, że nie może lub nie nauczy się być bardziej niezależnym.

Pamiętaj, dostajesz to, czego oczekujesz. Jeśli nie oczekujesz wiele, nie dostaniesz wiele. Spodziewaj się, że będą świecić, a większość z nich spełni twoje oczekiwania.

HLGEM
źródło
20

Programowanie w parach wydaje się świetną możliwością.

  • Daj czterem z nich dwa prostsze z tych błędów, pozwól im się sparować i niech każda para zajmie się jednym z nich.
    • Sformułuj tę prośbę w następujący sposób: „Czy możesz dowiedzieć się, co to powoduje?”. Nie każ im myśleć o tym, jak to naprawić.
    • Raz oni mają pewien poziom wyjaśnienia, następnie poprosić ich, jak to może być ustalona. W ten sposób nie zostaną jednocześnie przytłoczeni wielkim zadaniem. Pozwól im odejść i poeksperymentować z kodem, jeśli jeszcze tego nie zrobił, a kiedy już mają plan - nawet niejasny - możesz poprowadzić go w kierunku dobrego rozwiązania.
  • Drugi, z którym możesz się sparować i zacząć z nim pracować nad jednym z trudniejszych. Może to być trudniejsze, biorąc pod uwagę jego brak doświadczenia z kodem, ale będzie on miał również korzyść dla kogoś z doświadczeniem, który przez niego przejdzie.
    • Myślę, że nowa funkcja może być dobrym sposobem na zrobienie tego, biorąc pod uwagę twoje doświadczenie. Możesz pokazać mu istniejące API w miarę rozwoju nowej funkcji.

Dla anegdoty / przykładu tej sugestii działającej: W ten sposób zapoznałem się z najbardziej włochatą częścią bazy kodu, nad którą pracuję - z innym stosunkowo nowym deweloperem, z którym sparowałem, skończyło się na czymś takim:

  • Dostaliśmy błąd i po około 10 minutowym wprowadzeniu powiedziano nam, aby spróbował dowiedzieć się, co się dzieje.
  • Około godziny później podzieliliśmy się i przekopaliśmy na dwa różne sposoby myślenia.
  • Mniej więcej dwie godziny później zorientowałem się, jak działa kod, ale nie wiedziałem dokładnie, gdzie generowane są złe dane wyjściowe. Zrozumiał, w jaki sposób jest generowany, zagłębiając się w surowe i zdenormalizowane dane, ale nie mógł zrozumieć kodu.
  • Połączyliśmy się ponownie i razem podążaliśmy ścieżkami kodu, otrzymując dokładną odpowiedź. Na tej podstawie przeprowadziliśmy burzę mózgów z naszym menedżerem, a następnie wdrożyliśmy go później.

Od tego czasu odziedziczyłem utrzymanie całej części bazy kodu, ponieważ tak naprawdę jestem jedynym, który rozumie, jak to działa (pierwotni programiści, którzy wciąż są w pobliżu, nawet nie pamiętają w pełni).

Izkata
źródło
+1. Jedynym problemem może być podzielenie 5 osób na pary po 2 ;-)
Doc Brown
@DocBrown Cóż, 5 niedoświadczonych programistów + 1 doświadczony programista oznacza, że ​​możesz utworzyć 3 grupy po 2 (patrz drugi główny punkt). Może stać się bardziej samouczkiem na temat tego, jaki typ kodu (interfejs użytkownika, logika biznesowa itp.) Idzie, ale nauczy się innych rzeczy niż pozostałe 4. Następnie na kolejnym zestawie zadań obróć.
Izkata
7

Naucz ich. Przydziel im zadania, które mogą łatwo rozwiązać.

Mówiąc wprost, problem polega na tym, że wspomniana siła robocza nie jest wystarczająco wykwalifikowana, aby być bardzo produktywnym w wykonywanym zadaniu. Jako taki możesz: 1) ułatwić zadanie 2) spróbować zwiększyć umiejętności siły roboczej.

Podobny problem prawie zawsze zdarza się (do pewnego stopnia) za każdym razem, gdy nowa osoba dołącza do zespołu i rozpoczyna pracę nad bazą kodów, o której nie ma doświadczenia. Staje się to większym problemem, jeśli narzędzia i metodologie są nieznane. Szkolenie osoby w zakresie lepszego zaznajomienia się z narzędziami i metodologiami pozwala szybciej rozwiązać problem.

Jednak rozwiązanie takiego problemu wymaga czasu - nie można oczekiwać, że inni będą wszystko wiedzieć lub uczyć się wszystkiego w jednej chwili. Być może dobrym pomysłem byłoby wprowadzenie kilku książek na temat współbieżności, optymalizacji oprogramowania i ogólnych potrzebnych metodologii.

zxcdw
źródło
3

Wygląda na to, że nie byłeś częścią decyzji o zatrudnieniu. Dokonaj rzetelnej oceny ich umiejętności radzenia sobie z bieżącymi zadaniami. Zapisz raport z rekomendacją (szkolenie zewnętrzne i takie zadania, o ile nie wpływa to na czas dostawy), wyślij raport do swojego kierownika, który może zacząć rozmawiać z kimkolwiek, kto zatrudnił tych facetów. Jedna nowa osoba może być wchłonięta w zespole, ale 5 nowych osób jednocześnie nie brzmi dobrze, chyba że masz zrelaksowany sklep. Cokolwiek robisz, nie próbuj uczyć ich w czasie projektu, chyba że jest to uwzględnione w planie.

Edycja: W tej sytuacji może być właściwe wspomnienie Prawa Brook'a.

Bez szans
źródło
2

Być może możesz poświęcić trochę czasu na stworzenie środowiska piaskownicy, w którym możesz je wrzucić, aby rozwiązać niektóre trudne problemy bez wyrządzania szkody. Poproś, aby przetestowali swoje rozwiązania tak dokładnie, jak to możliwe. Postaw więcej niż 1 na ten sam problem.

Wszystkie te rzeczy dają im możliwość zdobycia wystarczających umiejętności, aby były przydatne, a ponadto wymagają mniej czasu. Oczywiście, jeśli masz (głównie) tonie lub pływasz, a one w dużej mierze toną, musisz przemyśleć różne rzeczy.

W zawodzie programisty osoby, które nie potrafią uczyć się głównie samodzielnie, prawdopodobnie nie są warte wysiłku, aby je uczyć. Ale myślę, że prawdopodobnie zaskoczą cię przede wszystkim tym, jak dobrze sobie radzą, gdy ograniczysz pomoc.

psr
źródło
Wydaje się to stratą czasu, jeśli środowisko piaskownicy już nie istnieje.
Ramhound