Jakie umiejętności powinienem pielęgnować, aby zostać liderem rozwoju / techniki? [Zamknięte]

82

Obecnie jestem profesjonalnym programistą. Chcę poszerzyć swój zestaw umiejętności, ale chcę również, aby kariera skoczyła na bycie liderem programistów w zespole. Wiem, że trzeba się wiele nauczyć (i to nie będzie od razu), ale myślę, że jestem wystarczająco inteligentny, aby to zrobić i jestem gotów podjąć wyzwanie.

Jestem pewien, że wielu członków tutaj prawdopodobnie przeszło przez to i sami teraz odnoszą sukcesy. Niestety, chociaż znam pewne obszary osobiste, które chciałbym poprawić (głębokość wiedzy, zakres wiedzy, umiejętności itp.), Nie jestem pewien, jak bym coś takiego zaczął.

Jako programista, jakie kroki powinienem podjąć, aby osiągnąć ten cel? Co powinienem traktować priorytetowo?

lunchmeat317
źródło
Czy w Twojej obecnej firmie są szanse na awans na lidera zespołu? Bez doświadczenia w kierowaniu zespołem zastanawiam się, czy zbyt wiele firm zatrudnia tylko od wewnątrz.
JeffO
@JeffO Właśnie zmieniłem zlecenia. Nie wiem, czy będę miał okazję - myślę, że jest taka możliwość, ale jest to niewielki startup i myślę, że będzie tylko jeden potencjalny twórca na raz.
lunchmeat317
2
Tylko jedna umiejętność: umiejętność przekonania osoby, która może udzielić tej pozycji, aby dała tę pozycję Tobie.
vortexwolf
1
Jak się okazuje, istnieje bardzo wyraźna możliwość, że tak naprawdę nie jestem do tego przygotowany. O ile chciałbym rozwinąć swoją karierę w tym kierunku, myślę, że bardziej popadam w sprawy deweloperskie - czasami po prostu chcę spuścić głowę i napisać kod. Wciąż rozważam możliwości, ale teraz ostrożnie.
lunchmeat317

Odpowiedzi:

90

Aby zostać liderem technicznym, niezbędne są następujące kwestie

  • Możliwość mentorowania członków personelu na każdym poziomie stażu pracy, od osoby, która nie była na studiach przez 3 miesiące, po osobę, która programuje od 30 lat

  • Dobra znajomość Twojej domeny programistycznej. Obejmuje to: języki, frameworki, narzędzia, środowiska programistyczne

  • Dobre zrozumienie systemów zarządzania problemami, umiejętności zarządzania projektami i kontroli wersji

  • Bądź zabójcą błędów

  • Wiedzieć, jak przeprowadzać terminowe przeglądy kodu, czego szukać i jak zminimalizować czas potrzebny do wstrzymania i wprowadzenia zmian

  • Bądź na bieżąco z rozwojem swojej domeny programistycznej. Na przykład, jeśli nie nauczyłeś się nowych frameworków lub technologii z .NET 2, dziś robiłbyś wszystko w odwrotny sposób.

  • Jak pisać testy jednostkowe i kpiny, a także zachęcić programistów do napisania ich

  • Wiedza o tym, jakie są wzorce projektowe i kiedy je stosować

  • Wiedza o tym, co pachnie kodem i jak je złagodzić

  • Ciągła integracja

  • Możliwość planowania projektów i wydań

W zależności od organizacji i od tego, czy zatrudniasz architektów, prawdopodobnie będziesz musiał wiedzieć, co następuje:

  • Możliwość komponowania projektów i dzielenia ich na funkcjonalne części

  • Dogłębne zrozumienie bezpieczeństwa, w tym właściwy sposób postępowania z hasłami, oddzielania systemów, zabezpieczania danych itp

  • Koncepcje korporacyjne, takie jak magistrale usług, kolejki komunikatów, BizTalk

  • Wzorce projektowania korporacyjnego

  • Architektury usług / RPC, takie jak SOAP i REST

  • Frameworki ORM, takie jak Hibernacja, Entity Framework, Doctrine

  • Ciągłe wdrażanie

  • Chmura

  • Umiejętność rekomendowania odpowiednich technologii do wykorzystania w projekcie. Może to być trudne, jeśli Twój zespół / sklep obsługuje tylko .NET, PHP lub Java.

  • Zaprojektuj aplikację w taki sposób, aby przyszłe rozszerzenia były łatwo dostępne

Jeśli zamierzasz zostać menedżerem ds. Rozwoju, potrzebujesz również:

  • Umiejętności przeprowadzania wywiadów i jak znaleźć odpowiedni personel
  • Jak radzić sobie z problemami z członkami zespołu
  • Zarządzanie dyrektywami / celami biznesowymi i przekształcanie odpowiednich w informacje dla programistów
  • Możliwość oszacowania czasu dla programistów o różnych umiejętnościach
  • Zdolność do przydzielania zadań właściwym programistom na podstawie ich umiejętności i umiejętności

I wreszcie kilka innych zalecanych punktów:

  • Ucz się poza swoją domeną programistyczną

  • Naucz się mówić NIE, gdy rzeczy nie są możliwe lub są poza zakresem lub są sprzeczne z ograniczeniami, takimi jak budżet lub czas.

