Camille Fournier, dyrektor zarządzający i szef działu inżynierii platformy w Two Sigma, była wiceprezes ds. technicznych w Goldman Sachs i CTO w Rent the Runway, wyjaśnia, w jaki sposób zarządzanie jakością wpływa na solidną inżynierię, harmonię w miejscu pracy i przyszłe zyski. Obala powszechnie panujące wśród inżynierów oprogramowania przekonanie, że zarządzanie jest „miękką” umiejętnością, która wymaga mniej siły woli niż inżynieria. Prawdziwe anegdoty i przykłady Fournier ilustrują jej argument, że dobre zarządzanie ma znaczenie w każdej dziedzinie. Proponuje interesujące niespodzianki i spokojne wskazówki dla inżynierów oprogramowania, którzy chcą przejść na stanowisko kierownicze, a także dla tych, którzy awansowali na stanowisko kierownicze wbrew swojemu rozsądkowi. getAbstract poleca jej spostrzeżenia jako użyteczny przewodnik po karierze dla szefów techników inżynierii, a w szczególności dla menedżerów inżynierii oprogramowania.

Streszczenie tłumaczone z angielskiego maszynowo (przepraszamy za niedoskonałości) jako materiał na nasze szkolenia biznesowe.

Take-Aways

  • Wielu inżynierów oprogramowania nie lubi zarządzania i woli pisać kod.
  • Poza umiejętnościami technicznymi, menedżerowie inżynierii oprogramowania muszą poświęcić czas na naukę nowych umiejętności, w tym jak kierować ludźmi i projektami.
  • Dobrzy menedżerowie określają, czego oczekują od osób, którymi kierują, i upewniają się, że ich zespoły realizują projekty zgodnie ze specyfikacją i na czas.
  • Kierownicy inżynieryjni muszą mieć duże umiejętności techniczne, aby zyskać wiarygodność wśród swoich pracowników.
  • Aby dobrze zarządzać innymi, należy najpierw zarządzać sobą.
  • Dla większości inżynierów oprogramowania pierwszym stanowiskiem kierowniczym jest stanowisko tech leadera.
  • To, jak Państwo zarządzają swoimi inżynierami, wpływa na to, jak oni zarządzają innymi.
  • Mentoring pracowników pomaga zarówno trenerowi, jak i pracownikowi. Jeśli jest się mentorem dla stażystów, można zyskać nowe perspektywy.
  • Kierownicy działów technicznych powinni przeprowadzać z pracownikami spotkania jeden na jeden, „skip-level”.
  • Powinni opracować 30-, 60- i 90-dniowe plany dla wszystkich nowo zatrudnionych.
  • Podsumowanie

Technicy
Kierownicy ds. inżynierii oprogramowania są po pierwsze, po drugie i zawsze technologami – profesjonalistami, dla których logika, analiza i wiedza programistyczna są podstawą kariery. Ci inżynierowie działają ze szczególnym nastawieniem i wyjątkowymi umiejętnościami technicznymi. Są obiektywni i gotowi wypróbować nowe podejścia, jeżeli stare sposoby nie działają. Kierownicy działów inżynieryjnych są również agentami zmian i często stanowią istotny kapitał dla swoich firm.

„Branża techniczna jest pełna ludzi, którzy gardzą zarządzaniem, uważając, że nie jest to tak ważna praca, jak pisanie kodu”.
Jednak wielu inżynierów oprogramowania i kierowników technicznych nie szanuje funkcji zarządzania i tego, co się z nią wiąże. Niektórzy „genialni, introwertyczni” inżynierowie nie chcą zarządzać. Chcą pisać kod, a nie zastanawiać się nad politycznymi aspektami i konsekwencjami związanymi ze stanowiskami kierowniczymi. Żadna organizacja nie może przetrwać bez profesjonalnego zarządzania, w tym organizacje technologiczne, których podstawową działalnością jest tworzenie oprogramowania. Potrzebują one menedżerów, którzy są głęboko poinformowani o swojej pracy i którzy rozwijają dobre umiejętności zarządzania.

