Podręczny słowniczek dla rekrutera IT
Ada to nie tylko żeńskie imię, a Scala, choć kojarzy się z mapą, odnosi się do czegoś zupełnie innego. Już same nazwy i określenia związane z technologiami i językami programowania sprawiają, że można poczuć mętlik w głowie. A gdy dodatkowo posłucha się rozmów specjalistów ds. IT o retrospektywach, robieniu deploy, naprawianiu bugów, planowaniu sprint capacity i o tym, że zbliża się release … to ma się wrażenie, że chodzi o jakiś zupełnie inny wymiar rzeczywistości. Świat IT – dla laika – wydaje się światem magii. Jak go lepiej poznać? Prezentujemy mini słowniczek użytecznych pojęć i zwrotów.
- Dzisiaj wiele zagadnień jest dla mnie oczywistych i zrozumiałych, ale pamiętam moje początki zawodowe, gdy zaczynałam specjalizować się w rekrutacji IT – mówi Ewelina Sumiec, Senior IT Recruiter w firmie People. Niektóre słowa brzmiały dla mnie jak czarna magia. Pamiętam spotkanie z kandydatem, który często posługiwał się określeniem „testy jednostkowe”. Nie wiedziałam co to jest, domyślałam się tylko, że jeśli deweloper pisze kod, to tester to sprawdza, weryfikuje, ale dlaczego „testy jednostkowe” i jeśli nie jednostkowe, to jakie jeszcze są? Albo gdy programiści mówili o „debagowaniu” – drogą dedukcji, tłumacząc z języka angielskiego – domyśliłam się w czym rzecz, że ma to związek z usuwaniem błędów. Dziś też wiem, czym są frameworki, a kiedyś myślałam, że jak programista pisze w Javie lub PHP to tyle mu wystarczy, po co mu jakieś frameworki. Musiałam też dowiedzieć się i sprawdzić we własnym zakresie, czym różnią się relacyjne bazy danych od nierelacyjnych.
Trudności mogą nastręczać różnice między poszczególnymi językami programowania. Na pewno należy poszerzać wiedzę w tym zakresie, kształcić się na bieżąco i śledzić trendy technologiczne na rynku IT - dodaje Ewelina Sumiec.
Solidne podstawy
Zdaniem Dominiki Gołaś, Senior HR Specialist w Coders Lab, ważne jest, żeby mieć solidne podstawy znajomości IT - bazę, na której buduje się dalszą wiedzę. - Początki zawodowe w branży IT wiążą się ze zdobywaniem informacji z wszelkich dostępnych źródeł. Warto czytać dostępne blogi dotyczące rekrutacji w IT oraz blogi programistyczne. Pomocne jest również szukanie informacji u osób technicznych, które już są na pokładzie firmy. Bardzo ważne jest, aby wnikliwie słuchać wypowiedzi kandydatów na temat ich doświadczenia technicznego i gdy, szczególnie na początku pracy w branży, nie rozumiemy wszystkich zagadnień, to doszkalamy się na bieżąco. Błędem początkujących rekruterów IT jest mylenie technologii i pytanie na przykład Python Developera o zadania spoza tej technologii.. Ważne też, żeby wiedzieć, jakie technologie wykorzystują backendowcy a jakie frontendowcy – dodaje Dominika Gołaś.
Dużą skuteczność osiąga się poprzez prowadzenie pogłębionych wywiadów z potencjalnymi pracownikami IT, m.in. pytając ich o realizowane projekty, stosowane narzędzia itd. Dobrze jest zadawać pytania otwarte, aby kandydat mógł udzielić wyczerpującej odpowiedzi o swoim doświadczeniu. Nie ma niczego niewłaściwego w tym, że czegoś nie wiemy, ale posiadanie podstaw wiedzy IT jest obowiązkowe choćby po to, żeby móc dotrzeć do kandydata i nie zniechęcić go swoimi brakami merytorycznymi. - Dominika Gołaś, Senior HR Specialist w CodersLab
Wiedza z zakresu IT to jedno, a komunikacja z kandydatem – to drugie. Aby nawiązać dobry kontakt, należy zadbać o budowanie relacji już od pierwszej wiadomości wysłanej do potencjalnego kandydata np. poprzez portal społecznościowy. Uważne czytanie profilu kandydata pozwoli zachować reputację i profesjonalizm. Pamiętajmy o dopasowaniu komunikatu do rozmówcy i charakteru relacji biznesowej. - Nie każdy życzy sobie, aby komunikować się bezpośrednio na “Ty”, niektórym zależy na formalnej komunikacji. Personalizując wiadomość i przechodząc od razu do konkretnych informacji, okazujemy szacunek kandydatowi - radzi Gołaś.
Narzędzi i źródeł wiedzy o programowaniu i technologiach nie brakuje, a wręcz pojawia się ich coraz więcej. Kluczowe więc wydaje się zaangażowanie, motywacja i szczere zainteresowanie tematyką rekrutera IT. Literatura fachowa, podcasty, artykuły branżowe i kanały YT – to tylko niektóre sposoby, by coraz lepiej poznać język programistów. Przykładowo, na blogu understandit.pl można przeczytać np. o tym, jak zrozumieć Javę albo jak odróżnić framework i biblioteki. Za pośrednictwem strony Glossary można sprawdzić wybrane hasło dotyczące obszaru IT. Innym – mocno praktycznym rozwiązaniem – jest udział w kursie i zdobywanie umiejętności z zakresu kodowania. Wówczas rekruter „na własnej skórze” poznaje wybraną tematykę.
- Specjalnie z myślą o specjalistach z działów HR i rekruterach, którzy w codziennej pracy mają kontakt z pracownikami lub kandydatami z branży IT, stworzony został kurs „IT dla HR. Znajdź wspólny język z programistą”. Podczas 2 intensywnych dni przekazujemy uporządkowaną wiedzę na temat rodzajów i zastosowań najpopularniejszych języków programowania, związanych z nimi technologii, trendów, ról w zespołach projektowych czy dobrych praktyk w obszarze rozwoju oprogramowania - komentuje Katarzyna Bartoszkiewicz, Marketing Manager w CodersLab.
A jak agile, J jak Java
Konkretna, merytoryczna rozmowa – tego często oczekują kandydaci do pracy na stanowiska związane z IT. Wiedzę, umiejętności i doświadczenie potencjalnych pracowników weryfikują osoby techniczne, ale pierwszy kontakt i pierwszy etap rekrutacji jest po stronie HR. To ważne, by rekruter rozumiał, czego dokładnie dotyczy oferta pracy, na czym polega specyfika danego stanowiska, metodologia pracy i dobór narzędzi, jaki jest zakres obowiązków i możliwości rozwoju. Ułatwi to rozmowę z kandydatem, który nie tylko uzyska użyteczne informacje, ale też doceni profesjonalizm i zaangażowanie rekrutera. W efekcie przyniesie to korzyści każdej stronie – HR zwiększy skuteczność swoich działań, a kandydat wyniesie pozytywne doświadczenia z procesu rekrutacyjnego.
OTO PRZYKŁADOWE POJĘCIA I OKREŚLENIA ZE ŚWIATA IT, KTÓRE WARTO POZNAĆ:
- Algorytm – skończony ciąg jasno zdefiniowanych czynności, prowadzących do wykonania jakiegoś zadania.
- Agile – grupa metod wytwarzania oprogramowania opartego na programowaniu iteracyjno-przyrostowym, powstałe jako alternatywa do tradycyjnych metod typu waterfall. W agile mamy do czynienia ze zwinnymi, samoorganizującymi się zespołami, które planują pracę własną i dzielą się zadaniami.
- Back-end developer – odpowiada za stronę serwerową („pod spodem”) i logikę biznesową systemu. Programuje m.in. w Java, .NET i Python.
- Bazy danych – zaawansowane aplikacje służące trwałemu przechowywaniu danych. Relacyjne bazy danych to: MySQL, MSSQL, Oracle, PostgreSQL. Nierelacyjne bazy danych: NoSQL, Cassandra, Redis, Mongo.
- Biblioteka – narzędzia wchodzące w skład frameworku, zbiór funkcjonalności do wykorzystania przez programistę, pozwala wykonywać określoną liczbę funkcji, rozwiązywać różne problemy, usprawniać pracę.
- Bug fixing – naprawianie błędów powstałych podczas programowania.
- Build – aplikacja, która jest skompilowana, gotowa do użycia, do uruchomienia.
- Code review – weryfikacja pod kątem poprawności kodu napisanego przez programistę – przez inną osobę, przed włączeniem kodu do projektu.
- Commit – znacznik, który mówi, jakie poprawki zostały wprowadzone w repozytorium kodu.
- Daily Scrum/Stand up meeting – codzienne, krótkie spotkania scrumowe, podczas którego każdy członek zespołu informuje, co udało mu się zrobić i co planuje zrobić w najbliższym czasie.
- Deployment – zainstalowanie, uruchomienie aplikacji np. w środowisku klienta.
- Edytor kodu źródłowego (IDE) - środowisko programistyczne, w którym uruchamia się różne aplikacje; dostarcza różnych funkcjonalności, które wspomagają proces tworzenia, modyfikowania, testowania oprogramowania.
- Framework – narzędzie, które upraszcza programowanie, jest czymś w rodzaju rusztowania/szkieletu, w ramach którego pisze się aplikacje. Framework porządkuje, systematyzuje i pozwala rozwiązywać problemy. Może być to np. framework do programowania graficznego interfejsu użytkownika. Przykładowe frameworki: Angular, Ember JS, React, VueJS.
- Front-end developer – odpowiada za interfejs użytkownika, a więc za to, co widzimy na stronie, za elementy graficzne itp. W swojej pracy używa m.in. takich technologii jak JavaScript, CSS, HTML.
- GIT – repozytorium służące do wersjonowania kodu, porównywania wersji kodu.
- GitLab, GitHub – zdalne repozytoria, którymi można zarządzać z poziomu przeglądarki internetowej. Programiści mogą tutaj dzielić się swoimi projektami tworzonymi w różnych technologiach.
- JIRA – oprogramowanie służące do obsługi cyklu życia aplikacji, pozwala śledzić błędy, sprawdzać progres i zarządzać projektem.
- Języki programowania — to między innymi Java, JavaScript, Python, Scala, .NET, C#, C++, PHP, SQL, Swift, CSS, HTML, Ruby, Ada. Języki programowania mają różne zastosowanie. Na przykład języki serwerowe i stacjonarne to: C, C++, C#, Java; języki mobilne – Android: Java i Kotlin, IOS: Swift, Objective-C; języki webowe – Front end: HTML, CSS, Backend: Ruby, Python, PHP, Java. Rekrutując, warto zwrócić uwagę, nie tylko jaki język kandydat zna, ale też, w jakim środowisku go wykorzystywał i do jakich aplikacji – desktopowych, mobilnych czy webowych.
- Języki kompilowane – kod musi zostać najpierw skompilowany do postaci kodu maszynowego (postaci binarnej), np. Java, C, C++.
- Języki bazodanowe – służą do komunikacji z relacyjnymi bazami danych, języki „wspomagające” dla aplikacji. Przykład: PLSQL, SQL.
- Języki interpretowane – kod programu nie jest kompilowany, podczas uruchomienia jest wczytywany, interpretowany i wykonywany przez interpreter języka, np. JavaScript, Python, PHP.
- Kanban – metoda sterowania produkcją, jej podstawowe założenia to: wizualizacja, ograniczenie pracy w toku, zarządzanie strumieniem.
- Kod źródłowy – zapis programu przy pomocy danego języka programowania.
- Oprogramowanie (software) – zespół programów wykonywanych przez komputer.
- Performance testy – testy wydajności, pozwalające sprawdzić moc obliczeniową systemu.
- Preprocesor – narzędzie służące do przetwarzania kodu źródłowego przed rozpoczęciem właściwej kompilacji, np. Sass, Less są preprocesorami (rozszerzeniami) języka CSS.
- Role w projekcie IT — project manager, product manager, team lead, architekt, tester, developer, devOpsRelease odpowiedzialny za wydanie wersji aplikacji/oprogramowania.
- Release – wydanie wersji aplikacji, programowania.
- Root cause – pierwotna przyczyna powstającego błędu w tworzeniu kodu.
- RWD – sposób projektowania strony, dzięki któremu na różnych urządzeniach będzie ona wyglądać jednakowo dobrze, a więc interfejs, który widzimy na telefonie, będzie też dobrze się prezentować na monitorze komputera, w odpowiedniej rozdzielczości itd.
- Retrospektywa – to spotkanie po zakończeniu sprintu, służące podsumowaniu i omówieniu tego, co udało się zrobić, jakie wystąpiły problemy, jak zostały rozwiązane itd. Rozwiązanie stosowane w metodyce Scrum.
- System komputerowy – połączenie oprogramowania (software) ze sprzętem komputerowym (hardware).
- Scrum – to metodyka, która opiera się na koncepcji agile i stanowi alternatywę wobec tradycyjnego podziału na działy, np. testów, produkcji itd. Zespół składa się z przedstawicieli różnych specjalizacji, który posiadają różne umiejętności i kompetencje. Wyróżnione są trzy role: scrum master, czuwający nad prawidłowym przebiegiem scrum, product owner, współpracujący z klientem, i development team, składający się z kilku osób. Zgodnie z metodyką Scrum efekty działań i poszczególne partie projektu przedstawiane są „kawałek po kawałku”, a nie – jak w tradycyjnym modelu – dopiero po stworzeniu całego produktu/zrealizowaniu projektu od a do z.
- Sprinty — jednakowe odcinki czasu, na które podzielona jest realizacja projektu. Jest to np. dwutygodniowy okres, podczas którego powstaje kolejna funkcjonalność.
- Testowanie oprogramowania – proces związany z wytwarzaniem oprogramowania, pomagający zapewnić odpowiednią jakość.
- Testy komponentowe – weryfikują poprawne działanie danego komponentu, modułu odpowiedzialnego za logikę biznesową, np. może to być np. katalog produktów albo moduł odpowiedzialny za rejestrację i obsługę klientów.
- Testy integracyjne – służą sprawdzeniu, czy wszystkie moduły/systemy ze sobą dobrze współpracują, albo z modułami zewnętrznymi, które nie są w naszym systemie. Testy pozwalają zweryfikować rozwiązania klienta, sprawdzić działanie bazy danych i różne inne elementy.
- TypeScript – najnowsza, rozszerzona wersja języka JavaSriptu, w której już na etapie pisania kodu można sprawdzać typy i weryfikować kod.
- Unit test – test jednostkowy, weryfikujący poprawność napisanego fragmentu kodu.
- Waterfall – to metoda tworzenia oprogramowania, polegająca na wykonywaniu podstawowych czynności jako odrębnych faz projektowych w porządku jeden po drugim. Aby przejść do kolejnej czynności, należy ukończyć wcześniejszą. Elementy modelu kaskadowego to: planowanie, projekt, implementacja, testowanie, a na końcu wdrożenie i utrzymanie.