Czy obracanie głównego programisty to dobry czy zły pomysł?

31

Pracuję w zespole, który był płaski organizacyjnie od czasu jego utworzenia kilka miesięcy temu. Mój kierownik jest nietechniczny, co oznacza, że ​​cały nasz zespół jest odpowiedzialny za podejmowanie decyzji.

Mój menedżer zaczyna zdawać sobie sprawę, że posiadanie głównego programisty ma wiele zalet, zarówno ze względu na niego (pojedynczy punkt kontaktowy i jedna odpowiedzialna strona za zadania), jak i nasze (rozwiązywanie sporów, zorganizowane wytyczne techniczne itp.).

Ponieważ zespół jest płaski, jedną z obaw jest to, że wybranie jednego głównego programisty może zniechęcić innych. Nie-programista zasugerował mojemu menedżerowi, że obracanie głównego programisty jest możliwym sposobem uniknięcia tego problemu. Jeden programista byłby prowadzony przez miesiąc, drugi przez następny i tak dalej.

Czy to dobry pomysł? Dlaczego lub dlaczego nie?

Należy pamiętać, że oznacza to, że wszyscy programiści - Wszyscy programiści są dobrzy, ale niekoniecznie w równym stopniu nadają się do przywództwa.

A jeśli tak nie jest , jak mogę zalecić unikanie tego podejścia bez wydawania się, że dzieje się tak tylko z samolubnych powodów?

NickC
źródło
7
„Obecny główny programista jest wyimaginowany.
Obróć
14
Nie polecam tego, bo może mu się kręcić w głowie.
Gaurav

Odpowiedzi:

31

Nie obracaj.

Nie sądzę, aby ktokolwiek zyskał na zmianie pozycji (oprócz tych, które nie zasługują na to, aby być liderem, może uzyskać więcej pieniędzy niż obecnie otrzymuje).

Posiadanie genialnego wiodącego programisty, który potrafi wykonać następujące czynności, czyni cuda w procesie programowania:

  1. Umie delegować.
  2. Kontroluje
  3. Jest doświadczonym programistą.

Jest jedynym źródłem dla reszty zespołu, do którego można się zwrócić i zasięgnąć porady. Jest także mediatorem między zarządem wyższego szczebla a głównym zespołem programistycznym. Nie znam żadnego zespołu kierowniczego, który lubi radzić sobie ze zmianami (chyba że to oni je inicjują).

Jeśli naprawdę jesteś najlepiej dopasowany do tego stanowiska, wszyscy to wiedzą. Wszyscy by to wiedzieli (np. Kierownictwo wyższego szczebla, twój kolega z zespołu itp.). Stwierdź, że nie uważasz, że warto zmienić pozycję (jeśli w to wierzysz). Następnie usiądź i pozwól im umówić się na spotkanie - powstrzymaj się od porzucenia nazwiska lub jakiegokolwiek autopromocji, ponieważ to sprawi, że będziesz wyglądać nieprofesjonalnie

Jonathan Khoo
źródło
@Jonathan Khoo: Twoja odpowiedź brzmi: „zapomnij o płaskim systemie, zatrudnij programistę gwiazdy rocka”.
3
@moz - Może nie jest programistą gwiazd rocka, ale gdy projekt osiągnie określony rozmiar, sensowne jest posiadanie pewnego rodzaju głównego punktu kontaktowego, który poradzi sobie z obciążeniami administracyjnymi. Może to być po prostu kierownik projektu, który nie wykonuje żadnych prac programistycznych.
rjzii
2
jeśli jest to płaski zespół, „główny programista” nie otrzyma więcej płatności niż reszta. Będzie miał obowiązki, ale nie korzyści wynikające z zajmowania wyższego stanowiska. W rzeczywistości taka jest rzeczywistość w każdym zespole, w którym kiedykolwiek pracowałem.
Jwent
6
@moz: Gwiazda rocka zostałaby zmarnowana w tej pozycji, ponieważ wiele z tego, co robi główny programista, nie wymagałoby programowania. Doświadczenie jest przydatne, ponieważ pozwala prowadzić mentora i daje mu maniak efektywnego prowadzenia, ale prawdopodobnie nie chcesz, aby Twój najbardziej produktywny programista spędzał czas na spotkaniach z wyższym kierownictwem.
David Thornley,
1
Uważam, że typy menedżerskie, które wiedzą, na czym polega kodowanie (potrafią czytać kod, wiedzą, jakie są tabele i bazy danych, wiedzą, co to jest gniazdo TCP / IP, mogły być wcześniej zakodowane), najlepiej pasują do tych ról. W końcu jest dużo papierkowej roboty i są do tego przyzwyczajeni.
Vincent Vancalbergh
11