Ścieżki kariery
Powszechną ścieżką kariery dla inżynierów oprogramowania jest rozpoczęcie pracy jako lider techniczny, a następnie zostanie kierownikiem inżynierii. Ostatecznie kierownik inżynierii może awansować na wyższe stanowisko techniczne, takie jak dyrektor inżynierii lub szef inżynierii, dyrektor techniczny (CTO), dyrektor ds. informacji (CIO), główny naukowiec, główny architekt, dyrektor ds. produktu, wiceprezes ds. inżynierii lub wiceprezes ds. operacji technicznych.

„Ale zarządzanie to praca, jest to praca konieczna i ważna, a w szczególności jest to teraz Państwa praca”.
Niezależnie od ścieżki kariery i docelowego stanowiska, inżynierowie powinni nauczyć się być skutecznymi menedżerami. Kierownicy inżynieryjni muszą wiedzieć, jak zarządzać grupami wyspecjalizowanych techników, którzy oczekują od swoich kierowników praktycznej wiedzy. Taka wiedza daje kierownikom inżynierów wiarygodność, której potrzebują, aby kierować innymi inżynierami.

„Jako menedżer pomaga Pan swojemu zespołowi osiągnąć sukces, tworząc jasne, skoncentrowane i mierzalne cele”.
Jako menedżer nie może Pan nigdy ignorować inżynierów w swoim zespole. Jeśli potrzebują Pana uwagi, proszę ją poświęcić. Ale proszę nie stosować mikrozarządzania. Każdy inżynier nie znosi takiego kierownika.

Obowiązki kierownicze
Kierownik działu inżynierii ma wiele obowiązków. Przede wszystkim musi pomagać pracownikom skupić się na właściwych działaniach, pomagać im w rozwoju zawodowym i karierze. Obejmuje to organizowanie dla nich szkoleń i pomoc w opracowaniu prezentacji „pakietu promocyjnego”, który będzie im potrzebny do awansu w firmie i uzyskania podwyżki. Pomagać pracownikom w ustalaniu celów zawodowych. Prowadzenie regularnych spotkań z inżynierami oprogramowania, którzy pracują dla Państwa, zazwyczaj co tydzień. Przygotować porządki obrad i wykorzystać je, aby dowiedzieć się, co się dzieje z członkami zespołu i ich projektami. Uważnie słuchać, co mówią. Przekazywać im indywidualne informacje zwrotne, których potrzebują.

Mentoring
Ważną częścią zarządzania jest pełnienie roli mentora dla nadzorowanych przez Pana inżynierów. Jest to szczególnie ważne dla nowo zatrudnionych i stażystów. Państwa zadaniem jako mentora jest prowadzenie swoich podwładnych i udzielanie im przydatnych wskazówek i rad. Nie należy marnować ich czasu ani „zastraszać i umniejszać”. Proszę od razu zaangażować stażystów w działania w Państwa firmie. W ciągu dnia należy okresowo sprawdzać, co u nich słychać.

„Nauka tej umiejętności jest cenna nawet dla inżynierów, którzy nie chcą zarządzać ludźmi”.
Mentoring dla nowych pracowników może być niezwykle korzystny. Nowi pracownicy to świeże spojrzenie, które pomoże Państwu zobaczyć firmę i jej linię produktów w nowym świetle. Proszę się upewnić, że mają Państwo odpowiednie „dokumenty wprowadzające”, które pomogą nowym pracownikom łatwo odnaleźć się w środowisku pracy. Te „przewodniki krok po kroku” powinny pokazać im, jak „skonfigurować środowisko programistyczne”, nauczyć ich, jak działają Państwa „systemy śledzenia” i zapoznać ich z narzędziami, których będą używać.

