Wskazówki, jak przyciągać, zarządzać i zatrzymywać programistów

Opublikowany: 2022-03-11

Zarządzanie to ludzie. Zarówno menedżerowie, jak i pracownicy myślą o tym, jak osiągnąć swoje cele osobiste i zawodowe. Połączenie tych celów i osobistych cech zaangażowanych osób nadaje kształt relacjom, które z czasem mogą być pozytywne, produktywne i satysfakcjonujące, a czasem po prostu stresujące, wymagające i podatne na konflikty.

Oczywiście w tym drugim przypadku spada jakość produktów, wzrasta rotacja personelu, a osiąganie celów staje się coraz trudniejsze. Dlatego znalezienie sposobu na ustanowienie satysfakcjonujących i motywujących relacji między menedżerami a pracownikami ma kluczowe znaczenie, jeśli chodzi o wydajność, produktywność i samorealizację dla obu z nich.

Pozytywne relacje to najlepszy sposób na zatrzymanie talentów programistycznych.

Dotyczy to zwłaszcza zarządzania programistami, ze względu na złożoność techniczną i kreatywny charakter ich pracy, skompresowane w często wąskich ramach czasowych w celu uzyskania wyników. Jak w każdej relacji szef-pracownik, w grę wchodzi wiele czynników, takich jak:

  • Osobowości
  • Cele
  • Oczekiwania
  • Zasady
  • Kultura organizacyjna
  • Szczegóły techniczne projektu

W tym artykule skupimy się na głównych aspektach zarządzania, a nie na technicznych, które naszym zdaniem powinny być brane pod uwagę przez każdego, kto chce odnieść sukces w zarządzaniu utrzymaniem programistów.

Ale w tym przypadku „sukces” oznacza nie tylko osiąganie wyników i przestrzeganie polityki firmy, terminów i budżetów, ale także posiadanie zmotywowanego i produktywnego zespołu programistycznego, który daje z siebie wszystko i pozostaje w firmie przez długi czas.

To prowadzi nas do naszego podstawowego tematu: Co sprawia, że ​​programiści działają? Mając to na uwadze, przedstawimy kilka sposobów na zatrzymanie pracowników, których zidentyfikowaliśmy w skutecznych zespołach programistycznych.

Przyciąganie właściwych ludzi

W tworzeniu oprogramowania talent, który zatrudnisz, będzie decydował o sukcesie lub porażce, a wprowadzanie ciągłych zmian w zespole jest zawsze kosztowne pod względem czasu i pieniędzy. Dlatego dobry proces selekcji ma kluczowe znaczenie dla powodzenia Twojego projektu.

Oferta pracy

Rekruterzy technologiczni wiedzą, że jeśli chodzi o zatrudnianie programistów, wszystko zaczyna się od starannie wyważonego ogłoszenia o pracę. Post musi być motywujący, aby odpowiedni programiści mogli na niego odpowiedzieć — zbyt wiele lub zbyt wyspecjalizowane wymagania mogą być zniechęcające, ale jeśli będziesz zbyt niejasny, Twoja firma może spodziewać się zalewu bezużytecznych CV.

Podanie szczegółowych wynagrodzeń i pakietów świadczeń jest również mieczem obosiecznym, ponieważ konkurencja może wykorzystać te informacje, aby wykorzystać swoje plany wynagrodzeń, a programiści mogą spróbować wykorzystać je jako punkt odniesienia do negocjacji podczas zatrudniania. Oczywiście, ponieważ w procesie rekrutacji zawsze musi być miejsce na negocjacje, sugerujemy, aby ogłoszenie o pracę było mniej szczegółowe, jeśli chodzi o wynagrodzenie, stosując raczej przedziały niż stałe wartości.

W przeciwieństwie do tego, ogłoszenie o pracę powinno być tak jasne, jak to możliwe, w obowiązkach i wymaganiach związanych z pracą, zarówno obowiązkowych, jak i miłych dla oka. Rozpoczęcie od solidnego dopasowania to najlepszy kontekst dla pozostałych naszych strategii retencji pracowników.