Zarządzanie zespołem to trudna rola. Musisz być osobą, która może odpowiedzieć na każde pytanie, musisz znać odpowiednie technologie (chyba że masz architekta), musisz mieć umiejętności zarządzania ludźmi i być przystępnym. przez twoich pracowników (obejmujących stanowisko kierownicze). Oprócz tego musisz mieć dokładne umiejętności szacowania, aby zapewnić opłacalność projektu, i musisz być w stanie ubrudzić ręce kodem użytkownika, aby szybko zlokalizować problemy i je naprawić. Musisz unikać chęci zrobienia wszystkiego samemu i wspierania środowiska zespołu, które nie jest toksyczne. Musisz stale być na czele stosu technologii i uczyć się najnowszych osiągnięć i technik, a także szerszych trendów w branży.

Powinieneś także naprawdę znać przynajmniej jedną platformę bazy danych i dobrze ją znać. Dowiedz się, jak wykonywać replikację, procedury składowane, jak działa optymalizator zapytań, jak prawidłowo zaprojektować schemat i jakie pola indeksować.

Niezależnie od dokładnej pozycji, każda z wyższych ról wymaga umiejętności skutecznego komunikowania się. Jeśli nie jesteś pewnym mówcą, spójrz na robienie czegoś takiego jak Toast Masters (wystąpienie publiczne). Dowiedz się, jak nawiązać i utrzymać kontakt wzrokowy. Bądź pewny siebie. Ubierz się odpowiednio do pozycji. Dawaj dobry przykład.

Sam
źródło
2
Właśnie naszkicowałem kilka pomysłów, które mogłem szybko wymyślić. Wrócę i dodam więcej później. Dobre pytanie.
Sam
Mogę poprzeć zalety Toastmasters. Bardzo mi pomogło w mojej karierze. Umiejętność jasnego przekazywania swoich myśli (szczególnie myśli technicznych osobom nietechnicznym) jest nieocenioną umiejętnością do posiadania.
Jason Swett,
27

Z mojego doświadczenia wynika, że ​​Lead ma nieco mniej wspólnego z brudną pracą programowania i więcej z zarządzaniem. W tym celu polecam następujące

  1. Zainwestuj więcej czasu w prace projektowe i architektoniczne oraz rozwój . Jako lider, twoja funkcja będzie koncentrować się na dostarczaniu wskazówek technicznych i wskazówek dla twojego zespołu. Będziesz musiał więcej zrozumieć, jak pasują do siebie części całości, a mniej, jak działa instalacja wodno-kanalizacyjna. Nie zrozum mnie źle, potrzebujesz solidnych technicznych umiejętności, aby być skutecznym i kompetentnym tropem, ale ważniejsze będzie spojrzenie na wyższy poziom tego, co się dzieje i jak to będzie działać. Powinieneś znać więcej wzorców projektowania najlepszych praktyk i skutecznych praktyk kodowania

  2. Naucz się wielozadaniowości i zarządzania czasem . Jeśli jesteś teraz w tym dobry, to miło: rozwijaj więcej. Jako programista musisz się martwić o swoje bieżące zadanie / projekt. Jako trop będziesz miał

    • Aby uczestniczyć w większej liczbie spotkań niż się troszczysz. Jest to prawdopodobnie najbardziej odrętwiająca część przywództwa zespołowego
    • Prace nad alokacją zasobów. Jeśli masz szczęście, zasoby będą rzadkie, a projekty obfite.
    • Przejmij inicjatywę w zakresie architektury i projektowania
    • W zależności od wielkości i struktury organizacji dostarcz niezliczone raporty, zgodnie z harmonogramem i terminowo. Pomyśl o potencjale wiodącym jako o niskim czynszu kierownika projektu.
  3. Przygotuj się na skuteczne delegowanie . Ten IMO będzie najtrudniejszy do dostosowania. Jako programista jesteś przyzwyczajony do brudzenia rąk i robienia rzeczy. Wykonuje wszystkie prace hydrauliczne i badania. To będzie musiało się zatrzymać lub zostać zmniejszone. Wchodzą koncerty, rozdajesz je zespołowi. Dostaniesz część akcji, nie tyle, ile jesteś przyzwyczajony. A ty ugryziesz się w język, aby oprzeć się pokusie, by zdobyć więcej akcji dla siebie.

  4. Na bardziej profesjonalnej linii rozważ trening, który nie tylko zwiększy twoje umiejętności, ale zmieni twoje spojrzenie . Kurs awaryjny w zarządzaniu projektami oprogramowania nie zaszkodzi. Lean Six Sigma to także bardzo dobry program treningowy (mogę zaświadczyć o jego skuteczności), który pomoże spojrzeć na rozwiązywanie problemów z bardziej logicznego punktu widzenia. Nie wspominając już o tym, że ze stanowiska kierowniczego jesteś gotowy na jeszcze więcej ról na wyższych stanowiskach, które będą wymagały mniej praktycznych umiejętności technicznych i większej zdolności zarządzania.

  5. Doskonal swoje umiejętności komunikacyjne i interpersonalne . Będziesz głównym punktem wejścia do swojego zespołu ze świata zewnętrznego. Twój kierownik lub inny przełożony przyjedzie do ciebie pierwszy. Inne jednostki / zespoły w Twojej organizacji będą się z Tobą kontaktować we wszystkim, co dotyczy zespołu. Będziesz zarządzał najtrudniejszym i nieprzewidywalnym zasobem ze wszystkich: ludźmi. Musisz wyhodować grubą skórę, nauczyć się połykać duże ilości dumy i brać odpowiedzialność za upadek swojego zespołu.