Bycie głównym programistą składa się z dwóch części:

  • Przywództwo techniczne W przypadku przywództwa technicznego sensowne jest wybranie innego wiodącego programisty na poziomie projektu. Spraw, aby każdy programista był technicznym przewodnikiem dla innego projektu, zmieniając go w razie potrzeby w miarę rotacji projektów. Takie podejście może poradzić sobie z dynamiką zespołu i upewnić się, że wszyscy mają odpowiednie wyzwania

  • Komunikacja Pojedynczy punkt kontaktowy do komunikacji ze światem zewnętrznym jest dobry dla świata zewnętrznego i zły dla punktu kontaktu. Ktokolwiek utknie z piłką komunikacyjną, będzie miał mniej czasu na prawdziwą pracę i będzie musiał biegać, aby uzyskać informacje od wszystkich do przekazania. Jeśli jesteś najlepszym komunikatorem i chcesz przestać wykonywać tyle dobrej zabawy w zamian za całą rozmowę, więcej mocy dla ciebie.

Blueberryfields
źródło
Czy nie byłoby możliwe podzielenie tych dwóch ról? Często najlepszy komunikator nie jest najlepszy technicznie. Znalazłem najlepszą sytuację „programowania par”, kiedy każda z nich wyróżnia się w jednej z nich
CashCow
Potwierdzam Przyjąłem swoją pierwszą główną rolę 6 miesięcy temu (zespół 12 programistów) i nigdy nie spędzałem tyle czasu na programowaniu jak teraz. Głównie tylko mentoring, zarządzanie i raportowanie w górę.
Mr. JavaScript
6

To niekoniecznie zły pomysł, pod warunkiem, że zaangażowani programiści są zaangażowani i (najlepiej) zdolni.

Mam problem ze znalezieniem referencji na ten temat (ale będę szukał dalej), ale jeśli dobrze sobie przypominam, niektóre zwinne firmy robią to - zmieniają tytuł „lidera zespołu” albo przy każdej iteracji, albo w innym ustalonym czasie Kropka. To promuje zaangażowanie programistów i daje każdemu szansę na wykonanie części zarządzania zespołem / komunikacji zewnętrznej bez trwałego przeniesienia programisty z rozwijania się do tej roli.

Niektóre wady obejmują potencjalną utratę informacji (można to złagodzić na wiele sposobów) i wyższy potencjał „złego” przywództwa. Utrzymanie wizji / kierunku dla zespołu może być również trudne. Jeśli jednak wszyscy są zaangażowani w takie podejście, a członkowie zespołu są zarówno kompetentni, jak i zainteresowani wprowadzeniem takiego systemu, warto spróbować.

Adam Lear
źródło
Nie sądzę, że koniecznie chcesz obrócić KAŻDEGO programistę na stanowisko lidera zespołu, ale oczekiwałbym, że starszy programista będzie w stanie sprostać tym obowiązkom. Szczerze mówiąc, jest to niewdzięczna praca, a bardziej chodzi o dzielenie się ciężarem i unikanie wypalenia jednej osoby. Myślę też, że pomoże to utrzymać dynamikę przewagi zespołu ds. Płaskiej organizacji, aby nie mieć jednego dewelopera jako stałego lidera.
MebAlone
„Niektóre wady obejmują potencjalną utratę informacji (można to złagodzić na wiele sposobów) i wyższy potencjał„ złego ”przywództwa: co z rotacją tylko wybranych programistów, może to uniknąć tego problemu.
Adrien Be
1
@AdrienBe Nadal będziesz musiał przesyłać informacje między nimi. O ile nie prowadzą przez cały czas w tym samym czasie (co przeczy celowi), musisz wziąć to pod uwagę. Możesz także zrazić innych deweloperów w zespole, którzy w ogóle nie mogą prowadzić i mogą czuć się wykluczeni.
Adam Lear
5

Jeśli obracasz, nie rób tego podczas projektu. Przypisywanie różnych ról różnym osobom do różnych projektów nie jest wewnętrznie błędne, w zależności od tego, kto jest najbardziej odpowiedni na każdym stanowisku dla tego konkretnego projektu. Ale nie rób Joe „głównym programistą” tylko dlatego, że nadszedł czas, aby wykonać zadanie. Może nie być do tego wykwalifikowany, może nawet nie chcieć pracy.

jwenting
źródło
4

Obracanie głównego programisty na podstawie czasu jest złym pomysłem.

Każdy jest dobrym programistą, nie oznacza, że ​​każdy jest dobrym liderem. A jeden jest dobrym liderem, co nie znaczy, że jest odpowiedni na lidera tego programu.

Myślę, że znaczenie misji przypisanych programistom jest inne, a przywództwo każdego dewelopera jest inne. Myślę, że możesz doradzić swojemu menedżerowi, aby głosował. Każdy głosuje na 2 osoby na najlepszego kandydata, a osoba, która uzyska najwięcej głosów, powinna być głównym programistą

