Zarządzanie inżynierią oprogramowania — spostrzeżenia Peeyusha Ranjana, wiceprezesa ds. inżynierii, Google
Wstęp
Jako inżynier oprogramowania miałem szczęście uczyć się od wpływowych przyjaciół i menedżerów w branży, którzy wspinali się po szczeblach kariery i dzielili się cennymi spostrzeżeniami podczas swojej podróży jako liderzy inżynierii. W tym poście podzielę się przemyśleniami jednego z liderów, z którymi miałem przyjemność współpracować przez lata, Peeyusha Ranjana, wiceprezesa ds. inżynierii w Google. Peeyush ma imponujące doświadczenie jako inżynier oprogramowania i lider inżynierii, pełnił funkcję dyrektora ds. technologii w firmie Flipkart, jednej z odnoszących największe sukcesy firm e-commerce w Indiach, oraz jako wiceprezes ds. inżynierii w Airbnb.
Strukturyzacja organizacji pod kątem odpowiedzialności
Kiedy Peeyush objął stanowisko CTO w firmie Flipkart, zespół inżynierów liczył już około 1000 inżynierów, a pod jego kierownictwem liczba ta wzrosła do około 1500. Postanowił stworzyć organizację zbudowaną w sposób, który umożliwiłby jej działanie z określonym zakresem odpowiedzialności, zapewniając, że w każdym obszarze znajdą się ludzie, do których można się udać. Jako przykład, biorąc pod uwagę, że był to rynek dwustronny, stworzył odpowiedzialnego właściciela po stronie Sprzedającego oraz odpowiedzialnego właściciela po stronie Kupującego. Takie podejście wyeliminowało współdzieloną lub rozproszoną odpowiedzialność, ułatwiając dotarcie do źródła problemów i znalezienie rozwiązań, gdy coś nie działało poprawnie.
Posiadanie właściwych ludzi na stanowiskach kierowniczych
Peeyush podkreślił również znaczenie posiadania odpowiednich ludzi na stanowiskach kierowniczych w każdej jednostce. Nakreślił proces identyfikacji tych przywódców, który obejmował zrozumienie ich wartości, sposobu, w jaki działają, oraz znalezienie podobieństw między jego systemem wartości a ich systemem wartości. Jako liderowi bardzo ważne jest, aby mieć ludzi, którzy rozumieją i realizują wartości i zasady, które wnosisz do stołu, tworząc harmonijne środowisko, które jednoczy misję firmy.
Zapewnienie zgodności zasad zespołu z wartościami i zasadami organizacji
Jednym z najistotniejszych wniosków dla początkujących menedżerów jest znaczenie posiadania szerszego obrazu, zapewniającego zgodność podstawowych zasad ich zespołu z wartościami i zasadami organizacji. Każdy zespół jest elementem większej układanki, a kierownik techniczny odgrywa kluczową rolę w zapewnieniu, że jego zespół bezproblemowo wpisuje się w szersze cele organizacji.
Empowerment i przejrzystość w tworzeniu efektywnych zespołów
Kluczowymi wartościami Peeyush są upodmiotowienie i przejrzystość, które są niezbędne do stworzenia efektywnego zespołu inżynierów. Menedżerowie, którzy wzmacniają swoje zespoły i słuchają ich opinii, mogą zwielokrotnić produktywność swojego zespołu, czyniąc go bardziej efektywnym niż zwykłe zwiększanie liczby osób w zespole. Inżynierowie cenią sobie przejrzystość, dlatego menedżerowie powinni być otwarci i uczciwi wobec swoich zespołów. Przejrzystość buduje zaufanie, ułatwiając wspólne osiąganie celów.
Jednym ze sposobów osiągnięcia tego celu jest regularne wprowadzanie przekazów kierowniczych na każdym poziomie hierarchii przywództwa w firmie.
Pozwólcie, że dodam trochę więcej kontekstu, dlaczego przekazywanie informacji przez kierownictwo jest ważne — proces kaskadowania informacji i decyzji z wyższych szczebli zarządzania na niższe szczeble jest niezbędny z kilku powodów w firmie programistycznej:
- Dopasowanie i spójność: Przekazywanie zapewnia, że wszystkie poziomy zarządzania pracują nad tymi samymi celami i zadaniami, promując spójność w podejmowaniu decyzji i alokacji zasobów w całej organizacji.
- Jasna komunikacja: przekazując informacje i dyrektywy, kierownictwo może zapewnić, że wszyscy pracownicy są dobrze poinformowani o priorytetach, strategiach i oczekiwaniach firmy, co z kolei umożliwia im skuteczniejsze wykonywanie swoich ról.
- Upoważnienie i odpowiedzialność: przekazywanie uprawnień pomaga delegować uprawnienia decyzyjne i odpowiedzialność na niższe szczeble zarządzania, umożliwiając im dokonywanie świadomych wyborów i przejmowanie odpowiedzialności za wyniki swojego zespołu.
- Elastyczność i responsywność: przekazy kierownictwa ułatwiają szybsze reagowanie na zmieniające się warunki rynkowe lub potrzeby organizacji, zapewniając, że odpowiednie informacje i decyzje szybko docierają do wszystkich szczebli.
- Współpraca i praca zespołowa: Skuteczne przekazywanie promuje współpracę między działami i pracę zespołową, informując wszystkie zespoły o inicjatywach, wyzwaniach i sukcesach w całej firmie.
- Zaangażowanie i morale pracowników: kiedy pracownicy rozumieją cele firmy i swoją rolę w ich osiąganiu, jest bardziej prawdopodobne, że poczują się zaangażowani i zmotywowani do przyczyniania się do sukcesu organizacji.
- Dzielenie się wiedzą i rozwój umiejętności: Przekazywanie może służyć jako platforma do dzielenia się najlepszymi praktykami, zdobytymi doświadczeniami i wiedzą fachową między różnymi zespołami i poziomami zarządzania, wspierając kulturę ciągłego uczenia się i rozwijania umiejętności.
Budowanie autonomicznych zespołów, które podejmują ryzyko i wprowadzają innowacje
Spostrzeżenia Peeyusha na temat tworzenia autonomicznych zespołów, które są chętne do podejmowania ryzyka i wprowadzania innowacji, rezonują z nastawieniem na rozwój, który jest niezbędny do ciągłego doskonalenia. Takie podejście zachęca jednostki do znajdowania własnych rozwiązań i przedstawiania pomysłów, budując środowisko zaufania i kreatywności.
Niektóre z kluczowych korzyści płynących z budowania autonomicznych zespołów obejmują:
- Szybsze podejmowanie decyzji: autonomiczne zespoły mogą podejmować decyzje w swojej domenie, co skraca czas reakcji i zmniejsza potrzebę ciągłego zatwierdzania przez kierownictwo.
- Zwiększona innowacyjność: kiedy zespoły mają swobodę eksperymentowania i podejmowania decyzji, jest bardziej prawdopodobne, że wymyślą kreatywne rozwiązania i innowacje, które mogą popchnąć firmę do przodu.
- Wyższa produktywność: dzięki większej autonomii zespoły mogą skuteczniej zarządzać swoimi zadaniami i priorytetami, co skutkuje zwiększoną wydajnością i produktywnością.
- Lepsze zaangażowanie pracowników: pracownicy w autonomicznych zespołach mają tendencję do odczuwania większej własności i odpowiedzialności za swoją pracę, co prowadzi do większej satysfakcji z pracy i zaangażowania.
- Elastyczność i zdolność adaptacji: autonomiczne zespoły mogą szybko reagować na zmiany na rynku, potrzeby klientów lub technologię, dzięki czemu firma jest bardziej elastyczna i odporna.
- Skalowalność: Umożliwiając zespołom niezależne działanie, organizacja może łatwiej skalować swoją działalność, ponieważ nowe zespoły mogą być dodawane bez znacznego zwiększania kosztów zarządzania.
- Współpraca międzyfunkcyjna: Autonomiczne zespoły często składają się z członków o zróżnicowanych umiejętnościach i wiedzy, promując współpracę międzyfunkcyjną i dzielenie się wiedzą w ramach zespołu.
- Mniejsza biurokracja: ponieważ autonomiczne zespoły wymagają mniejszego poziomu nadzoru kierownictwa, może to prowadzić do zmniejszenia biurokracji i biurokracji, usprawnienia procesów i przyspieszenia realizacji.
- Lepsza alokacja zasobów: autonomiczne zespoły mogą podejmować bardziej świadome decyzje dotyczące alokacji zasobów w oparciu o bezpośrednią wiedzę na temat potrzeb i priorytetów projektu, co prowadzi do bardziej efektywnego wykorzystania zasobów.
- Przyciąganie i zatrzymywanie talentów: Kultura, która wspiera autonomię i wzmacnianie pozycji, może przyciągać największe talenty i pomagać w utrzymaniu pracowników, ponieważ czują się doceniani, stawiają przed nimi wyzwania i którym ufają w swoich rolach.
Jednym z najtrudniejszych aspektów zarządzania inżynierią jest przejście od bycia indywidualnym współpracownikiem do menedżera. Peeyush zauważył, że bycie świetnym inżynierem niekoniecznie przekłada się na bycie świetnym menedżerem ludzi. Odnoszący sukcesy kierownik ds. inżynierii musi równoważyć rolę empatycznego menedżera ludzi i lidera technicznego, kierując zespołem i wpływając na niego bez bycia apodyktycznym.
Liderzy powinni zapewniać swoim zespołom możliwości rozwoju i opracowywania własnych rozwiązań, tworząc poczucie własności i dumy ze swojej pracy. Muszą również rozwinąć głębokie poczucie troski o każdego ze swoich pracowników, zrozumieć ich specyficzne cele zawodowe i pomóc znaleźć im możliwości, które umożliwią im rozwój zgodny z ich celami zawodowymi. Pamiętaj stare powiedzenie, że w większości przypadków ludzie nie opuszczają firm, opuszczają swoich menedżerów. Będąc empatycznymi i troskliwymi menedżerami, którzy dostosowują swój styl przywództwa do potrzeb każdego ze swoich pracowników, mogą znacznie ograniczyć ryzyko odejścia i pomóc zbudować silny zespół, który jest zorientowany na misję i może łączyć się, aby osiągnąć wielkie rzeczy.
Identyfikacja kluczowych liderów, aby rozpocząć zespół od podstaw
Spostrzeżenia Peeyusha na temat budowania odnoszącego sukcesy zespołu są nieocenione dla każdego, kto zaczyna nowy zespół. Podkreślił, jak ważne jest zidentyfikowanie kluczowych liderów, którzy mają odpowiednie nastawienie, aby stworzyć zespół od podstaw, umiejętność pracy w niejednoznacznych sytuacjach i dążenie do samodzielnego startu.
Ponadto podkreślił, jak ważne jest nauczenie się, jak reprezentować swoich ludzi i ich pracę wobec reszty organizacji, budować zaufanie i promować wzrost i rozwój zespołu.
Wybierając lidera, który ma założyć zespół od podstaw, weź pod uwagę następujące czynniki:
- Ekspertyza techniczna: wybierz lidera, który ma duże doświadczenie w inżynierii oprogramowania i jest zaznajomiony z technologiami i narzędziami istotnymi dla Twojego projektu. Powinni być w stanie zapewnić wskazówki techniczne i podejmować świadome decyzje dotyczące architektury, projektowania i praktyk programistycznych.
- Doświadczenie: Poszukaj kandydata z wcześniejszym doświadczeniem w budowaniu i kierowaniu zespołami inżynierów oprogramowania, najlepiej w podobnej dziedzinie lub branży. To doświadczenie pomoże im zrozumieć wyzwania i najlepsze praktyki tworzenia skutecznego zespołu.
- Wizja i strategia: Lider powinien mieć jasną wizję celów zespołu i być w stanie opracować spójną strategię ich osiągnięcia. Powinni umieć określać priorytety zespołu i dostosowywać je do celów firmy.
- Komunikacja i umiejętności interpersonalne: Skuteczna komunikacja ma kluczowe znaczenie dla lidera, ponieważ będzie on musiał przekazać cele zespołu, oczekiwania i postępy zarówno członkom zespołu, jak i interesariuszom. Powinni także umieć aktywnie słuchać i wczuwać się w obawy i potrzeby swojego zespołu.
- Zdolność adaptacji i rozwiązywanie problemów: Lider powinien być w stanie dostosować się do zmieniających się okoliczności, takich jak nowe technologie, zmieniające się priorytety lub ograniczenia zasobów. Powinni mieć silne umiejętności rozwiązywania problemów i być zdolni do znajdowania kreatywnych rozwiązań dla wyzwań.
- Budowanie zespołu i motywacja: Lider powinien mieć doświadczenie w budowaniu spójnych, wydajnych zespołów. Powinni umieć identyfikować i rekrutować talenty, tworzyć pozytywną kulturę zespołu i motywować członków zespołu, aby osiągali jak najlepsze rezultaty.
- Podejmowanie decyzji i delegowanie: Lider powinien być w stanie podejmować świadome, terminowe decyzje i skutecznie delegować zadania, dając członkom zespołu możliwość przejęcia odpowiedzialności za swoją pracę.
- Rozwiązywanie konfliktów: Konflikty mogą powstawać w zespole lub z zewnętrznymi interesariuszami, a lider powinien być w stanie rozwiązywać je konstruktywnie i dyplomatycznie, znajdując obopólnie korzystne rozwiązania.
- Mentoring i coaching: Lider powinien być zaangażowany w rozwój zawodowy członków swojego zespołu, zapewniając wskazówki, mentoring i możliwości rozwoju umiejętności.
- Dopasowanie kulturowe: Idealny lider powinien być zgodny z wartościami i kulturą Twojej firmy, ponieważ będą oni odgrywać znaczącą rolę w kształtowaniu środowiska zespołu i nawyków pracy.
Podczas naszej rozmowy podzielił się ze mną swoim podejściem do efektywnego zarządzania inżynierią, które przyrównał do podejścia rodzica. Analogia Peeyusha Ranjana między kierownikami ds. inżynierii a rodzicami jest interesująca i daje do myślenia. Jak wyjaśnił, obie role są odpowiedzialne za kierowanie i pielęgnowanie swoich podopiecznych, aby osiągali swoje cele i wykorzystywali swój pełny potencjał. Tak jak rodzic musi zapewniać wsparcie, zachętę i od czasu do czasu pchać we właściwym kierunku, aby pomóc dziecku rozwijać się i odnosić sukcesy, kierownik ds. technicznych musi robić to samo dla członków swojego zespołu.
Przypomniało mi to stare przysłowie: „Daj człowiekowi rybę, a nakarmisz go na jeden dzień. Naucz człowieka łowić ryby, a nakarmisz go na całe życie”.
To przysłowie podkreśla znaczenie uczenia ludzi umiejętności, których potrzebują, aby stać się samowystarczalnymi i niezależnymi, a nie tylko dostarczania tymczasowych rozwiązań ich problemów. Podkreśla wartość edukacji i wzmocnienia pozycji we wspieraniu długoterminowego wzrostu i samodzielności.
Zasada ta dotyczy również Personelu i Głównych inżynierów odpowiedzialnych nie tylko za ważne części Produktu, ale także za pomoc w wychowaniu i rozwoju młodszych inżynierów w swoich obszarach.
Tworzenie wspierającego i opiekuńczego środowiska dla członków zespołu
Członkowie zespołu mają różne mocne i słabe strony oraz potrzeby rozwojowe. Skuteczni menedżerowie ds. inżynierii dostrzegają te różnice i pracują nad zapewnieniem zindywidualizowanego wsparcia i możliwości rozwoju dostosowanych do potrzeb każdego członka zespołu. Muszą być dostrojeni do motywacji, celów zawodowych i zainteresowań członków swojego zespołu, aby stworzyć środowisko, w którym każda osoba może się rozwijać.
Jednocześnie kierownicy ds. inżynierii muszą również zapewniać jasne wyczucie kierunku i określać oczekiwania wobec członków swojego zespołu. Tak jak rodzic ustala granice i oczekiwania dotyczące zachowania swojego dziecka, kierownik ds. technicznych musi określić jasne oczekiwania dotyczące wydajności, ustanowić odpowiedzialność i pielęgnować kulturę ciągłego doskonalenia. Muszą zapewniać regularne informacje zwrotne i coaching, aby pomóc członkom swojego zespołu wzrastać i rozwijać się, tak jak rodzic robi to ze swoim dzieckiem.
Ostatecznie rolą kierownika ds. inżynierii jest zapewnienie wspierającego i opiekuńczego środowiska, w którym członkowie zespołu mogą się rozwijać, uczyć i w pełni wykorzystywać swój potencjał. Posługując się analogią do rodzica, Peeyush podkreśla znaczenie empatii, cierpliwości i nastawienia na rozwój w tej roli. Skuteczni menedżerowie ds. inżynierii muszą być w stanie postawić się na miejscu członków swojego zespołu, przewidywać ich potrzeby i zapewnić odpowiedni poziom wsparcia, aby pomóc im odnieść sukces.
Wniosek
Podsumowując, podejście Peeyusha do zarządzania inżynierią jest zgodne z zasadami odpowiedzialności, upodmiotowienia, rozwijania i pielęgnowania inżynierów oraz ciągłego doskonalenia. Jego spostrzeżenia na temat tworzenia odnoszących sukcesy zespołów i zapewniania skutecznego przywództwa są nieocenione dla każdego, kto rozpoczyna nowy zespół lub przechodzi na stanowisko kierownika ds. inżynierii. Równoważąc przywództwo techniczne z empatią i umiejętnościami zarządzania ludźmi, menedżerowie ds. inżynierii mogą stworzyć wspierające i opiekuńcze środowisko, które pomaga członkom ich zespołów rozwijać się i realizować ich pełny potencjał.
Odnoszący sukcesy lider powinien przyjąć styl adaptacyjny, powstrzymując się od natychmiastowego wskakiwania i narzucania na ślepo wcześniejszych doświadczeń lub podejść, bez uwzględnienia wyjątkowego kontekstu obecnej organizacji. Zamiast tego powinni dostosować swoje strategie przywództwa do konkretnych potrzeb zespołu i firmy.
Sugerowane czytanie:
UWAGA: Linki do powyższych książek są linkami partnerskimi