Stanowisko lidera technicznego
Pierwszą częściowo nadzorczą rolą, którą obejmuje wielu inżynierów oprogramowania, jest stanowisko lidera technicznego. Jest to stanowisko kierownicze, chociaż technicy nie zarządzają innymi ludźmi. Tech lead nie jest formalnym szczeblem na drabinie kariery, lecz raczej zestawem dodatkowych obowiązków. Tech lead musi „wywierać wpływ bez władzy”. W książce „Talking with Tech Leads” Patrick Kua opisuje typowego tech lead’a jako osobę „odpowiedzialną za zespół programistów” i piszącą ze swoimi zespołami kod przez co najmniej 30% czasu.

„Bardzo rzadko zdarza się, że tech lead otrzymuje podwyżkę wynagrodzenia lub podwyżkę tytułu, a tech lead po raz pierwszy nie ma pojęcia, jak trudne mogą być nowe obowiązki”.
Tech lead musi być kompetentnym specjalistą technicznym, który zna architekturę, którą wspiera. Chociaż tech liderzy zazwyczaj nadal piszą kod, to jednak spoczywa na nich dodatkowa odpowiedzialność za reprezentowanie interesów i działań swojej grupy wobec kierownictwa wyższego szczebla, zajmowanie się różnymi szczegółami zarządzania projektami oraz weryfikowanie planów zespołu dotyczących przyszłych prac i dostarczania produktów. Największą odpowiedzialnością tech lead’a jest dbanie o to, aby projekty zespołu szły do przodu. Szef techniczny musi pogodzić czas poświęcony na pisanie kodu z czasem przeznaczonym na zaspokojenie najważniejszych potrzeb zespołu w zakresie zarządzania.

„Wielu wspaniałych inżynierów jest nieefektywnymi menedżerami, ponieważ nie znają lub nie chcą zajmować się polityką przywództwa w swoich firmach”.
Inżynier Tech Lead jest w idealnej sytuacji, aby nauczyć się, jak zostać kierownikiem projektu technicznego. Tech lead, który może podejmować samodzielne decyzje w imieniu swojego zespołu, chce, aby jego członkowie byli bardziej produktywni. Tech lead koordynuje działania z „produktem, analityką i innymi obszarami biznesu” i ustala, jakie nowe oprogramowanie będzie spełniać cele biznesowe firmy. Liderzy techniczni szukają również rozwiązań dla problemów, które utrudniają postępy ich grupy.

„Jeśli (…) podejmuje Pan wszystkie decyzje techniczne, nie pytając o zdanie swojego zespołu, będzie on miał do Pana pretensje i będzie Pana obwiniał, gdy coś pójdzie nie tak”.
Gdy kierownictwo wyższego szczebla musi wyznaczyć lidera technicznego, może wybrać inżyniera, który jest gotów poświęcić czas na zadania związane z zarządzaniem, czasami nawet w stosunku do bardziej doświadczonych inżynierów, którzy nie są tak bardzo zainteresowani pełnieniem funkcji kierowniczych.

Zarządzanie ludźmi i zespołami
Gratulacje! Właśnie został Pan najnowszym kierownikiem inżynierii w swojej firmie. Mimo że zajmuje Pan stanowisko podstawowe, na którym brakuje stażu pracy, jest Pan formalnie odpowiedzialny za zarządzanie inżynierami. Do podstawowych obowiązków kierowniczych należy przeprowadzanie rutynowych rozmów kwalifikacyjnych i udzielanie „informacji zwrotnych na temat rozwoju kariery, postępów w realizacji celów, obszarów wymagających poprawy i pochwał, jeśli są uzasadnione”. Będzie Pan pomagał pracownikom rozwijać się poprzez zadania typu „stretch”, szkolenia i mentoring, dodając nowe osoby do zespołu i wypełniając różne obowiązki kierownicze.

„Doświadczenie w praktyce daje Panu wiarygodność, pomaga w podejmowaniu decyzji i skutecznym kierowaniu zespołem”.
Gdy pracuje Pan z nowo zatrudnionymi osobami jako ich kierownik inżynierii, proszę opracować dla nich plany 30-, 60- i 90-dniowe. Ich typowe zadania będą obejmować zapoznanie się z kodem, poprawki błędów i nowe wydania. Poprosić nowo zatrudnionych o zredagowanie dokumentów wprowadzających, „aby odzwierciedlały procesy lub narzędzia, które zmieniły się od czasu ostatniego zatrudnienia” lub o poprawienie treści, które wydają się być niejasne. Nowi pracownicy mogą dać Państwu niezależne spojrzenie na Państwa firmę, zespół i oprogramowanie.