ChrisF
źródło
3

Jestem skłonny zgodzić się z Jonathanem Khoo, że obracanie głównego programisty może być złym pomysłem. Zasadniczo w przypadku większych projektów istnieje jeden przewodnik techniczny, który kieruje projektem, i osoba ta może mieć kilka zgłoszeń składowych w celu omówienia różnych problemów dotyczących całego systemu.

Jednak jednym ważnym punktem, o którym Jonathan nie wspomniał, jest to, że kierownictwo techniczne rozwija również wysoki stopień wiedzy instytucjonalnej, którego inni uczestnicy projektu mogliby nie mieć. Obracając przewodnika technicznego, wymaga się od niego rozwijania tej wiedzy za każdym razem, gdy ktoś zostaje obrócony do odpowiedniej pozycji. Ponadto lider opracuje relacje z klientami spoza projektu, ponieważ idealnie powinni być obecni na niektórych (większych) spotkaniach z użytkownikami końcowymi.

Posiadanie przewodnika technicznego jest dobre, ale jeśli spróbujesz go obrócić, możesz mieć lepsze wyniki bez niego.

rjzii
źródło
2

Myślę, że najpierw musisz ustalić, jaka jest rola tej osoby, bardziej niż kto to robi i na jak długo.

Musisz także ustalić, czy to w znaczący sposób zmieni sposób, w jaki pracujesz, i czy zmniejszy to twoją wydajność. Posiadanie jednej osoby musi „zatwierdzić” każdy wiersz kodu, a nie jakikolwiek inny użytkownik, co może mieć poważny skutek.

Różne konkretne role mogą być przydzielane różnym członkom zespołu, przy czym żaden z was nie jest „przełożony”. Osoba, która najlepiej komunikuje się między menedżerem a innymi osobami, może mieć do tego określoną rolę, ale to nie znaczy, że są one „wiodącym programistą” i może nie być osobą, która jest najlepsza technicznie lub najlepsza w robienie recenzji kodu.

Dojną krową
źródło
2

Byłbym skłonny założyć się, że chociaż zespół jest pozornie płaski, jest już wśród nich lider, I wszyscy już to wiedzą.

Wykresy organizacji rzadko odzwierciedlają sposób, w jaki ludzie faktycznie pracują. Szczególnie wyidealizowane wykresy, takie jak „płaski zespół”.

Dan Ray
źródło
2

Jeśli Twoja organizacja jest płaska, poproś wszystkich deweloperów o przejście szkolenia RSA (Requirements and Solutions Analysis), aby umożliwić im przeprowadzenie formalnego procesu. Następnie możesz przypisać wielu ekspertów merytorycznych (MŚP) do projektu i uzyskać udokumentowany proces dla wszystkich rozwiązań.

Ponadto, ponieważ wspomniałeś, że menedżer jest nietechniczny, ta osoba może nadal sterować procesem RSA i ułatwiać komunikację. Możesz również przypisać określone MŚP jako lidera w poszczególnych projektach, aby pomóc w ułatwieniu i zbudowaniu ich indywidualnych umiejętności.

SpecTP
źródło
1

Dlaczego zespół deweloperów nie głosuje anonimowo? Korzystałbym z preferencyjnego głosowania.

SnoopDougieDoug
źródło
1
  1. Możesz wybrać kogoś ze swojego zespołu, który poprowadzi Twój zespół.
  2. Twój szef może zatrudnić inną doświadczoną osobę, która zajmie to stanowisko

PS Nie sądzę, aby rotacja była dobrym pomysłem, osoba musi mieć umiejętność komunikacji i mieć dobre doświadczenie w zarządzaniu zespołem.

Cześć 福气 鱼
źródło
1

Jak sugeruje twoje pytanie, cały zespół jest odpowiedzialny za podejmowanie decyzji, sugeruję, abyś mógł zachować to w ten sam sposób. Jednak w celu komunikowania się i raportowania organom spoza zespołu możesz mieć koordynatora zespołu wybranego w zespole. Jego / jej obowiązki obejmowałyby wszystko nietechniczne. Jeśli chodzi o wszystkie aspekty techniczne, zespół powinien siedzieć i dyskutować tak samo jak teraz. Każda decyzja, którą podejmiesz, zostanie przekazana światu zewnętrznemu za pośrednictwem koordynatora . Ta pozycja może być łatwo obracana w sposób zależny od czasu.

Drugim podejściem może być posiadanie wiodącego programisty na podstawie poziomu doświadczenia> doświadczenia w tym samym projekcie> doświadczenia w tej samej firmie. W razie potrzeby pozycję można obracać w zależności od fazy. Idealnie, każda faza rozwoju ma swój własny zestaw wymagań i rezultatów, które można zaplanować i opracować jako mini projekt. Posiadanie innego odprowadzenia dla każdej fazy zminimalizowałoby prawie wszystkie negatywne skutki rotacji.

