Czy produktywność programistów jest prawdziwym problemem dla zespołów inżynierskich?
Opublikowany: 2023-08-30Każdy zespół inżynierów jest wyjątkowy pod względem struktury, działania i realizacji projektu, a także sposobu pomiaru ogólnej efektywności i wydajności na koniec każdego cyklu pracy.
Ale zapytasz dowolnego lidera inżynierii: „Jaki jest problem numer jeden, który próbują rozwiązać?”. Najczęściej odpowiedź brzmi: „Maksymalizacja produktywności programistów dla mojego zespołu”.
Jest to jedno z powszechnych odczuć, które podzielają wszystkie zespoły inżynieryjne i liderzy pomimo dzielących je nieodłącznych różnic.
Czy to takie ważne? No tak!
Dzisiejsze organizacje całkowicie rozumieją, że brak szybkiego dostosowania się do dynamicznych wymagań rynku bezpośrednio wpływa na ich wyniki finansowe i wiąże się z ceną. Stoją przed pilnym zadaniem przyspieszenia innowacji, opracowywania nowych rozwiązań w zakresie oprogramowania w ograniczonych ramach czasowych i prowadzenia wielu projektów – a wszystko to w tym samym czasie.
Wszystko to przy tworzeniu niezawodnych i bezpiecznych produktów zapewniających najlepsze doświadczenia użytkownika.
W takich okolicznościach szybkość innowacji jest kluczową przewagą konkurencyjną. Aby tak się stało, zespoły muszą uwolnić swój pełny potencjał i robić to, co kochają najbardziej – tworzyć produkty w sposób autonomiczny i pracując zespołowo, bez blokad i ograniczeń. Krótko mówiąc, zapewnienie wyższej produktywności programistów dla zespołów tworzących oprogramowanie.
Wyzwanie polega na tym, że produktywność programistów sama w sobie jest pojęciem złożonym do zrozumienia.
Co to znaczy, że programista jest produktywny? Dlaczego to ma tak duże znaczenie? Czy jest to coś, co można zmierzyć? Jeśli tak, jak? W jaki sposób wydajność zespołu inżynierów jest skorelowana z produktywnością programistów?
W tym artykule odkryję złożoność związaną z produktywnością programistów.
Jaka jest produktywność programistów?
Różne osoby różnie postrzegają i definiują produktywność.
Niektórzy z nich opisują „więcej aktywności” jako produktywne. Wiele zespołów inżynierskich, z którymi rozmawiam, definiuje produktywność jako „wykonywanie większej ilości pracy w ciągu dnia, a następnie w ramach praktyki”. Aby można było uważać siebie lub swój zespół za produktywnych. I nie jest to postrzegane tylko jako jednorazowy wzrost wydajności ich pracy.
Menedżerowie i liderzy inżynierii opierają się na tej działalności lub wynikach pracy na wskaźniku gwiazdy północnej. Dla nich spełnienie tego podstawowego wskaźnika oznacza prawdziwą produktywność .
Czy to oznacza, że programiści, którzy pracują dłużej, są jedynymi czynnikami wpływającymi na produktywność? A może oznacza to, że więcej zatwierdzeń kodu wykonywanych w ciągu dnia lub w cyklu sprintu zwiększa produktywność programisty?
W takim przypadku każdy próbowałby odtworzyć harmonogram zatwierdzania kodu, aby wyglądał tak.
Źródło: Hays Stanford na X
Chciałbym, żeby to było takie proste i oczywiste.
Według badania przeprowadzonego przez GitHub w 2021 r. sami programiści bardziej korelują produktywność z dobrym dniem. Ich zdolność do skupienia się na zadaniu, osiągania znaczących postępów i dobrego samopoczucia w pracy pod koniec dnia wpływa na ich satysfakcję i produktywność.
Badania akademickie potwierdzają tę tezę, twierdząc, że zadowoleni programiści są bardziej produktywni i wydajni w pracy. Produktywność to coś więcej niż tylko nakłady i wyniki.
Dlatego też ramy SPACE autorstwa Nicole Forsgren i in. zbliża się do holistycznego spojrzenia na produktywność programistów dla zespołów inżynierskich.
Jakie są ramy SPACE?
Aby każdy mógł być produktywny, musi być zadowolony ze swojej pracy i kultury pracy oraz czuć się komfortowo i szczęśliwy w sposobie, w jaki angażuje się, komunikuje i współpracuje w ramach swoich zespołów i poza nimi.
Struktura SPACE definiuje zakres produktywności programistów, zamiast pozostawiać ją jako miernik lub po prostu aktywność zawodową. To znaczy:
- S – Satysfakcja i dobre samopoczucie
- P - Wydajność
- A – Aktywność
- C – Komunikacja i współpraca
- E - Wydajność i przepływ
Zadowolenie opowiada o tym, jak zadowoleni programiści czują się ze swojej pracy, narzędzi i zespołów, a dobre samopoczucie przekłada się na zdrowie i szczęście programistów oraz o tym, jak ich praca wpływa na nich.
Wydajność przypisuje się wynikowi procesu i wykonanej pracy. Wynik ten może być wynikiem indywidualnego lub zbiorowego wysiłku zespołowego.
Aktywność to namacalna liczba działań lub wyników zrealizowanych w trakcie okresu pracy. Może to obejmować zatwierdzenie kodu, ciągłe wysiłki związane z integracją/wdrożeniem lub jakąkolwiek inną czynność operacyjną.
Komunikacja i współpraca uchwyć sposób, w jaki ludzie i zespoły komunikują się i współpracują .
Wydajność i przepływ oznaczają możliwość ukończenia pracy lub osiągnięcia postępu przy minimalnych przerwach lub opóźnieniach, niezależnie od tego, czy jest to wykonywane indywidualnie, czy za pośrednictwem systemu .
Teraz, gdy lepiej rozumiemy strukturę SPACE i to, co stanowi produktywność programistów, przyjrzyjmy się bliżej, dlaczego jest ona tak ważna dla zespołów inżynierskich.
Dlaczego produktywność programistów ma znaczenie
Ponieważ produktywność programistów jest tak zawiłą koncepcją, można zadać pytanie, dlaczego zespoły inżynierów tak bardzo się tym przejmują.
Nowoczesne zespoły inżynieryjne nieustannie opracowują innowacyjne sposoby poprawiania wyników i zwiększania zysków. Obejmuje to optymalizację ogólnej wydajności tworzenia oprogramowania i maksymalizację produktywności ich programistów.
Może to zabrzmieć rekursywnie, ale jeśli programiści i zespoły inżynieryjne są usatysfakcjonowani dostawą, są zazwyczaj szczęśliwsi i bardziej produktywni i odwrotnie. Aby zagwarantować dobre samopoczucie programistów, niezwykle ważne jest tworzenie środowiska, w którym odnajdują spełnienie w swojej pracy, zwiększając w ten sposób ich poczucie produktywności.
Jeśli masz jakiekolwiek wątpliwości co do tego założenia, spójrzmy na statystyki poniżej.
Źródło: Przepełnienie stosu
Oczywiste jest, że produktywność programistów ma znaczenie dla poszczególnych współpracowników, dlatego ważne jest, aby zespoły inżynierów dostarczały więcej, dlatego ważne jest, aby kierownictwo inżynierów zwiększało produktywność.
Jeśli chcesz dostarczyć więcej i osiągnąć swoje cele, kluczowe znaczenie ma zwiększenie produktywności i do tego; musisz to zmierzyć.
W następnej sekcji przyjrzymy się typowym pułapkom, których należy unikać podczas pomiaru produktywności programistów, oraz niektórym najlepszym praktykom pozwalającym mierzyć ją całościowo.
Jak mierzyć produktywność programistów
Nie ma ustandaryzowanego sposobu pomiaru produktywności programistów. Żaden pojedynczy wskaźnik nie czyni jednego programisty bardziej produktywnym w zespole niż drugi.
Sposób, w jaki zespół inżynierów mierzy i poprawia produktywność programistów, zależy od wielu czynników, takich jak przepływ pracy programistów, ekosystem zespołu, struktura zespołu, metodologia wdrażania, środowisko programistyczne i proces dostarczania oprogramowania.
Jak wspomniałem wcześniej, każdy zespół inżynierów jest wyjątkowy, podobnie jak jego zakres definiowania produktywności i sposobów jej pomiaru.
Typowe pułapki, których należy unikać podczas pomiaru produktywności programistów
Zanim przejdziemy do sposobów pomiaru produktywności programistów, przyjrzyjmy się niektórym z najczęstszych pułapek, na jakie wpadają zespoły inżynierów podczas jej pomiaru.
Przepracowane godziny
Jeśli ty spójrz na ostatnią osobę opuszczającą biuro lub programistę online przez całą noc przed dniem dostawy, źle to rozumiesz. Może nie zawsze przedstawiać prawdziwy obraz.
Ta metryka waży jedynie ilość nad jakością, nie dodając żadnej wartości biznesowej. W rezultacie możesz promować opcję zawsze aktywną kulturę, która przynosi efekt przeciwny do zamierzonego.
Linie kodu (LOC)
Tysiąc LOC, które nie rozwiązują problemu, jest gorsze niż brak kodu. Pisanie większej ilości kodu lub wykonywanie większej liczby zatwierdzeń kodu nie zwiększa produktywności nikogo, zwłaszcza jeśli wymaga to większej liczby programistów do wyczyszczenia go i późniejszego poprawienia kodu. Unikaj tej pułapki!
Zadania zakończone
Programiści mogą angażować się w wiele rzeczy dziennie, wyglądać produktywnie, a mimo to nie wnosić żadnej wartości biznesowej, jeśli ich zadania nie popychają projektu we właściwym kierunku.
Jeśli zadaniem jest naprawienie większej liczby błędów, programiści mogą równie dobrze napisać błędny kod, aby naprawić go później i wyglądać mądrzej. Zatem zadania muszą być jasno zdefiniowane i mieć pożądany wynik biznesowy, jeśli będzie to miara produktywności.
Przydatne wskazówki dotyczące pomiaru produktywności programistów
Przyjrzyjmy się teraz niektórym przydatnym sposobom pomiaru produktywności.
Występ drużynowy
Tworzenie oprogramowania nie jest zadaniem jednej osoby; to wysiłek zespołowy. Określony członek zespołu może umożliwiać pracę wielu innym programistom w zespole, a konkretny programista może działać jako woźny kodu, który po cichu testuje, czyści i refaktoryzuje kod, aby działał za każdym razem.
Dlatego lepszym sposobem na przyjrzenie się temu jest zmierzenie zdolności zespołu do dostarczania przydatnego kodu w ciągu sprintów i miesięcy, aby nazwać go produktywnym.
Użyj frameworka SPACE
Aby uwzględnić wszystkie możliwe podstawy satysfakcji i spełnienia programistów, wspaniale jest wziąć pod uwagę wszystkie czynniki uwzględnione w ramach SPACE i uzyskać perspektywa holistyczna na poziomie produktywności zespołu.
Zidentyfikuj narzędzia zwiększające produktywność
Zespoły inżynierów korzystają z wielu narzędzi ze swojego stosu technologicznego w całym cyklu życia kodu, aby umożliwić im i zapewnić lepsze wyniki. Ważne staje się zidentyfikowanie odpowiedniego zestawu narzędzi do pomiaru ich wpływu na końcową produktywność programistów i zespołów programistycznych.
Mogą na przykład istnieć przydatne narzędzia do zatwierdzania kodu, tworzenia problemów i punktów historii, CI/CD, zarządzania incydentami lub komunikacji i współpracy.
Wykorzystaj kontekstowe punkty danych
Upewnij się, że w całym cyklu życia oprogramowania (SDLC) bierzesz pod uwagę właściwe wskaźniki, takie jak planowany i rzeczywisty wysiłek lub stan sprintu, czas cyklu, współczynnik niepowodzeń zmian (CFR), średni czas rozwiązania (MTTR) i inne wskaźniki .
Korzystaj z platformy zarządzania inżynierią, która udostępnia dane kontekstowe wraz z praktycznymi spostrzeżeniami, co pozwala podejmować świadome decyzje w celu szybszej dostawy i wyższej produktywności.
Podkreślaj satysfakcję programistów
Zbuduj bezpieczną kulturę pracy dla programistów, aby mogli tworzyć najlepszą pracę. Jak wiemy, szczęśliwy programista ma większe szanse na produktywność. Znalezienie sposobów na zmniejszenie obciążenia pracą i niepokoju oraz bardziej równomiernego podziału pracy między zasoby jest niezwykle istotne.
Teraz, gdy przyjrzeliśmy się, czym jest produktywność programistów, dlaczego jest ona istotna dla zespołów inżynierskich i wskazówkom dotyczącym pomiaru produktywności, przyjrzyjmy się niektórym najlepszym praktykom zwiększania produktywności programistów w Twoich zespołach inżynierskich.
Najlepsze praktyki zwiększające produktywność programistów
Jedną rzeczą, którą zespoły inżynierów mogą zrobić, aby zapewnić najwyższą produktywność programistów, jest przestrzeganie kilku prostych zasad za każdym razem, gdy rozpoczynany jest nowy projekt. Zawierają:
- Wyznaczanie celów biznesowych: wyznacz cele biznesowe zespołom inżynierskim, aby dopasować ich wysiłki.
- Harmonogramy projektów: ustal realistyczne oczekiwania wobec zespołów inżynieryjnych i kierownictwa, aby mogły realizować udane projekty.
- Alokacja i dystrybucja zasobów: Mapuj wysiłki inżynieryjne według krytyczności i priorytetu projektu oraz odpowiednio przydzielaj zasoby.
- Wydajne procesy: utwórz działającą konfigurację z udoskonalonymi procesami i wzorcami branżowymi, aby usprawnić pracę w całym cyklu tworzenia oprogramowania i zapewnić zespołowi odpowiednie narzędzia.
- Automatyzacja przepływu pracy dla programistów: zautomatyzuj większość tego, co możesz, aby przyspieszyć i zmniejszyć potrzebę poświęcania przez programistów czasu i wysiłku na zbędne prace.
- Nieprzerwany czas na kodowanie: programiści uwielbiają kodować i dzięki temu mogą zyskać więcej nieprzerwanego czasu na pracę nad tym, co lubią robić najbardziej – kodem.
- Zyskaj widoczność: umożliwij i umożliwij zespołom inżynieryjnym uzyskanie wglądu we wszystkie powyższe kwestie 24 godziny na dobę, 7 dni w tygodniu, za pomocą niezawodnej platformy zarządzania inżynieryjnego.
- Rozmowy oparte na danych: twórz kulturę, w której zespoły inżynierów angażują się w rozmowy oparte na danych, równoważąc je subiektywnymi informacjami, jeśli zajdzie taka potrzeba.
- Pętla informacji zwrotnej: Upewnij się, że przydatne spostrzeżenia zostaną wykorzystane z należytą starannością w kolejnych cyklach sprintu, co doprowadzi do lepszych wyników.
- Głębokie godziny pracy: dzięki 120-minutowym nieprzerwanym przedziałom czasowym dla twórców programiści mogą ograniczyć przełączanie kontekstu, kontrolować swój harmonogram i znajdować stan przepływu.
Dzięki tym krokom zespoły inżynierów mają jasność co do tego, na co się rejestrują, i umożliwiają im podejmowanie decyzji w oparciu o dane, aby zapewnić najlepsze wyniki.
Dążenie do zoptymalizowanej produktywności
Zespoły inżynieryjne, które chcą odnieść sukces i dążyć do doskonałości inżynieryjnej, nie mogą przeoczyć korzyści, jakie niesie ze sobą wyższa produktywność programistów.
W szybko zmieniającym się środowisku biznesowym łatwo jest wpaść w pułapkę niższej produktywności lub niespełniających norm sposobów utrzymania dynamiki.
W obliczu zmieniającego się scenariusza rynkowego i wymagań biznesowych zespoły inżynierów znajdują się pod dużą presją, aby natychmiast zmienić bieg, dostosować wysiłki inżynieryjne i zacząć od nowa. Powoduje to, że zespoły wchodzą w tryb częstego przełączania kontekstu, nieefektywne przepływy pracy programistów i wysiłki niezgodne z celami biznesowymi.
W efekcie tworzony kod jest niskiej jakości, a jego sprawdzanie staje się bolesne. Wszystko to razem stanowi doskonały przepis na katastrofę i wpływ na produktywność.
Wszystko to można jednak złagodzić, jeśli pozostaniemy wierni podstawom tego, czego potrzebuje programista, aby był produktywny.
Dążenie do zoptymalizowanej produktywności to nie tylko problem, ale szansa dla całego ekosystemu. Dziś stoimy na skrzyżowaniu innowacji i wydajności, gdzie optymalizacja naszych przepływów pracy, działania zespołu inżynierów i maksymalizacja naszej wydajności nie jest już luksusem, ale koniecznością. Na szczęście maksymalizacja produktywności programistów jest jednym z kluczowych rozwiązań stale rosnącego wyzwania.
Dzięki mocy spostrzeżeń opartych na danych możemy zapewnić naszym programistom odpowiednie zasoby i promować ducha współpracy, który zwiększa wydajność.
Produktywność programistów, choć jest złożoną zagadką, jest w pełni przygotowana do rozwiązania. Robiąc to, nie tylko rozwiązujemy problem; kształtujemy przyszłość, w której nasze zespoły inżynieryjne prosperują, uwalniają swój potencjał oraz napędzają innowacje i doskonałość.
Generowanie kodu AI to nowe modne hasło w mieście. Dowiedz się, co to jest i jakie korzyści przyniesie zespołom programistów.