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?
Odpowiedzi:
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.
źródło
Programowanie w parach wydaje się świetną możliwością.
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:
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).
źródło
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.
źródło
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.
źródło
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.
źródło