kolossus
źródło
2
Świetne odpowiedzi, podoba mi się to, jak zauważyłeś wszystkie rzeczy, o których jako programista na ogół nie masz pojęcia - w szczególności delegacja. Ostatniej pracy oddelegowałem wszystko, co mogłem, i wciąż miałem mnóstwo rzeczy, żeby się zająć. Następnie podczas (rzadkich) wolnych chwil robiłem „nudne” rzeczy - oferowałem pomoc w usuwaniu drobnych błędów, dokumentacji. Muszę prowadzić z przodu.
Rocklan
2
+1 za podkreślenie, że role przywódcze często wymagają znacznie więcej zarządzania niż umiejętności technicznych
Krease
To wybitna odpowiedź i naprawdę oddaje istotę roli. Dobra robota.
Lloyd Moore,
14

Ważne są też rzeczy, których Sam nie powiedział:

  • Jak sprecyzować i dać innym programistom pracę. Częścią twojego zadania jest utrzymanie 100% wykorzystania pozostałych programistów. Bardzo ważne jest pisanie jednoznacznych specyfikacji.

  • Jak zbudować szkieletową / prototypową aplikację, którą wszyscy inni powinni śledzić

  • Jak wspierać dobre morale zespołu

  • Jak uczestniczyć, prowadzić i prowadzić spotkania, jak dokumentować elementy akcji

  • Jak oszacować, napisać plan projektu i zaktualizować plan projektu

  • Jak spojrzeć w przyszłość - jeśli problem wystąpi za 3 miesiące, staraj się go jak najszybciej rozwiązać. Jeśli programista jedzie na wakacje na 7 tygodni, musisz zacząć planować to teraz.

  • Jak rozmawiać z zarządem. Mówią do nas innym językiem. Daj im rozwiązania, a nie problemy. Powiedz im, co oznaczają dla nich rzeczy techniczne.

I chociaż Sam już to powiedział, jedną z najważniejszych rzeczy jest nauczenie się, jak powiedzieć „nie” . Będziesz dużo to robił . Innym sposobem spojrzenia na to jest powiedzenie „ tak” , ale „tylko wtedy, gdy możemy uzyskać więcej pieniędzy / czasu / zasobów” - lub „to na drugie wydanie” :)

Rocklan
źródło
Myślę, że wiele twoich elementów trafia do wiadra Architekta lub PM. Ale tak, czasami deweloper musi to zrobić.
SandRock
11

Wszystko to według książki i dobrych odpowiedzi. Pozwól mi uderzyć Cię rzeczywistością.
Uwierz lub nie, większość czasu poświęcisz na wyjaśnianie menedżerom

  • jak trudno jest rozwiązać problem lub
  • dlaczego nie można tego rozwiązać w określonym przedziale czasowym lub
  • nawet jak mniej ważne jest rozwiązanie.

W tym celu potrzebujesz umiejętności wyjaśniania rzeczy technicznych osobom nietechnicznym w kategoriach nietechnicznych. I to jest bardzo trudne. np. rozważ wyjaśnienie P = NP do 6-latka. Niestety nie ma na to formalnego szkolenia i musisz się go uczyć samodzielnie.

Również w tej sytuacji zaczyna cię uderzać polityczny sh * t. Menedżer powie ci, abyś faworyzował osobę, ponieważ ona / ona postępuje zgodnie z tym procesem, ale wiesz, że osoba ta nie jest przydatna w twoim zespole z różnych powodów, od braku umiejętności technicznych po niezbyt dobrego członka zespołu. Nadal musisz więc nie tylko pracować z tą osobą, ale także dawać jej dobre oceny. Przeciwnie, jest osoba, która ma dobre umiejętności i bardzo skutecznego członka zespołu, ale nie wie, jak zadowolić kierownictwo, a zatem otrzymuje mniej ocen.
Następnie odbywają się bezużyteczne spotkania z osobami na wysokich stanowiskach, trzymającymi się z odległej lokalizacji, wykładającymi o efektywnych procesach i o tym, w jaki sposób jego najnowsza odmiana procesów zwiększy produktywność. Musisz wiedzieć, jak ukryć nudną twarz i wyglądać energicznie.

Manoj R.
źródło
1
„musi wiedzieć, jak ukryć nudną twarz i wyglądać energicznie” hahaha
Adrien Be
Zawsze czuję się znudzony, gdy te spotkania się rozpoczynają, z wyjątkiem tego, że dyskutowane jest coś związanego z
kwestiami