duński
źródło
1

Zamiast mieć obracającego się głównego programistę, miej rotacyjnego lidera projektu, kogoś, kto ma największą wiedzę i zrozumienie, aby doprowadzić projekt X do ukończenia.

Główny programista to zazwyczaj promocja, którą należy zdobyć.

Aby pomóc w szkoleniu i rozwijaniu umiejętności przywódczych, zmieniaj osoby odpowiedzialne za różne projekty, a następnie mierz, jak dobrze sobie poradziły.

Crosenblum
źródło
0

Musi być lider zespołu w taki sam sposób, jak kapitan na wystarczająco dużym statku.

Jeśli menedżer nie pełni lub nie może pełnić tej roli, jeden z programistów musi zostać wyznaczony do jej pełnienia.

użytkownik1249
źródło
0

Myślę, że najpierw powinieneś wspólnie uświadomić sobie, jakie masz szczęście, że możesz podejmować wszystkie techniczne decyzje w zespole programistów. Ile zespołów cierpi z powodu hierarchii mikrozarządzania, która narzuca im swoje kaprysy techniczne, często powodując niespójne wybory, koszmary zgodności i frustrację programistów ...

Jeśli wspominasz o korzyściach dewelopera, o których wspomniałeś, niektóre z nich (zorganizowane wytyczne techniczne ...) powinny już się wydarzyć, jeśli rzeczywiście istniała osoba wybitnie naturalna pod względem umiejętności technicznych. W takim przypadku nie widzę, jak oficjalne uczynienie tej osoby głównym deweloperem dałoby lepsze wyniki niż te, które otrzymujesz teraz. Jeśli taki członek zespołu nie istnieje w twoim zespole, nie widzę, jak oficjalne przyznanie władzy technicznej jakiejkolwiek osobie doprowadziłoby do lepszych wyników niż dyskusja i zbiorowa decyzja.

Widzę o wiele większą wartość przy ustanawianiu lidera organizacyjnego - koordynatora, jak ujął to Dania. Nie menedżer, nie szef, ale ktoś, kto zorganizowałby proces podejmowania wspólnych decyzji i działał jako rzecznik zespołu, interfejs na zewnątrz. Jeśli pójdziesz tą drogą, rotacja może być dobrym pomysłem, aby uniknąć wyżej wymienionych problemów - różnic w wynagrodzeniach, zazdrości ...

guillaume31
źródło
0

Czasami bycie liderem to raczej większa odpowiedzialność niż coś innego. Ktoś musi wziąć odpowiedzialność za wybory, tak działa społeczeństwo, gdy nikt inny nie chce tego robić.

Fakt, że zespół chce obrócić lidera, może oznaczać, że wszyscy czują, że mogą wziąć odpowiedzialność za to, co robią, i nie chcą nikogo faworyzować, i wydaje się to dobrą rzeczą: nie ma twardych uczuć i wszyscy chcą, aby zespół odniósł sukces.

W takich przypadkach, gdy trzeba podjąć trudne decyzje, po prostu głosuj na te decyzje, a gdy potrzebujesz przedstawiciela do rozmowy z innymi ludźmi, po prostu wybierz kogoś, kto ma najlepsze umiejętności komunikacyjne.

żart
źródło
-1

Przede wszystkim myślę, że musisz rozdzielić role. Nie ma powodu, aby osoba działająca jako punkt kontaktowy między zespołem a resztą firmy musiała koniecznie być również osobą podejmującą ostateczne decyzje techniczne.

Działanie jako punkt kontaktowy nie powinno powierzać żadnego autorytetu, więc przesunięcie tej odpowiedzialności według ustalonego harmonogramu nie powinno być konieczne. Powiedziałbym, żeby zespół usiadł, wszyscy mówią, jak bardzo mieliby coś przeciwko wykonywaniu tej pracy (niektórym może się to podobać, innym może być zdecydowanie przeciwna), a następnie głosować na kogoś, kto wypełni tę rolę. Wyjaśnij, że mogą przekazać to komuś innemu, ilekroć ma tego dość.

Jeśli chodzi o stronę techniczną. Jeśli każdy ma taki sam zestaw umiejętności i mniej więcej taki sam poziom doświadczenia, to na pewno pozwól wszystkim spróbować swoich sił w prowadzeniu. Ważne jest, aby absolutnie nie zmieniać środka projektu. Poczekaj na rozpoczęcie nowego projektu, a następnie wybierz lead, który ma największe doświadczenie w tym obszarze lub losowo.

Cercerilla
źródło