„Opracowanie podstawowych standardów w zespole pomaga wszystkim komunikować się (…) podczas przeglądów kodu i projektu, a także depersonalizuje proces przekazywania informacji zwrotnych dotyczących kwestii technicznych”.
Nowi menedżerowie muszą stać się skutecznymi delegatorami. Wyjaśnić członkom zespołu, jakie powinny być ich indywidualne cele i określić ich konkretne obowiązki. Zapewnić im niezbędne wsparcie i wskazówki. Następnie zejść im z drogi i pozwolić pracować.

Lider inżynierii
Szef inżynierii zarządza zespołem i dba o to, aby szczegóły techniczne, takie jak poprawki błędów, były brane pod uwagę. Ponadto jest na bieżąco z rozwojem kodu, aby wyeliminować wszelkie „wąskie gardła i problemy z procesami”. Dba o to, aby zespół był skoncentrowany i koordynuje z „kierownikiem produktu zarządzanie zakresem projektu”. Lider gwarantuje również, że produkty techniczne zostaną dostarczone na czas i zgodnie ze specyfikacją.

„W ostatecznym rozrachunku wartość planowania nie polega na tym, że wykona się go perfekcyjnie, że uchwyci się każdy szczegół, czy że przewidzi się przyszłość, lecz na tym, że wprowadzi się samodyscyplinę, aby przemyśleć projekt dogłębnie, zanim się w nim zanurzy i zobaczy, co się stanie”.
Szef inżynierii dba o to, aby zespół był funkcjonalny. Zespoły stają się dysfunkcyjne, gdy nie dotrzymują terminów. Jeżeli tak się stanie, szef inżynierów będzie musiał ponownie włączyć się w proces i napisać dodatkowy kod, aby zespół mógł pozostać na swoim miejscu. Jeżeli członkowie zespołu stają się niezadowoleni z powodu przepracowania, szef inżynierów może być zmuszony do tymczasowego „spowolnienia mapy drogowej produktu”, aby pomóc zespołowi odzyskać stabilność.

„Najlepsze relacje mentorskie rozwijają się w sposób naturalny i w kontekście większej pracy”.
Gdy członkowie zespołu są pod presją, mogą nie współpracować efektywnie. Szef inżynierii powinien promować działania, które dają członkom zespołu możliwość wspólnego spędzania czasu poza pracą.

Szefowie inżynierów muszą pomóc członkom zespołu zrozumieć i skoncentrować się na ich głównych celach. Zespół powinien przeznaczyć 20% swojego czasu na „ogólną, trwałą pracę inżynierską”, na przykład „testowanie, usuwanie usterek, czyszczenie starszego kodu, migrację wersji językowych lub platform” itd.

Dyrektor techniczny
Zarządzanie zespołem inżynierów może być wyzwaniem; zarządzanie wieloma zespołami jest jeszcze trudniejsze. Zazwyczaj jest to zadanie dla dyrektora technicznego. Ten profesjonalista jest odpowiedzialny za kompetencje i możliwości techniczne organizacji. Jego praca wykracza poza codzienny obowiązek pisania kodu. Dyrektor techniczny powinien badać najnowsze technologie i aktualne osiągnięcia w danej dziedzinie.

„Praktykowanie sztuki nauczania może pomóc nam nauczyć się, jak pielęgnować i coachować, jak formułować rzeczy tak, aby inni słuchali”.
Dyrektor jest również odpowiedzialny za utrzymanie „standardów i procesów rozwoju/infrastruktury w celu stworzenia technologii, która będzie dostarczać trwałą wartość dla firmy.” Jednak dyrektor ds. inżynierii powinien również wygospodarować co najmniej pół dnia w tygodniu, aby zrobić coś kreatywnego, na przykład „wziąć udział w projekcie open source”.