Wywiad

Na tym etapie procesu dobrze jest zasięgnąć porady na temat oceny kandydatów i zobaczyć, jakich pułapek można uniknąć podczas rozmowy kwalifikacyjnej. Dodalibyśmy również do powyższych wskazówek w zasobach, że wcześniejsze poproszenie kandydatów o referencje z ich poprzednich stanowisk jest często dobrym uzupełnieniem innych sposobów potwierdzania ich umiejętności.

Oferta pracy

Zatrudnienie kończy się ofertą pracy dla kandydata, kiedy firma przedstawia formalny dokument, który podsumowuje charakterystykę stanowiska (nazwisko, ranga, obszar, itp.), pakiet wynagrodzeń (wynagrodzenie i świadczenia takie jak zdrowie, emerytura lub wykształcenie itp.) , datę rozpoczęcia, harmonogram, miejsce pracy oraz wymagania do zawarcia umowy o pracę, jeśli kandydat przyjmie ofertę.

Chociaż na tym etapie wszystko jest mniej więcej zakończone, kandydat może chcieć wynegocjować pewne warunki, a od firmy zależy ich zaakceptowanie lub wynegocjowanie. To zależy od praktyk firmy.

Jednak z pewnością firma nie będzie chciała stracić dobrego kandydata z powodu zasad, więc rozsądne kompromisy nikomu nie zaszkodzą. W takim przypadku warto poprosić kandydata o coś w zamian za każde dokonane ustępstwo, np. wcześniejszą datę rozpoczęcia, minimalny czas trwania w firmie, czy jakiekolwiek specjalne wymagania, jakie może mieć firma.

Zarządzanie zespołami programistycznymi w celu osiągnięcia sukcesu

Gdy programista zaczyna pracować w firmie, jego menedżer zaczyna zdawać sobie sprawę, kim jest, jak pracuje, a co najważniejsze, jakie wyniki generuje. Zatrzymanie inżynierów oprogramowania staje się wówczas wyraźnym priorytetem.

W tym miejscu pojawia się wgląd w osobowości inżynierów oprogramowania: oni — zwłaszcza ci, którzy osiągają wysokie wyniki — często wykazują pewne wspólne cechy. W dalszej części będziemy wskazywać te wzorce, ale pamiętaj, że mogą nie mieć jednakowego zastosowania do każdej osoby. Zarządzanie projektami programistycznymi dotyczy zarówno wzorców, jak i wyjątków.

Szkolenie

Ponieważ tworzenie oprogramowania jest pracą techniczną, wymaga bardzo dokładnej znajomości struktury firmy, celów, procedur, polityk (w tym wyznań i praktyk biznesowych) oraz standardów (technicznych i nietechnicznych). Dlatego im lepiej programista rozumie firmę, tym lepszy produkt wyprodukuje i tym mniej czasu zajmie mu jego wykonanie.

To podstawowe szkolenie może być prowadzone za pomocą dokumentów, kursów online w intranecie lub prezentacji. Ale jest to konieczne, ponieważ da nowemu pracownikowi jasność.

Jeśli mają być wprowadzane nowe technologie, zapewnij niezbędne szkolenie. Twórcy oprogramowania lubią wyzwania, ale mogą mieć żal, że zostaną wrzuceni w nową technologię bez uprzedniego jej prawidłowego poznania.

Internet jest pełen cennych materiałów edukacyjnych i często jest to pierwszy zasób, do którego twórcy oprogramowania zwracają się, gdy muszą poznać lub ponownie nauczyć się szczegółów technicznych. Jeśli chcesz zatrzymać programistów, konieczne jest promowanie kultury samokształcenia i, jeśli to konieczne, danie na to czasu pracy. W ten sposób zespół będzie na bieżąco z najnowszymi technologiami i metodami, co często bardzo cenią twórcy oprogramowania.

