Jak naprawić zatrudnianie w IT?
Jeżeli jesteś jedną z osób która uważa że procesy zatrudniania do IT w ich firmie lub branży są "wystarczająco dobre", to ten artykuł jest jak najbardziej dla Ciebie.
Lewis Carroll pisał w "Alicji w Krainie Czarów": "jeśli nie wiesz, dokąd zmierzasz, każda droga może cię tam zaprowadzić". Ja chciałbym dodać do tego, że jeśli nie wiesz, dokąd zmierzasz, to pójdziesz drogą, którą wszyscy już przeszli.
Istnieją wspólne wzorce zatrudniania dla firm w dzisiejszych czasach. Niektóre z tych wzorców mogą nie przynieść oczekiwanych rezultatów. W tym poście będę mówić o najczęstszych problemach i ich rozwiązaniach, oraz o reklamowaniu stanowiska i procesach zatrudniania w IT.
Jeśli nie wiesz dokąd zmierzasz, każda droga może Cię tam zaprowadzić… czyli w to samo miejsce, gdzie wszyscy inni już byli.
Cargo Cult Programming to rodzaj programowania, podczas którego dodajesz do projektu kod, którego tak naprawdę nie rozumiesz. Łatwym sposobem identyfikacji Cargo Cult Programming jest, gdy ktoś ma nadmierną obsesję na punkcie frameworków. Frameworki dyktują sposób projektowania oprogramowania wewnątrz predefiniowanej ramki. Jednak rzadko zdarza się, aby projekt zawsze pasował do dowolnej ramki. W większości przypadków projekt oprogramowania wymaga innej architektury i konstrukcji, aby ewoluować w naturalny sposób.
Unikaj zatrudniania osób z dużym doświadczeniem w dziedzinie frameworków i niewielkim doświadczeniem w projektowaniu oprogramowania. W przeciwnym wypadku każdy projekt w twojej firmie będzie oparty na tych frameworkach, nawet jeśli nie są one najlepszym wyborem.
Jeśli twoim zamiarem jest obniżenie długoterminowych kosztów w procesach rozwoju oprogramowania i osiągnięcie wspaniałego rezultatu, to, zamiast pisać w ofertach, że poszukujesz ludzi ze znajomością konkretnych frameworków lub technologii, jak "Angular", ".NET", "React", "Redux" lub "front-end", reklamuj stanowisko tak, aby szukać fundamentalnych umiejętności, takich jak "domain oriented thinking", "projektowanie oprogramowania" lub "programowanie funkcjonalne".
Deweloperzy z fundamentalnymi umiejętnościami będą Cię więcej kosztować i potrzebują więcej czasu na zapoznanie się ze stosem technologicznym w twojej firmie. Kilka lat temu, Gitlab wpadł na dylemat, gdzie rozważali zatrudnianie programistów non-Ruby, tylko po to, by wycofać się i zatrudnić jednak kandydatów z umiejętnościami opartymi na technologii, by "zachować ostrożność".
Jednakże, jeden deweloper z fundamentalnymi umiejętnościami stworzył bardziej zrównoważoną wartość w czasie niż wielu deweloperów korzystających z frameworków lub konkretnych technologii.
Zatrudnianie programistów z fundamentalnymi umiejętnościami jest trudne. To skomplikowany ruch. Podążanie drogą, którą nikt inny jeszcze nie podążał, wymaga odwagi.
Zatrudniaj osoby z fundamentalnymi umiejętnościami, a nie z umiejętnościami w frameworkach lub konkretnych technologiach.
Była sobie taka firma, która zatrudniała 34 pracowników. Ta sama firma miała również 34 stanowiska, co oznacza, że każda osoba w organizacji miała inny tytuł. Tytuły wahały się od "Express Developer" i "JavaScript Ninja" do "DevOps Engineer" i "API Influencer".
Zamiast tworzyć szalone nazwy ról i spędzać wiele godzin na bikesheddingu i wymyślaniu coraz to ciekawszych stanowsik, preferuj nazywanie każdego nowego członka firmy "deweloperem". Przecież każdy jest odpowiedzialny za pomoc w tworzeniu oprogramowania, bez względu na zajmowane wcześniej stanowisko czy umiejętności.
Kiedy reklamujesz stanowisko, może trzeba będzie określić nazwę tego stanowiska, inaczej, prawidłowi kandydaci mogą nigdy nie znaleźć go w chaosie rynkowym. Jednak warto określić w opisie stanowiska obecne potrzeby twojej firmy, a nie umiejętności techniczne, które uważasz, że firma potrzebuje. Na przykład, kandydat z "biegłością w zespołach trenerskich" lub kandydat z "doświadczeniem w projektowaniu systemów w dziedzinie finansów" zamiast "Front-End developer" lub "Java Developer".
Wyjątkiem w "opisywaniu konkretnych technologii" jest sytuacja, w której firma potrzebuje pilnie kogoś do pracy z legacy system. Czasami jedyna osoba, która potrafiła utrzymać taki system, już opuściła firmę i nie ma wtedy innego rozwiązania.
Reklamuj stanowisko z pomocą charakterystyki technicznej, której szukasz, a nie umiejętności technicznych.
Kluczowe znaczenie ma unikanie reklamowania umiejętności technicznych, które uważasz, że firma potrzebuje. Kandydat może nie znać danej technologii, ale jest w stanie znaleźć lepsze rozwiązania na istniejące w firmie problemy, albo jest w stanie dostrzec problemy, których nikt inny nie widzi.
Dobrym przykładem jest sytuacja, gdy firma wymyśli plan zbudowania mobilnej wersji swojego produktu webowego. Strona internetowa to ciężki front-end oparty na języku JavaScript z logiką biznesową napisaną w React i Redux. W takiej sytuacji powszechnym pomysłem jest reklamować stanowisko dla programistów iOS/Android. To ma sens.
Jeśli chcesz zbudować aplikację na system iOS lub Android o pewnym stopniu zaawansowania, lub złożoności, chcesz zatrudnić kogoś, kto robił to wcześniej. Jednakże już teraz zakładasz, że potrzebujesz kogoś do napisania kodu na iOS lub Androida; a co jeśli to nie jest konieczne?
Zamiast reklamować stanowisko dla deweloperów iOS/Android, możesz napisać, że potrzebujesz "programisty, który zbudowujr mobilną wersję istniejącego produktu internetowego". W ten sposób możesz zbawić programistów, którzy rozumieją podstawy Jasonette, dla przykładu, i nie będą musieli napisać ani jednej linii w Java lub Objective C, aby ponownie wykorzystać front-end logiki biznesowej w aplikacji mobilnej. Może się to okazać o wiele bardziej opłacalne niż budowanie wszystkiego od zera.
Prawdopodobnie nie wiesz wszystkiego na temat projektowania protokołów HTTP, Evolvable API, Jasonette, programowania funkcjonalnego, pozyskiwania zdarzeń lub projektowania opartego na zdarzeniach; więc przestań udawać, że wiesz dokładnie jakie konkretne umiejętności są potrzebne w projekcie.
W projekcie warto stawiać na różnorodność: ludzi, którzy nie są tacy jak ty. Jeśli ludzie mają inny zestaw umiejętności, różne sposoby myślenia i różne doświadczenia, znacznie zwiększa to prawdopodobieństwo lepszego rezultatu.
Jeśli szukasz tylko technologii, które znasz, zdusisz szansę na różnorodność i skończysz z programistami, którzy są tacy jak ty, a nie lepsi.
Zatrudnianie w IT jest trudne i kosztowne.
Większość programistów optymalizuje swoje umiejętności w zakresie technologii i frameworków. Zatrudnianie pracowników o fundamentalnych umiejętnościach to najlepszy sposób na przełamanie cyklu i wprowadzenie innowacji, pod warunkiem, że jesteś gotów zapłacić znaczne koszty początkowe.
Jeśli zatrudniasz tylko ludzi posiadających te same umiejętności, co ty, skończysz z pracownikami, którzy nie są w stanie dodać Ci lub firmie żadnych znaczących korzyści. Odrzuć egocentryczną myśl, że wiesz dokładnie, jakiej praktyki lub technologie potrzebuje twoja firma. Istnieje ktoś, kto zna takie rozwiązania dla problemów, o których byś nie pomyślał, i ta osoba jest kimś zupełnie innym niż ty.
Jeśli nie znasz drogi, którą podążasz i potrzebujesz pomocy, upewnij się, że prawidłowo to komunikujesz innym. Reklamuj problem, nie technologię. W przeciwnym razie wybierzesz drogę, która zaprowadzi cię tam, gdzie wszyscy już byli.
Podążanie tą drogą jest równoznaczne ze staniem w miejscu.