Będę pracował nad projektem oprogramowania z kilkoma moimi przyjaciółmi i zostałem mianowany kierownikiem technicznym. Żaden z tych facetów wcale nie jest złym programistą, ale mam znacznie większe doświadczenie niż oni. Muszę być w stanie rozdzielić pracę między wszystkich członków zespołu, jednocześnie upewniając się, że nie nadepniemy sobie nawzajem; że spełniają one stosunkowo wysokie standardy jakości i skalowalności, których potrzebujemy, aby ten projekt odniósł sukces, bez konieczności sprawdzania wszystkiego, co popełnili.
Jak powinienem utrzymywać standardy, unikając mikrozarządzania? Czy wystarczy zrobić jakieś diagramy, zaplanować przegląd kodu i mieć zaufanie, że będę w stanie naprawić wszystko, co mogą zepsuć, czy też powinienem pójść drogą TDD i napisać wyraźne testy, które zespół powinien spełnić?
źródło
Odpowiedzi:
Powinieneś przejrzeć niektóre z ich kodów i pozwolić im się przejrzeć. Nie chodzi o to, że chcesz być policją odpraw, ale chcesz przekazywać informacje zwrotne tak często, jak to możliwe. Bycie recenzentem może wzmocnić ich zrozumienie. Pozwól im również przejrzeć Twój kod. Bądź modelką.
Uwaga dodatkowa: podczas rocznego przeglądu nie powinno być niespodzianek.
źródło
Przede wszystkim : komunikuj swoje oczekiwania i projekt na tak wiele różnych sposobów, jak to możliwe. Diagramy są dobre dla niektórych; zdefiniowane interfejsy działają dla innych; działa również programowanie w parach; formalne recenzje kodu mogą również pomóc niektórym osobom.
Polecam również korzystanie z automatyzacji w jak największym stopniu:
Trudno jest kłócić się z nieudanym przypadkiem testowym lub narzędziem do automatycznej kontroli, pod warunkiem, że są dobrze skonfigurowane.
źródło
Jeśli naprawdę pracujesz z różnymi poziomami umiejętności w tym samym projekcie, będą pewne problemy. Pytanie brzmi, kiedy sobie z nimi poradzisz? Czy zamierzają napisać tak zły kod, że lepiej nie mieć ich pomocy? Czy to spowoduje osobiste napięcie? Czy zamierzasz zakończyć przyjaźnie? Na te pytania nikt nie może odpowiedzieć oprócz ciebie.
Zakładając, że wszyscy pozostaną w zespole, zalecam dzielenie zadań na małe części (większe przechodzą do bardziej wykwalifikowanych kolesi) i niech najbardziej wykwalifikowani programiści dokonają refaktoryzacji, gdy skończysz. Pamiętaj, aby przeprowadzać kontrolę jakości w ciasnych, regularnych odstępach czasu. W każdym razie jest to bardzo zbliżone do tego, co dzieje się w rzeczywistości.
źródło
W miarę możliwości trzymaj się z dala od chwastów. W każdym zespole, jeśli jesteś liderem, musisz zaoszczędzić pewną część przepustowości na kryzysy i duży obraz. Diagramy są dobre, a standardy kodowania są zawsze rozsądne, ale konfiguracja procesów, w których ludzie sprawdzają się nawzajem, jest jeszcze lepsza (testy krzyżowe, wzajemne oceny, programowanie par). Nie wszyscy w zespole muszą być gwiazdami - zespół razem może zwykle przezwyciężyć wszelkie słabości jednostek.
Zalecam, abyś w jak największym stopniu opierał się pragnieniu, aby powiedzieć ludziom, jakie błędy widzisz w ich kodowaniu - zamiast tego poprowadź ich do zobaczenia go sami. Pozostań częścią wspólnego przeglądu prac programistycznych, ale upewnij się, że nie wnosisz więcej niż inni członkowie. Zamiast tego włóż dodatkowy wysiłek, aby zachęcić ludzi do zobaczenia tego, co widzisz, i podaj wiele wyjaśnień, dlaczego rzeczy, które widzisz, mają znaczenie.
Nie przejmuj się zbytnio nakładaniem się - poza sensownym przerwaniem pracy możesz poprosić członków zespołu, aby zameldowali się między sobą, a następnie po prostu sprawdź, czy nastąpiła komunikacja. Zespół szybko zacznie patrzeć na siebie jako sposób na osiągnięcie konsensusu, a to sprawi, że Twoja praca będzie około 20 razy łatwiejsza - wtedy jedyne, co musisz zrobić, to przełamać remis, gdy główne obszary się nie zgadzają.
Następnie oszczędzaj wysiłek, aby wspólnie patrzeć na zespół. Każda osoba będzie miała niesamowite mocne strony i fascynujące słabości. Idealnie byłoby zacząć rzucać pracę na ludzi, którzy odpowiadają ich mocnym stronom, a jednocześnie dawać im szansę na przepracowanie swoich słabości w sposób, który nie wyłącza produktywności zespołu.
Ostateczna złota gwiazda kierownictwa zespołu uświadamia ludziom swoje słabości w taki sposób, że są zmotywowani i dobrze poinformowani, aby zacząć je naprawiać.
źródło
Usiądź i przedyskutuj technologie i zestawy narzędzi, na co zgodzą się wszyscy członkowie zespołu. Niektóre osoby mogą być bardziej doświadczone w zakresie uzgodnionych narzędzi niż inne w zespole, więc ci, którzy są bardziej doświadczeni, muszą chcieć i zgadzać się na dzielenie się doświadczeniem i wiedzą z resztą.
Dyskutuj, Zgadzaj się, Zapisz, Modeluj i komunikuj standardy (takie jak konwencja nazewnictwa, kodowanie najlepszych praktyk i struktury folderów).
Wykonuj ciągłe i regularne testy oraz kontrole jakości. Powiadom osobę JAK NAJSZYBCIEJ, gdy zobaczysz niespójności.
źródło
Chciałem powiedzieć: „zorganizuj to najbardziej doświadczoną osobę w zespole”, ale brzmi to tak, jakbyś był tą osobą.
Jeśli możesz, podziel projekt na dwa poziomy. Warstwa aplikacji / warstwa sterowników jest dobrym podziałem. Utwórz dwie podgrupy w swoim zespole i uczyń jedną osobę w każdej odpowiedzialną za ten poziom. To może działać bardzo dobrze.
Poddaj się temu. Będziesz musiał przejrzeć wszystko, co popełnią, szczególnie wcześnie. Jeśli wszystko idzie płynnie, po prostu rzucasz okiem na kod. Recenzja wcale nie zajmie ci dużo czasu i da ci dużo pewności, że wszystko idzie dobrze. Bardziej prawdopodobne jest, że ktoś nieprawidłowo używa semaforów lub pisze własną wersję funkcji bibliotecznej lub coś w tym rodzaju szaleństwa. Z mojego doświadczenia wynika, że musisz obserwować kod, który jest zapisywany w celu wyeliminowania problemów z kodem w zarodku.
źródło
Czego zwykle oczekuje się od lidera technicznego w Twojej firmie? Jestem menedżerem i byłem w tym miejscu kilka razy i zamierzam to zrobić ponownie od tego tygodnia (zatrudnianie nowicjuszy i innych, aby dołączyć do zespołu 20-letnich i 4-letnich doświadczonych osób).
Jestem menedżerem i mogę być technicznym liderem (w ciągu ostatnich kilku lat pominąłem tę ostatnią rolę, aby zwiększyć przywództwo w zespole. W każdym razie kilka myśli:
źródło
Spróbuj przyjrzeć się definicji „architektury oprogramowania”. Tworzenie osobno rozwijalnych modułów jest jednym z głównych powodów przeprowadzania wstępnego projektowania i analiz. Wiem, że wykonywanie tego rodzaju pracy nie jest w porządku, ale działa we wszystkich przypadkach, w przeciwieństwie do niektórych przypadków, które zalecają nowsze metody programistyczne.
źródło
Jako najbardziej doświadczony programista w zespole, oczekiwałbym od ciężkiego coachingu .
Pozwól zespołowi przypisać sobie pracę za pomocą kanban , a następnie poświęć cały dzień na programowanie w parach z każdym z nich.
Kiedy zobaczysz zły nawyk lub coś, czego powinni (wszyscy) być świadomi, zatrzymaj wszystko i narysuj na tablicy.
Po kilku tygodniach będziesz w stanie zwolnić intensywny trening, ponieważ ogólne umiejętności zespołu zbliżą się do twoich.
źródło
Jest kilka różnych list, które chciałbym przejrzeć z twojej pozycji:
Jak dobrze znam ten zespół. Czy znasz mocne i słabe strony każdego w zespole? Czy wiesz, jak najlepiej wykorzystać każdą osobę? Czy wiesz, jak podzielić pracę w sposób względnie sprawiedliwy dla wszystkich? Tego rodzaju pytania są czymś, co należy zadać i zrozumieć, że z czasem na tych listach mogą wystąpić zmiany, ponieważ niektóre osoby mogą rozwinąć pewne umiejętności, które mogą zmienić sposób ich postrzegania. Kiedy zostałeś powołany, czy były jakieś oczekiwania, które niektórzy członkowie zespołu mieli względem ciebie? To ostatnie pytanie może być trudne do nakłonienia do uczciwej odpowiedzi, ale może bardzo pomóc, jeśli można je ujawnić i omówić w znaczący sposób bez wywoływania urazy lub urazy, co może być dość łatwe, jeśli omawiane tematy są dla niektórych bardzo osobiste ludzie. Nie próbuj uzyskać osobistych opinii na spotkaniu grupowym,
Jak dobrze się znam. Z jakich elementów swojego pochodzenia korzystasz tutaj w celu uzyskania uprawnień technicznych? Jakie mocne i słabe strony wnosisz do zespołu? Czy spodziewasz się regularnie wchodzić do okopów? Czy znasz praktyki, które chciałbyś wprowadzić w tym zespole, aby pomóc im kierować? Czy są jakieś znaki ostrzegawcze, które pamiętasz z przeszłych doświadczeń, które mogą być przydatne, aby sprawdzić, czy którekolwiek z nich zaczynają pojawiać się w pracy, którą wykonuje zespół.
W pewnym sensie wszystko sprowadza się do komunikacji. Powodzenia!
źródło
mieć regularną (cotygodniową) prezentację jakiegoś tematu technicznego i obracać go wokół grupy. W ten sposób wszyscy się czegoś nauczą. I niech obecni są również młodsi członkowie, nie ma lepszego sposobu, aby naprawdę coś zrozumieć, niż przez nauczanie tego. Być może będziesz musiał pomóc im wybrać tematy.
Niektóre instruktaże dotyczące sposobu prowadzenia rozmowy mogą być przydatne dla wszystkich. Miałem profesora na studiach, który zrobił to dla mnie i było to bardzo pomocne.
źródło