Zasoby

Niektórzy uważają, że twórcy oprogramowania poszukują najwyższej technologii do wykonywania swojej pracy, z najlepszymi możliwymi specyfikacjami dostępnymi w branży. Uważamy natomiast, że zależy to od wykonywanej pracy. Na przykład, jeśli firma tworzy gry pierwszoosobowe, konieczne będzie zapewnienie deweloperom najnowocześniejszej mocy obliczeniowej. Ale jeśli zadaniem jest tworzenie usług internetowych zaplecza dla systemu transakcyjnego, może wystarczyć słabszy komputer.

To, co jest naprawdę ważne, to zapewnienie programiście wszystkich niezbędnych narzędzi do wykonywania swojej pracy i otwartość na sugestie dotyczące nowych narzędzi. Logicznie rzecz biorąc, każde nowe narzędzie, które zasugeruje programista, będzie musiało zostać zatwierdzone (może nawet wcześniej) i licencjonowane przez firmę. Jest to jednak warte kosztów: posiadanie odpowiednich zasobów jest kluczowym czynnikiem motywacji programistów i wyników. (Nie możesz oczekiwać, że zatrzymasz inżynierów oprogramowania, jeśli skonfigurujesz ich na niepowodzenie!)

Organizacja

Twórcy oprogramowania lubią pracować w miejscach, które zachęcają i szanują ich twórcze wysiłki, ponieważ ich praca polega na tworzeniu czegoś z niczego, mimo że kieruje się projektem, standardami i zasadami IT. Dlatego deweloperzy muszą mieć wystarczającą pewność, że należą do jednostki, w której cała biurokracja i ograniczenia są minimalne, o ile przestrzegają polityki firmy i jej wyznań.

Nie oznacza to, że twórcy oprogramowania powinni mieć specjalne przywileje w porównaniu z resztą firmy, ale raczej, że ich menedżer pomaga im przezwyciężyć lub rozwiązać biurokrację w razie potrzeby. Bardzo ważnym aspektem w utrzymaniu programistów jest to, że ich szef jest otwarty na ich osobiste wymagania i pomaga im w razie potrzeby.

Istotną rolę odgrywa tutaj również wewnętrzny układ jednostek rozwojowych. Często istnieje grupa testerów, a obowiązkiem kierownika ds. inżynierii oprogramowania jest utrzymanie płynności pracy zespołowej między programistami a testerami. Można to osiągnąć po prostu dzięki jasnej metodologii i procesom. Deweloperzy bardzo dobrze współpracują z testerami, jeśli istnieją zasady, których muszą przestrzegać obie strony, utrzymując niski poziom konfliktów lub ich brak.

Komunikacja (Spotkania okresowe)

Jeśli chcesz zatrzymać programistów, ważne jest, aby byli na bieżąco. Wszyscy członkowie zespołu powinni być okresowo informowani o celach, sytuacjach korporacyjnych, które ich dotyczą, strategiach, zmianach w organizacji i wreszcie o osiągnięciach zespołu.

Nawet posiadanie kilku członków zespołu, którzy dzielą się niektórymi informacjami, będzie dobre dla wspierania spójności zespołu i pracy zespołowej. Zwykle te spotkania zespołu – najwyżej dwie godziny – powinny być zaplanowane regularnie (być może co tydzień), a także przy specjalnych okazjach, takich jak końcowy etap projektu, sytuacja krytyczna itp.

Oprócz komunikacji z zespołem, menedżer musi ustalić sposób, aby być na bieżąco z sytuacją każdego członka, czy to związaną z pracą, techniczną, czy osobistą.

  • Związany z pracą oznacza wszystkie możliwe aspekty relacji pracownika z firmą.
  • Sytuacje techniczne pojawiają się, gdy programista utknął z problemem iz jakiegoś powodu nie szuka pomocy.
  • Jeśli programista je udostępni, sytuacje osobiste , których doświadczają, mogą wpłynąć na ich pracę i relacje ze współpracownikami.

