W ostatnim artykule rozmawialiśmy z Marcinem Jałbrzykowskim o .NETcie i o tym, jakie czynniki zdecydowały, że dziś jest ekspertem .NET. Ponieważ w codziennej pracy Marcin nie tylko dba o architekturę oprogramowania, ale również bierze czynny udział w budowaniu zespołu, tematem poruszanym w tej rozmowie jest weryfikacja kompetencji kandydatów podczas rozmowy technicznej. Podpytaliśmy o to, co jest ważne na takim spotkaniu rekrutacyjnym. Na co zwraca uwagę podczas rozmowy z Kandydatem oraz jakie czynniki wpływają na ostateczną ocenę, czy Kandydat jest już na odpowiednim poziomie wiedzy i umiejętności, aby rozpocząć swoją pracę w branży IT na określonym stanowisku.
DCG: Marcin, co Twoim zdaniem powinien wiedzieć Kandydat, który idzie na rozmowę rekrutacyjną na stanowisko Programisty .NET?
Marcin Jałbrzykowski: Przede wszystkim powinien wykazać się analitycznym myśleniem, znać w odpowiednim stopniu platformę .NET i umieć wykorzystać tę wiedzę w praktyce.
Na rozmowach rekrutacyjnych, bardzo często przedstawiam Kandydatom problem do rozwiązania. Nie jest to pytanie stricte akademickie, ale problem z życia codziennego, który pokazuje, na jakim poziomie znajomości .NET plasuje się dana osoba. Sprawdza również czy Kandydat potrafi wykazać się analitycznym myśleniem i wykorzystać swoją wiedzę techniczną, aby samodzielnie znaleźć odpowiednie rozwiązanie. Warto zaznaczyć, że zadany problem nie ma jednego idealnego rozwiązania. Szczególnie istotny jest dla mnie tok myślenia, jakim podąża kandydat w celu rozwiązania.
Czy potrafi znaleźć plusy i minusy danego rozwiązania? Czy jest to na tyle realne rozwiązanie, które będziemy mogli zaimplementować, biorąc pod uwagę występujące w praktyce ograniczenia?
Czasy, kiedy Deweloper powinien dysponować jedynie umiejętnościami technicznymi, dawno minęły. Obecnie praca Programisty w dużej mierze składa się z komunikacji werbalnej. Dobry Programista powinien umieć dostosować poziom abstrakcji rozmowy do swojego rozmówcy – zupełnie innego języka powinien używać w rozmowie z analitykami czy klientami biznesowymi, niż w przypadku komunikacji z Deweloperami ze swojego zespołu. Efektywna i precyzyjna umiejętność przekazywania informacji jest kluczowa w obecnym świecie IT.
DCG: Kandydat, który do niedawna pracował w innych technologiach, jest na pozycji straconej od początku?
MJ: Absolutnie nie. Wiele technologii, takich jak Java, opiera się o koncepty i wzorce analogiczne do tych, występujących w platformie .NET. Jeśli Kandydat ma doświadczenie w tworzeniu aplikacji w oparciu o współczesne języki programowania, zna wzorce projektowe i integracyjne, wie jak wygląda proces wytwórczy oprogramowania, zna uniwersalne i powszechnie stosowane protokoły, a także potrafi efektywnie analizować problemy i tworzyć rozwiązania, to z pewnością nie będzie miał większych problemów, aby przesiąść się na platformę .NET.
DCG: A co z Kandydatami, którzy mają doświadczenie niekomercyjne?
MJ: Mogłoby się wydawać, że taka osoba będzie z góry na straconej pozycji, ale to nie jest prawda! Świetnym rozwiązaniem dla początkującego .NETowca, ale i Dewelopera każdej innej technologii, jest tworzenie swojego portfolio projektów na publicznych repozytoriach kodu, np. na GitHubie.
W programowaniu bardzo istotna jest praktyka. Przy tworzeniu własnych aplikacji napotkamy wiele problemów, które musimy samodzielnie rozwiązać. Często dojście do rozwiązania wiąże się z pogłębianiem wiedzy odnośnie danej technologii. Samodzielnie nabyte doświadczenie zauważalnie przekłada się na pracę w projektach komercyjnych.
Dzięki udostępnionym publicznie projektom, jestem w stanie określić, na jakim poziomie wiedzy jest dany Kandydat i jaka jest jego dbałość o tworzone rozwiązania - mam przed sobą próbkę jego pracy, która w połączeniu z odpowiedziami na pytania, zadawane w trakcie spotkania, daje mi pełny obraz kandydata.
DCG: Ok, a gdybyś miał zrobić selekcję, na Juniorów, MIDów i Seniorów, to jakby ona wyglądała? Kto i co powinien wiedzieć, na danym etapie swojej kariery?
MJ:
Junior .NET Developer najczęściej posiada małe doświadczenie komercyjne lub jest to jego pierwsza praca. Jego znajomość technologii jest podstawowa. Realizuje zadania o małej złożoności, które są często odtwórcze, dzięki temu nie jest to stresującym rzuceniem na głęboką wodę. Umożliwia to stopniowe zapoznanie się z dobrymi praktykami, wzorami i rozwiązaniami powszechnie występujących problemów.
W przypadku MID/Regular .NET Developerów są to programiści posługujący się swobodnie technologiami używanymi w projekcie oraz używający podstawowych technik programistycznych i wzorców projektowych. Wykazują się samodzielnością w realizacji większości zadań. W przypadku zadań o większej złożoności, wykonują je w oparciu o wiedzę Seniorów.
Senior .NET Developerzy posiadają doświadczenie w szerokim spektrum zagadnień. Posługują się zaawansowanymi technikami i dobierają właściwe wzorce projektowe i architektoniczne. Posiadają wiedzę odnośnie całego cyklu wytwarzania oprogramowania. Potrafią efektywnie dzielić duże i złożone problemy na mniejsze. Wykazują się dużą samodzielnością w realizacji zadań, w tym wymagających poznania nowych technologii. Ponadto ich kluczową rolą jest bycie mentorem dla mniej doświadczonych członków zespołu. Warto podkreślić, że Senior to określenie dojrzałości w podejściu do wytwarzania oprogramowania, co nie zawsze idzie w parze z wiekiem.
DCG: Masz jakieś wskazówki dla początkujących? Od czego zacząć?
MJ: Microsoft obecnie udostępnia darmowe kursy programowania dla początkujących - Microsoft Virtual Academy. To świetny krok na początek, aby poznać podstawy i nauczyć się tworzyć proste programy z wykorzystaniem technologii .NET. Wielbiciele nauki poprzez kursy wideo z pewnością znajdą wiele dobrej jakości na platformach edukacyjnych, takich jak Udemy lub Pluralsight.
Dla wielbicieli książek polecam Head First C# - jest to ilustrowany podręcznik, obfitujący w układanki, ilustrowane wyjaśnienia i zagadki w formie bardzo przyjaznej dla początkujących. Dla wielbicieli bardziej ustrukturyzowanej formy, polecam książki Andrew Troelsena poświęcone językowi C# i platformie .NET.
Ponadto, sama oficjalna dokumentacja .NET jest obecnie dość przyjazna dla początkujących. Można znaleźć w niej wiele przykładów użycia wybranych funkcjonalności.
Warto podkreślić, że samodzielne tworzenie i modyfikowanie kodu oraz przeprowadzanie licznych eksperymentów to najlepsza metoda nauki – trening czyni mistrza!
DCG: Dziękujemy Marcin!
MJ: Ja również bardzo dziękuję i zachęcam do rozpoczęcia przygody z technologią .NET!