„Sekret zarządzania polega na tym, aby ludzie, którzy Pana nienawidzą, trzymali się z dala od tych, którzy nie podjęli jeszcze decyzji.” (menedżer Major League Baseball Casey Stengel, 1890-1975)
Dyrektor techniczny jest wzorem do naśladowania w zakresie „współpracy międzyfunkcyjnej” w organizacji. Aby zarządzać wieloma zespołami, dyrektor techniczny musi przede wszystkim zarządzać swoim własnym czasem. Zarządzanie wieloma zespołami sprowadza się do inteligentnego podejmowania decyzji i mądrego delegowania zadań. Oznacza to zwracanie uwagi na obiecujących inżynierów w zespole i pomaganie im w przyjmowaniu nowych ról przywódczych. Dyrektor techniczny zawsze dba o to, aby w każdym zespole „proces pisania, wydawania i wspierania kodu” przebiegał bez zakłóceń.

Zarządzanie menedżerami ds. inżynierii
Zarządzanie menedżerami ds. inżynierii oprogramowania jest podobne do zarządzania wieloma zespołami inżynierów oprogramowania. Państwa menedżerowie będą potrzebowali coachingu i mentoringu. Oceniać wydajność każdego menedżera na podstawie wyników jego zespołu. Proszę obarczać kierowników odpowiedzialnością za te wyniki.

„Spotkania z osobami, które podlegają osobom, które podlegają Panu. Wykorzystać te „spotkania na poziomie pomostowym”, aby wpłynąć na inżynierów z zespołów, którymi kierują podlegli Państwu kierownicy. W ramach spotkań na poziomie pomijania należy raz na kwartał spotkać się z każdą osobą w każdym zespole.

Kierownictwo wyższego szczebla
Starsi menedżerowie inżynierii są liderami. Najwyższe kierownictwo firmy będzie oczekiwać od starszych kierowników inżynierów podejmowania decyzji na podstawie ograniczonych informacji, zarządzania polityką biurową i planowania satysfakcjonującej przyszłości firmy. Proszę oczekiwać, że będą Państwo odgrywać znaczącą rolę w wyznaczaniu przyszłego kierunku technicznego firmy.

Jako starszy lider inżynierii będzie Pan częściowo odpowiedzialny za kształtowanie kultury przedsiębiorstwa. Autor książek biznesowych Frederic Laloux definiuje „kulturę” jako „sposób, w jaki rzeczy są wykonywane, bez konieczności zastanawiania się nad tym przez ludzi”. Kultura obejmuje zasady, którymi kieruje się Państwa organizacja. Mądrzy liderzy inżynierii nagradzają pracowników za ich pracę i za to, że są przykładami podstawowych wartości firmy. Podkreślają te wartości podczas rozmów z kandydatami do pracy.

Pozostańcie ciekawi
Przejście od „mentora do menedżera do starszego lidera” może być trudną drogą. Im lepiej Państwo rozumieją siebie, tym łatwiejsza będzie ta droga. Wymaga to autorefleksji. Pomocna może być medytacja. Zaakceptować, że nie zawsze będzie się miało rację. „Proszę być gotowym na to, że Państwa wyobrażenia okażą się błędne. Zachować poczucie ciekawości. Zadawać dużo pytań. W zarządzaniu inżynierskim, podobnie jak w życiu, nigdy nie popełni Pan błędu, jeżeli będzie Pan szukał „drugiej strony historii”.

O autorze

Camille Fournier, dyrektor zarządzający i szef działu inżynierii platform w Two Sigma, jest byłym dyrektorem technicznym Rent the Runway i byłym wiceprezesem ds. technologii w Goldman Sachs. Często występuje publicznie, prowadzi projekt open source Apache ZooKeeper, pisze kolumnę Ask the CTO dla O’Reilly Media i prowadzi blog Elided Branches dla inżynierów oprogramowania.

Rate this post