Zwykle 30-minutowe cotygodniowe spotkanie z każdym członkiem zespołu pozwoli menedżerowi zidentyfikować te sytuacje i udzielić pomocy, zapobiegając w ten sposób potencjalnym kryzysom kadrowym i wzmacniając morale członka zespołu w firmie.

Żeby było jasne, nie mówimy o tworzeniu jednostki rozwojowej zorientowanej na spotkania, dlatego konieczna jest ścisła dyscyplina spotkań (punktualność, szacunek, uczestnictwo, czas trwania). Co więcej, ta dyscyplina pokazuje programistom, że pracują dla bardzo profesjonalnej organizacji, co zwykle doceniają.

Przypisywanie celów i kontynuacja

Przypisywanie rocznych celów ogólnych lub podobnych wytycznych dotyczących oceny nie ma sensu.

Jest to jasny czynnik w kontaktach z twórcami oprogramowania: bez względu na ich rolę (zbieranie wymagań, architektura, projektowanie, programowanie, testowanie itp.), cele należy im podawać z największą możliwą jasnością, więc nie ma sensu przy wyznaczaniu rocznych celów ogólnych lub podobnych wytycznych dotyczących oceny. Ponieważ programiści mają pracować w projektach, tj. z określonym zakresem i harmonogramem, najlepszym sposobem przypisania celów jest rozpoczęcie projektu i uwzględnienie, w jaki sposób postępy będą oceniane i, jeśli ma to zastosowanie, w jaki sposób będą rozpoznawane.

Na szczęście w dzisiejszych czasach istnieją metodologie, których celem jest jak najszybsze generowanie wyników, takie jak Agile i Scrum, które upraszczają follow-up i kontrolę projektu. Czasami może to nawet odegrać znaczącą rolę w utrzymaniu talentów programistycznych: wielu programistów uwielbia te metodologie, ponieważ mogą one szybko dostarczać wyniki, dając im poczucie regularnego osiągania wyników.

Co więcej, programiści często preferują lżejsze metodologie. Wiedzą, że rozwiązania high-end, takie jak Rational — gdzie produkt końcowy jest dostarczany po długim projekcie inżynierii wymagań, projektowania, rozwoju, testowania i implementacji — są ryzykowne i mogą być bolesne do naśladowania.

Zarządzanie konfliktem

Dotyczy to zespołów programistycznych tak samo, jak każdego innego rodzaju: menedżer inżynierii oprogramowania musi szybko i skutecznie radzić sobie z konfliktem lub może wymknąć się spod kontroli i zniszczyć morale, pracę zespołową i skuteczność całej jednostki.

Zakładając, że skonfliktowani programiści są profesjonalni i mają dobre intencje, spotkanie menedżera z zaangażowanymi osobami w celu zainicjowania jasnego dialogu, a następnie szybkiego rozwiązania powinno wystarczyć, aby zespół mógł przejść dalej. Czasami konieczne jest również wyraźne ostrzeżenie, że konflikt na poziomie osobistym, jeśli kiedykolwiek do tego dojdzie, nie zostanie zaakceptowany.

W każdym razie pod koniec tego pojednania bardzo ważne jest, aby obie strony czuły, że rozwiązanie jest sprawiedliwe, nawet jeśli jednej z nich się nie podoba. Konflikt jest czasem częścią życia, ale zachowanie talentu programistycznego oznacza traktowanie wszystkich z godnością, gdy pojawiają się takie sytuacje.

Motywacja

Chociaż poruszyliśmy wiele czynników, które wpływają na motywację programisty, jest jeszcze jeden kluczowy aspekt. Ten nie jest emocjonalny ani techniczny. Mówimy o stawce wynagrodzenia za ich pracę.

