OK, jako lead, Twoim zadaniem jest wyciągnięcie projektów z domu. Musisz być tym, który egzekwuje standardy, recenzje kodu, prosi o raporty postępu i wszystkie te rzeczy, gdy programiści wolą, abyś zostawił je w spokoju. Te rzeczy są tylko wymaganiami zarządzania i oprócz recenzji kodu tak naprawdę nie rozwijają umiejętności pracowników.
Chcesz jednak pomóc im się rozwijać, co jest świetną cechą lidera.
Recenzje kodu są z pewnością pierwszym krokiem, pomogą ci zobaczyć, kto ma mniej niż gwiezdne umiejętności i potrzebuje poprawy, aby nawet uzyskać satyfikację. Pomogą deweloperom zobaczyć inne sposoby robienia rzeczy i zrozumieć inne części bazy kodu niż te, nad którymi osobiście pracowali. Moim zdaniem, recenzje kodu najlepiej przeprowadzać osobiście w sali konferencyjnej z deweloperem i recenzentem (kto powinien być innym programistą, jeśli to możliwe, nie zawsze prowadzi, sprawdzanie kodu innej osoby to także umiejętność, którą należy rozwinąć), a Ty jako moderator. Powinieneś robić notatki o tym, co trzeba zmienić, aby zidentyfikować trendy. To, czego tak naprawdę szukasz, to nie błędy lub zmiany (każdy może poprawić kod), ale konsekwentny brak uczenia się na błędach. Nie mów wyższemu kierownictwu, że przechowujesz te notatki, w przeciwnym razie będziesz zmuszony je wykorzystać jako pomiary w procesie przeglądu wyników, co szczerze przeczy celowi. Jeśli kilku programistów popełnia te same błędy, sesja szkoleniowa lub wpis wiki dotyczący wykonywania X może być w porządku.
Teraz rośnie namadło, które osiąga minimalny poziom. Po pierwsze, musisz wiedzieć, jakie zestawy umiejętności mają programiści i jakie zestawy umiejętności byłyby przydatne, i co mogliby być zainteresowani poznaniem. Musisz z nimi porozmawiać i przejrzeć ich CV oraz zrozumieć, co oni lubią i nie lubię tego robić.
Nie oddawaj wszystkich interesujących zadań tylko najbardziej wykwalifikowanym. To nie pomaga innym przyśpieszyć nowych problemów i technologii. Nie możesz przejść od bycia młodszym facetem, który ma tylko najmniejsze i najmniej ważne zadania, do starszego faceta, chyba że ktoś zaryzykuje i powierzy ci trudniejszą pracę. To powiedziawszy, mniej doświadczeni mogą potrzebować najpierw przypisać program do seniora, aby uzyskać bardziej zaawansowane umiejętności. Włączenie juniorów w przeglądy kodu wystawi ich również na bardziej zaawansowane techniki.
Najpierw daj im szansę samodzielnego rozwiązania problemu. Ale czasami ludzie utknęli i nie wiedzą, od czego zacząć (umiejętność, którą musisz rozwinąć, szczególnie u nowych programistów) lub co zrobić, aby rozwiązać problem.
Jeśli dasz im kilka dni na zbadanie czegoś, a oni nadal nie mają pojęcia, w jaki sposób zamierzają coś zrobić, być może będziesz musiał interweniować z pewnymi sugestiami. Jeśli jesteś specjalistą technicznym, możesz dać im kilka pomysłów na rozwiązanie problemu. Jeśli nie, spotkanie z kilkoma osobami podczas burzy mózgów może pomóc, jeśli dana osoba utknie. Lub poproś bardziej doświadczoną osobę o sugestie. To, czego nie chcesz robić, to zabrać im problem i rozwiązać je samodzielnie. Ale musisz zrównoważyć realizację projektu z ego programisty i czasami musisz wysłać go w określonym kierunku. Jeśli ma złe rozwiązanie i musi zostać naprawione, najgorsze, co możesz zrobić, to dać to komuś innemu, chyba że zamierzasz zwolnić programistę.
Widziałem kodowanych złych programistów, gdzie ktoś inny musi naprawić prawie wszystko, co robią. Inni programiści są urażeni tym i po prostu chcą, aby dana osoba wyszła z życia. Coddling złego programisty prowadzi do wyjścia dobrych programistów. Musisz znaleźć granicę między umiejętnościami kodowania i rozwijania. Jeśli dasz komuś kilka szans, a on lub ona nigdy nie wyzdrowieje, odetnij go.
Dla seniorów, którzy są już kompetentni w swoich obecnych zestawach umiejętności, jest łatwiej. Zwykle musisz dać im szansę zrobienia czegoś nowego, a oni wskakują i uczą się tego. Po prostu upewnij się, że interesujące możliwości się rozprzestrzeniają i nie wszyscy idą do Joe the Wonder Programmer, który może wszystko naprawić. Chcesz skończyć z dziesięcioma Joes, a nie tylko jednym.
Innym sposobem rozwijania umiejętności jest cotygodniowa 1-godzinna sesja treningowa. Niech każdy devloper będzie odpowiedzialny za konkretny temat. Pomoże to im lepiej komunikować się, sprawi, że zaczną coś dogłębnie badać i da wszystkim korzyści z ich badań. Niektóre tematy powinny być przypisane osobom, które nie są z nimi związane, aby zmusić je do poszerzenia wiedzy na ten temat, a niektóre powinny być przypisane osobom, o których wiesz, że są lokalnymi ekspertami w tym temacie. Tematy powinny być kombinacją rzeczy, w których potrzebujesz ludzi, którzy są dobrzy w zbliżaniu się do przyszłości lub w tej chwili, a także pewnej liczby nowych nadchodzących technologii, z których obecnie nie korzystasz, ale ludzie są zainteresowani tym, czy mogą się przydać. Ale wszystkim, w tym młodszym, należy przypisać temat.
W zależności od sposobu naliczania czasu dla programistów (jest to trudniejsze w przypadku fakturowania przez klientów), zwykle warto, aby programiści mieli 4-8 godzin tygodniowo na pracę nad osobistymi projektami. Będą podekscytowani, aby to zrobić. Najlepsi ludzie będą chcieli tam pracować i nauczą się dużo, które przydadzą się w przyszłości. Licznik fasoli nie jest w stanie zrozumieć potrzeby tego, ale tym razem wiele razy zwróci się satysfakcja pracowników, nowe funkcje lub oprogramowanie, którego nikt nie potrzebował (lub który pomoże zautomatyzować część znoju) i szybszy rozwój z powodu wyuczone nowe techniki. Niektórzy programiści wykorzystają ten czas wyłącznie na osobiste projekty niezwiązane z tym, co robisz (i to dobrze, nadal będą zdobywać umiejętności i cieszą się z okazji), ale wielu innych wykorzysta go do rozwiązania trwałych problemów, które ze względu na charakter zarządzania projektami, nikt wcześniej nie miał czasu naprawić. Możesz więc otrzymać refaktoryzacje, które przyniosą korzyści wszystkim; niektóre osoby mogą pisać testy, aby poprawić zasięg testów, aby ułatwić refaktoryzację; inni mogą odkrywać nowe funkcje, które mogą uczynić twoje oprogramowanie bardziej przydatnym dla jego klientów. Ogólnie rzecz biorąc, jeśli potrafisz przekonać liczniki fasoli, nie ma sposobu, aby stracić, pozwalając im na tę swobodę.
Musisz nauczyć się balansować, pozwalając ludziom na odrobinę rozciągnięcia swoich umiejętności i utrzymując projekt na właściwym poziomie. Im mniej doświadczony jest programista, tym bardziej ktoś musi sprawdzać postęp, szczególnie na wczesnych etapach, kiedy łatwiej jest zmienić kierunek. Niedoświadczeni mogą walczyć i bać się mówić. Ci ludzie zwykle wyjeżdżają tuż przed uruchomieniem, a okazuje się, że ich część projektu nie jest bliska ukończenia. Zachowaj szczególną ostrożność, aby sprawdzić postępy u każdego, kto często zmieniał pracę (chyba że był to wykonawca, ponieważ taka jest natura zawierania umów).
Bardziej doświadczonym można ogólnie zaufać, gdy powie ci, kiedy mają problemy ze znalezieniem rozwiązania i potrzebują pomocy kogoś z większą wiedzą w tej dziedzinie, lub też poszuka tej osoby i uzyska transfer wiedzy. Nie muszą więc być tak dokładnie monitorowani w początkowych fazach uczenia się nowego zestawu umiejętności dla projektu. Znajdą sposób na dostarczenie projektu. Ci, którzy mają doświadczenie w dostarczaniu, zwykle mogą zostać pozostawieni w spokoju, z wyjątkiem raportów z minimalnymi postępami (zwykle musisz również zgłosić się do kierownictwa, a zatem potrzebujesz pewnych informacji).