CV programisty
Zastanawiasz się jak napisać CV programisty? Co powinno znaleźć się w CV? Czy warto wspominać o poznanych technologiach, czy warto wpisywać poprzednie miejsca pracy nie związane z informatyką? Odpowiedź na te wszystkie pytania znajdziesz w tym artykule. Po jego przeczytaniu napisanie CV programisty nie będzie dla Ciebie żadnym problem!
Spis treści
Wstęp
Przed Tobą pierwszy artykuł w serii poświęconej wszystkim co związane z pracą i karierą w zawodzie programisty. Do jej zapoczątkowania skłoniło mnie wiele pytań jakie dostaję na skrzynkę e-mailową. Przez kilka następnych wpisów postaram podzielić się z Tobą całą swoją skromną wiedzą dotyczącą szukania pracy i pisania CV w naszym fachu!
Dodatkowym argumentem jest to, że aktualnie pracuję w dziale HR, nie jako rekruter a właśnie jako programista. Otwarło mi to oczy na wiele mechanizmów i zwyczajów rekruterów, o których wcześniej nie miałem pojęcia. Całą swoją wiedzą podzielę się z Tobą!
W internecie można znaleźć wiele informacji na temat pisania poprawnego CV. Niestety w większości są to artykuły sponsorowane lub pisane przez osoby nietechniczne. Kolejnym problemem jest to, że wszystkie te artykuły pisane są na jedno kopyto, generalnie nie dostarczają żadnych sensownych informacji - jest w nich dużo lania wody i pisania o kwiatkach
Ja nie będę pisał o pierdołach ani tłumaczył czym jest CV. Postaram się za to przedstawić kilka ważnych informacji, o jakich trzeba wiedzieć.
Jak jest analizowane CV programisty?
Najważniejszą kwestią jest zdawanie sobie sprawy jak wygląda proces rekrutacji programisty. Jest on inny dla małych firm i inny dla dużych korporacji. To gdzie aktualnie aplikujesz bardzo zmienia postać rzeczy, absolutnie nie można tego samego CV wysyłać do dużych i małych jednostek!
Rekrutacja programisty w małej firmie
W małej firmie za proces rekrutacji przeważnie odpowiedzialny jest nikt inny jak szef. Nawet jeżeli CV zbierane są przez sekretarkę bądź asystentkę, ostatecznie i tak ocenia je oko szefa.
W małych działalnościach gospodarczych szefem przeważnie jest osoba techniczna, posiadająca duże umiejętności programistyczne i umiejętności zarządzania projektami. Składając CV do małej firmy należy brać ten fakt pod uwagę! Rolę drugorzędną będą miały w tym wypadku kwiatki i wodotryski, osoba techniczna będzie skupiać się na szczegółach takich jak np. fachowa terminologia.
Osoba techniczna odpowiedzialna za swoją własną firmę, będzie chciała zatrudnić jak najlepszego fachowca. Dodatkowo szybko wyłapie z CV wszelkie nieścisłości, typowe lanie wody bądź wręcz nieistotne pierdoły.
Osoba techniczna kierująca firmą posiadająca duży bagaż doświadczenia zawodowego, będzie umiała odróżnić wartościowych kandydatów od tych, którzy się nie naddają. Zrobi to między innymi na podstawie zawartych w CV informacji takich jak poprzednie miejsca pracy, wykonane projekty oraz języki i technologie z jakimi spotkał się kandydat.
Rekrutacja programisty w korporacji
Duże korporacje żyją własnym życiem. Za rekrutację zawsze odpowiada rekruter pracujący w dziale HR. Profil rekrutera nie ma nic wspólnego z profilem programisty. Rekruter jest osobą nietechniczną. Podczas przeglądania CV rekruter skupia się na poszczególnych słowach kluczowych np. na językach programowania, które aktualnie są wymagane u nowego kandydata.
Rekruter przeglądając CV wyłapuje pojedyncze słowa kluczowe i na ich podstawie decyduje, czy jesteś kandydatem naddającym się na dane stanowisko.
Aplikując do korporacji trzeba koniecznie brać to pod uwagę. Niestety rekruter jest pierwszą osobą, która może odrzucić Twoje CV i zdecydować o Twoim losie.
Wysyłając CV do korporacji należy skrupulatnie przygotować CV - wypisać w nim wszelkie znane języki programowania i technologie. Przykładowo możesz napisać, że doskonale umiesz technologię .NET, pracujesz w niej X lat. Osoba techniczna w małej firmie może być zainteresowana Twoją osobą i zaprosi Cię na rozmowę. Natomiast rekruter, który nie wie co składa się na technologię .NET odrzuci Twoje podanie ponieważ nie znajdzie w CV słów kluczowych takich jak ASP.NET, ASP.NET MVC, WCF, WPF itd.
Mówiąc najprościej, jeżeli źle przygotujesz swoje CV starając się o pracę w korporacji nawet nie będziesz miał możliwości ani szans aby zaprezentować się na rozmowie kwalifikacyjnej - nie ważne jaki dobry byś nie był.
Różnice
Wniosek z tego akapitu jest bardzo prosty. Wysyłając CV do małej firemki może być to CV bardzo treściwe. Masz bardzo duże szanse, że CV będzie przeglądać osoba, która wie kogo szuka.
Składając CV programisty do korporacji należy wypisać maksymalnie dużo poznanych technologii, wpłynie to na naszą korzyść. Obok każdego języka programowania powinieneś dopisać nazwy frameworków i bibliotek z jakich umiesz korzystać. Osobiście nie rezygnuję z wypisywania takich oczywistości jak znajomość HTMLa i CSSa. Są to kolejne słowa kluczowe, które zwiększą Twoją atrakcyjność i mogą zdecydować o zaproszeniu na rozmowę.
Przykładowo programując w technologii .NET warto wspomnieć o wszelkich technologiach z nią związanych, np. o Entity Frameworku. Być może rekruter wychwyci dane słowo kluczowe, a niekoniecznie musi mieć pojęcie czy .NET i EF są ze sobą powiązane.
Oczywiście, nie chciałbym aby rekruterzy poczuli się urażeni. Jest to naturalna kolej rzeczy, inny fach i inny rodzaj zdobytej wiedzy. Nikogo nie powinno dziwić, że rekruter nie jest wstanie powiązać frameworka AngularJS z frontendem. W naszej gestii leży, aby ułatwić pracę rekruterom i jednocześnie zwiększyć swoje szanse na dostanie pracy.
Co napisać w CV programisty?
CV programisty powinno być konkretne i schludne. Poczucie estetyki jest związane z zawodem programisty, chyba że skupiasz się stricte na backendzie i logice. Konkretne CV to CV zawierające wszystkie najważniejsze informacje czarno na białym - bez bajerowania.
Wpisywanie pracy w McDonaldzie lub zbierania truskawek w Niemczech mija się z celem - niepotrzebnie zajmuje miejsce. Znajomość Excela może zaimponować ale raczej nie w środowisku wytwarzającym oprogramowanie komputerowe.
Poniżej wymienię kwestie, na które moim zdaniem należy zwrócić największą uwagę.
Porządek w językach programowania i technologiach
Języki programowania są kwestią kluczową jeżeli chodzi o CV programisty. Istnieje jednak kilka szczegółów, o których trzeba pamiętać.
Po pierwsze, złym pomysłem jest zaczynanie od Delphi, Pascala lub Visual Basica 6. Są to technologie archaiczne, obecnie w projektach komercyjnych praktycznie nie używane. Są dobre do rozwiązywania zadań maturalnych ale niekoniecznie mówią o naszych umiejętnościach. Próba zaimponowania znajomością Pascala może poskutkować negatywnym odczuciem na temat kandydata.
Języki programowania i technologie należy koniecznie mądrze pogrupować. Wymienianie języków skryptowych, obok języków obiektowych, obok znanych frameworków, oddzielając wszystko przecinkiem wygląda nieetycznie a przede wszystkim nieczytelnie.
Osobiście uzupełniając CV dzielę wszystko według stopnia znajomości oraz według przeznaczenia. Przykładowo często wykorzystuję takie sekcje:
- Good programming skills of - główne języki programowania, w których czuję się najlepiej. Reprezentuję w nich wysoki poziom i nie boję się rozmawiać o nich na rozmowie kwalifikacyjnej. Są to języki, w których głównie mogę pracować.
- Knowledge of - poboczne języki programowania (także skryptowe, znacznikowe, proceduralne) i przede wszystkim technologie związane z językami z sekcji wyżej (np. frameworki i biblioteki).
- Knowledge of RDB - relacyjne bazy danych, które znam
- Basic knowledge of - ostatni akapit, w którym zawieram całą resztę także pomniejsze rzeczy (słowa klucze) ważne np. dla rekruterów. Przeważnie rozbijam akapit na kilka linijek. W pierwszej umieszczam ważne zagadnienia, które znam tylko w stopniu podstawowym np. WPF, LINQ, Git, Svn. W drugiej linijce zagadnienia związane ogólnie z inżynierią oprogramowania np. Scrum, SOLID principles, DRY, KISS itp. W trzeciej linijce umieszczam języki programowania, z którymi się spotkałem i coś w nich napisałem, jednak ich znajomość jest bardzo podstawowa.
Podając nazwy frameworków i technologii należy także pisać o ich wersji. Daje to osobie technicznej lepsze spojrzenie na profil kandydata, nasza osoba wypada bardziej profesjonalnie. Przykładowo dodając znajomość HTML istotne jest czy znamy HTML 4.01 czy HTML5. Jeżeli nie podamy wersji nie powinno dziwić, jeżeli na rozmowie kwalifikacyjnej padnie pytanie o WebSockety z HTML5 podczas gdy kandydat ledwo odróżnia znacznik ul od ol.
Przykłady z wersjami technologii można mnożyć w nieskończoność. Istnieją spore różnice np. pomiędzy C++ 11 a C++ 14. Jeszcze większe różnice istnieją pomiędzy frameworkiem .NET 3.0, .NET 3.5 oraz .NET 4.5. Nie podając wersji technologii przedstawiamy siebie nie fachowo.
Inżynieria oprogramowania - pokaż, że umiesz
Dobrym zwyczajem jest dodanie do powyższego akapitu (np. do sekcji Basic knowledge of) zagadnień stricte z inżynierii oprogramowania. Chwaląc się znajomością wzorców projektowych czy znajomością zasad SOLID udowadniamy, że wiemy czym jest programowanie. Pośrednio odróżniamy się od tłumu zwykłych klepaczy kodu.
Każdy umie napisać pętlę operującą na określonych strukturach, jednak nie każdy potrafi pisać profesjonalny, skalowalny kod dobrej jakości. Zaprezentowanie się od tej strony może odegrać kluczową rolę, szczególnie podczas rekrutacji do dużych projektów.
Dodatkowo można pochwalić się umiejętnościami charakterystycznymi dla architekta systemowego lub project managera, wspomnieć o znajomości narzędzi wykorzystywanych do continuous integration, systemach kontroli wersji, napisać o znajomości RestAPI. Są to zagadnienia charakterystyczne dla dużych projektów.
Osoba techniczna przeglądająca nasze CV od razu stwierdzi „Wow, ten gość ma potencjał, chcę mieć go koniecznie w swojej drużynie!”. Wiadomo, jeżeli jesteś młodym programistą, w trakcie lub tuż po studiach, nikt nie będzie wymagał od Ciebie zarządzania projektem. Jednak sama informacja o tym, że znasz takie zagadnienia stawia Cię poziom wyżej od innych kandydatów kończących studia, którzy wpisują do CV znajomość C++ i HTMLa - i na tym CV się kończy.
Doświadczenie, własne projekty, blogi
Poprzednie miejsca pracy to drugi co do ważności akapit w CV. Nie warto wpisywać informacji o pracach dorywczych niezwiązanych z informatyką. Ani rekrutera ani kierownika nie obchodzi to, że w wakacje kandydat zbierał truskawki w Niemczech.
Jeżeli posiadasz jakiś bagaż doświadczenia, ta sekcja nie będzie dla Ciebie żadnym problemem. Trochę gorzej jest w przypadku, kiedy właśnie ukończyłeś studia i nigdzie nie pracowałeś. Uratują Cię własne projekty wykonane hobbystycznie oraz podczas studiów. Własne projekty to coś co uwielbiają zarówno rekruterzy jak i menedżerowie (techniczni).
Pamiętaj, że doświadczenie to nie tylko praca zawodowa dla kogoś. Można pracować w domowym zaciszu i nie czerpać z tego korzyści w postaci wynagrodzenia pieniężnego. Doświadczenie zawodowe to przede wszystkim:
- odbyte staże i praktyki związane z programowaniem
- poprzednie miejsca pracy związane z programowaniem
- kursy i szkolenia informatyczne
- udział w konferencjach IT oraz kołach uczelnianych
- własny blog i różne publikacje
Uzupełnienie listy własnych projektów stawia kandydata w bardzo pozytywnym świetle. Pokazuje, że programowanie jest dla niego rodzajem zainteresowania a nie tylko smutnym obowiązkiem. Mi osobiście lista własnych projektów bardzo pomogła podczas szukania pracy, mimo tego, że doświadczenia zawodowego na 2 roku studiów nie miałem wcale.
W doświadczeniu zawodowym wspomniałem o projektach (prostych bo prostych) oraz artykułach na blogu. Link do bloga był podany w innej sekcji. Jak dowiedziałem się od osoby mnie rekrutującej, wrażenie bardzo pozytywne.
Edukacja
W sekcji edukacji podajemy ukończone szkoły i uczelnie. Moim zdaniem osoby studiujące nie muszą podawać szkoły średniej - jest to strata miejsca. Skoro ktoś studiuje to wiadomo, że ukończył jakieś tam liceum. Można rozważyć wpisanie szkoły średniej w przypadku absolwentów techników. Technikum samo w sobie przygotowuje nas do zawodu w jakiejś określonej specjalizacji (szczególnie jeżeli to technikum informatyczne). Wielu rekruterów i menedżerów starszej daty przychylnie patrzą na absolwentów techników, ponieważ dawniej technika miały wysoki poziom.
Oprócz szkoły warto napisać o specjalności jaką wybraliśmy, szczególnie jeżeli jesteśmy po kierunku informatycznym. Jeżeli studiowałeś na wydziale glonów i wodorostów możesz śmiało tę informację pominąć. Jeżeli na wydziale matematyki, fizyki i informatyki można śmiało dopisać.
Staraj się aby sekcja edukacji nie zabrała zbyt wiele miejsca, nie są to informacje szczególnie istotne z punktu widzenia samej rekrutacji lub umiejętności kandydata.
Wydaje mi się, że niestety studenci studiów dziennych są chętniej rozpatrywani przez różnego rodzaju firmy niż studenci zaoczni. Nie wnikając w szczegóły tak to po prostu działa. To samo dotyczy przekonania do poszczególnych uczelni. Pracodawcy bardzo chętnie rekrutują osoby z uczelni prestiżowych takich jak Uniwersytet Jagielloński czy Akademia Górniczo Hutnicza, a mniej chętnie z Wyższych Szkół Robienia Hałasu (WSRH).
Pamiętaj, że akapit edukacji jest tylko informacją czysto poglądową. Nie powinien decydować o karierze, jeżeli kandydat posiada duże umiejętności i wykształcenie wyższe.
Gorzej sytuacja wygląda jeżeli kandydat wcale nie posiada wykształcenia wyższego. Prawdopodobnie pracę znajdziesz, ale jest bardzo prawdopodobne, że będziesz zarabiał mniej niż kolega z przedrostkiem inż.
Umiejętności poziom wyżej niż inni
Ogólnie pisząc, musisz potrafić sprzedać siebie. Jest to bardzo ważne, często pracę dostaje osoba, która umie się sprzedać i jest dobrze przygotowana merytorycznie. Osoby zamknięte mogą mieć większy problem.
Nie chcę powtarzać wiadomości z akapitu inżynieria oprogramowania - pokaż, że umiesz, ale właśnie o to chodzi! Oprócz wpisania standardowych umiejętności programisty, musisz pokazać, że umiesz coś więcej.
Każdy kto stara się o posadę programisty umie wachlarz języków programowania. Oprócz Twojego CV na biurku rekrutera leży jeszcze 40 innych aplikacji. Wszystkie niestandardowe umiejętności mogą wpłynąć na Twój sukces.
Dodatkowe, hobby i język
Nie pisz pierdół. Hobby powinno zawierać się w maksymalnie jednej linijce. Generalnie jest to informacja całkowicie bezużyteczna, niemniej jednak niektórzy fetyszyści ją analizują. Jeżeli zdecydujesz napisać się o zainteresowaniach i sporcie, wymieniaj zagadnienia rozwijające logiczne myślenie. Jeżeli chodzi o sport wymieniaj koniecznie sporty drużynowe, w których ważna jest współpraca. Chodzenie po górach i wszystkie sporty niedrużynowe, w których brak jest współpracy, są teoretycznie w fachu programisty gorsze.
Jeżeli napiszesz o czytaniu książek, napisz o książkach takich jak Pragmatyczny programista lub Czysty kod. Takimi pozycjami możesz zaciekawić programistę/menedżera przeglądającego Twojego CV. Pisanie o książkach w stylu Harry Potter mija się z celem.
Obowiązkową pozycją w CV każdego programisty jest znajomość języka angielskiego.
Osobiście zrezygnowałem z podawania informacji o posiadanym prawie jazdy, o tym że znam pakiet office, oraz o tym że znam zarówno system Windows jak i Linux. Są to informacje trywialne, które absolutnie nic nie wnoszą. Niepotrzebnie zajmują miejsce i rozpraszają.
Sytuacje kiedy nie musisz wysyłać CV
Idealną sytuacją jest moment, w którym nie musisz wysyłać CV, ewentualnie firmy same proszą Cię o wysłanie im CV i zapraszają na rozmowę. W zawodzie programisty jest to sytuacja dość powszechna - wystarczy umieć korzystać z internetu.
Krokiem obowiązkowym dla każdego programisty jest założenie profilu na portalu linkedin. Jeżeli posiadasz motywację do prowadzenia własnego bloga związanego z branżą - to bardzo dobrze! Uwierz mi, promowanie własnej osoby w internecie i działanie w kierunku social media gra duże znaczenie. Rozgłos można zdobyć także będąc ekspertem na jakimś forum tematycznym, jednak jest to zabieg powolony.
Osobiście mimo małej popularności bloga, dostają przynajmniej jedną ofertę pracy tygodniowo związaną z programowaniem. Zachęcam wszystkich do promowania własnych umiejętności w sieci.
Podsumowanie
Podsumowując artykuł mogę jedynie wspomnieć o kilku ogólnikach, o których i tak pewnie każdy wie:
- CV programisty powinno być zawsze w języku angielskim
- Jedyny słuszny format CV to *.pdf. Pomijając fakt ukrywania spacji i tabulatorów jest lepiej parsowany przez automatyczne systemy rekrutacji w dużych firmach
- Do CV zawsze warto dołączyć zdjęcie. Osobiście stawiam na elegancję ale nie zdecydowałbym się na zdjęcie w garniturze
- Nie bój się używać pogrubień i list aby dodatkowo wpłynąć na estetykę CV, nie należy natomiast przesadzać z kursywą
- Spotkałem się z CV, w których do listy projektów był dołączony link do repozytorium GitHuba. Pomysł bardzo oryginalny, należy się tylko upewnić czy kod rzeczywiście jest dobrej jakości.
Ostatecznie CV dzielę na sekcje, starając się aby sekcje mniej ważne takie jak edukacja oraz informacje dodatkowe zajmowały jak najmniej miejsca, każdy wpis w tych sekcjach to z zasady jedna linijka.
Głównym elementem CV rzucającym się w oczy powinno być bogate doświadczenie zawodowe (zamiennie z projektami w przypadku startujących osób) oraz umiejętności kandydata.
Moje przykładowe CV
Wrzucam przykładowy schemat CV, którego używałem na 2 roku studiów. Jest nieco przeterminowany, moje CV rozrosło się pod względem umiejętności jak i doświadczenia zawodowego.
Schemat wygląda dobrze. Myślę, że może się komuś przydać jako wzór. Na wszelki wypadek nie wrzucam dokumentu w formacie edytowalnym, zbytnie lenistwo bywa zgubne :p.