Pomimo tendencji do idealizmu w naturze, twórcy oprogramowania często lubią dobre rzeczy materialnego świata. Zawsze lepiej dla firmy, aby upewnić się, że wynagrodzenia i plany wynagrodzeń są dostosowane do rynku pracy – studia branżowe są łatwe do znalezienia – a może nawet nieco wyższe dla ich stanowisk.

Ponadto większość programistów nie jest obojętna na korzyści i nagrody, w tym kursy i wydarzenia technologiczne, podczas których mogą nauczyć się przydatnych technik wzbogacających swoją pracę.

Jeśli chodzi o zatrzymanie programistów, ważne jest wspieranie ich rozwoju w firmie, niezależnie od jej konkretnego kierunku. Kiedy inżynierowie oprogramowania nie wykazują dużej chęci do zajmowania stanowisk kierowniczych lub kierowniczych, doceniają postęp na arenie technicznej. Obejmuje to wyższe certyfikaty i formalne programy akademickie, takie jak stopnie magisterskie, a nawet doktoraty. Wiedza jest dla nich bardzo silną siłą napędową.

Jednak gdy aspirują do awansu na stanowiska kierownicze, warto przeprowadzić dogłębną analizę osobowości i historii kandydata w firmie. Może się to odbywać z pomocą działu zasobów ludzkich lub innych jednostek firmy, ponieważ dobre zarządzanie wymaga zupełnie innego zestawu umiejętności niż biegłość techniczna.

Jak zachować talent oprogramowania: uwagi końcowe

Możesz mieć najlepsze intencje i postępować zgodnie ze wszystkimi powyższymi wskazówkami, ale nadal nie udaje Ci się zatrzymać programistów w 100 procentach przypadków — czasami czynniki zewnętrzne mają po prostu większy wpływ. Uważamy jednak, że rotacja personelu może być zdrowa i pełna możliwości, o ile:

  1. To nie jest częste. Jeśli tak, byłby to objaw czegoś złego na poziomie organizacyjnym.
  2. Występuje tylko z najcenniejszymi zasobami. W tym przypadku może to oznaczać, że wykorzystują Twoją firmę jako trampolinę, tj. są z Tobą po prostu po to, aby zdobyć doświadczenie przed przejściem do innych firm.

Strategie utrzymania pracowników powinny być zapisane w polityce firmy, a nie tylko reakcją, gdy wartościowa osoba chce zrezygnować. Reakcyjne zatrzymanie jest bardzo kosztowne i wadliwe: osoba może zgodzić się na pozostanie, ale pomyśl sobie: „Pracuję tutaj przez X lat tylko po to, aby otrzymać podwójną pensję przy odejściu — właśnie przyznała, że ​​mi nie płaciła dość!"

Jaki będzie następny krok tej osoby? Mogą szukać innej pracy, ale teraz z podwójną pensją jako minimum. W tym momencie próba zatrzymania inżynierów oprogramowania za wszelką cenę prawdopodobnie nie jest tego warta. O ile osoba nie jest absolutnie fundamentalna (i niezastąpiona) dla firmy, lepiej wynegocjować okres wypowiedzenia i natychmiast znaleźć zastępcę.

To niedeterministyczne zadanie

Przyciąganie i zatrzymywanie programistów to złożone i niedeterministyczne zadanie, jak w przypadku każdej roli w branży technologicznej. Istnieje wiele firm poszukujących wartościowych programistów, ale na szczęście celem nie jest wygranie z tymi firmami, ale raczej przyciągnięcie dobrych ludzi, których uda nam się zatrzymać w naszej firmie.

Procesy selekcji mogą zająć dużo czasu i wysiłku. Jeśli podejdziesz do tego w pośpiechu, są szanse, że skończysz z niewłaściwymi ludźmi – a kto chce zatrzymać inżynierów oprogramowania, którzy są toksyczni dla swojego zespołu? Zamiast tego poświęć trochę czasu, aby zrobić to dobrze.