Menu
×
Menu
Możliwość komentowania Programistę .NET z doświadczeniem – zatrudnię… została wyłączona

Programistę .NET z doświadczeniem – zatrudnię…

Opublikowane przez | 12 lipca 2012 | felieton

Jeśli szukasz developera do swojego zespołu programistów to z pewnością nie jesteś zachwycony faktem uczestniczenia w kolejnych rozmowach kwalifikacyjnych z potencjalnymi kandydatami. Dlaczego NIE? Odpowiedź jest prosta – większość otrzymanych aplikacji sprowadzi się do stwierdzeń:

„Niestety nie wiem – ale z chęcią się nauczę, szybko się uczę, może macie Państwo jakieś szkolenia z tej dziedziny?”
„Coś na ten temat na zajęciach było, ale niestety teraz nie mogę sobie przypomnieć”
„Wie Pan – znam dobrze C# ale nie byłem administratorem baz danych, więc SQLa to nie bardzo…”
„VBA??? Proszę Pana! nie zamierzam pisać w tym języku, to prehistoria. Ja tylko C#. VBA do niczego się nie przydaje”
„Metoda Dispose – hmm… nie używałem, ale wydaje mi się, że służy do zamykania pliku”

Ciężko – prawda? Niestety tak wygląda rzeczywistość. Znalezienie odpowiedniego kandydata to nie lada wyzwanie – szczególnie w mniejszych miejscowościach. Z przeprowadzonych rozmów z kandydatami, moim zdaniem wynikają dwa główne problemy:

  1. Brak logicznego myślenia, który łączy się z uczeniem programowania na pamięć. Programowanie jest praktycznie takie same, bez względu na język programowania, zatem myślący developer powinien z łatwością konwertować kod z jednego języka na inny. Często spotykam się z sytuacją wielkiej niechęci programowania w „nowym” lub „starym” języku przez programistów wybranego jedynie „słusznego” języka. Trzeba pamiętać, iż w wielu projektach zachodzi potrzeba utworzenia komponentu napisanego w innej technologii, który wcale nie musi być z gałęzi .NET.
  2. Bardzo wysokie oczekiwania finansowe stawiane przez mało doświadczonych (czasami ledwo po studiach) kandydatów. Fakt bycia na zagranicznych praktykach, biegła znajomość obcego języka wcale nie determinuje wysokiej gratyfikacji. Ludzie! – najpierw pokażcie co potraficie zanim zawołacie 6 lub więcej * średnia krajowa.

OK, zatem co wg. mnie taki programista powinien umieć?

Oczywiście zależy co ma programować. Na wielu portalach z ofertami pracy można znaleźć oferty „na omnibusa”: znajomość C#, C++, VB, ASP.NET, SQL, MDX, Java, Python, etc. – najlepiej wszystkich języków i technik programowania. Jest to sytuacja, która skutkuje napływem całej masy aplikacji kandydatów z których bardzo ciężko będzie wyłowić tego jedynego. Doradzając wielu firmą spotykam się ze stwierdzeniem „Potrzebuję osoby do projektu X, ale dobrze by było aby potem developer zajął się tym, i tym, i tym…”. Właśnie takie podejście skutkuje publikacją błędnie sformułowanych ofert pracy.

Spróbujmy ustalić czego moglibyśmy wymagać od kandydata, który będzie zajmował się programowaniem aplikacji okienkowych lub jak ktoś woli „grubego klienta” w środowisku .NET.

Narzędzia:

  • MS Visual Studio. Poza wiedzą na temat tworzenia projektu w wybranym języku oraz korzystania z VS jako świetnego edytora kodu źródłowego oraz debuggera dodałbym jeszcze umiejętność korzystania z pre oraz post build-ów, ustawień brekpoint-ów (zwłaszcza warunkowych) oraz korzystanie z wbudowanych snippets-ów.
  • SQL Server Management Studio. Oczekiwałbym od kandydata aby wiedział jak założyć, zbackupować, przwrócić oraz podpiąć bazę danych oraz praktycznej wiedzy na temat wykorzystania narzędzia do generowania skryptów i zapytań w języku SQL.
  • Inne mini narzędzia związane z grafiką (docięcie, zmiana rozdzielczości plików graficznych) i jeszcze jeśli kandydat opowie nam o innych przydatnych narzędziach to plus dla niego.

Język, technologia:

  • C# – w wersji minimum 3.0. Kandydat powinien biegle czytać kod źródłowy – ze zrozumieniem oraz powinien umieć go modyfikować tak aby „nie popsuć” tego co już działa. Programista powinien biegle posługiwać się takimi elementami języka jak: OOP, zdarzenia, delegacje, lambda expressions, etc.
  • WPF. Obecnie większość nowych projektów startuje właśnie na bazie WPFa. Zatem znajomość składni XAMLa oraz filozofii budowania GUI aplikacji w tej technologii była by dość kluczowym czynnikiem przy wyborze kandydata. Zwrócił bym uwagę na umiejętność wykorzystania styli, poprawne wiązanie danych oraz wiedzę z zakresu lokalizacji aplikacji.
  • T-SQL. Poza podstawowymi operacjami takimi jak: SELECT, INSERT, UPDATE, DELETE oczekiwałbym jeszcze wiedzy z zakresu tworzenie procedur wbudowanych, funkcji tabelarycznych, oraz wyzwalaczy. Jeśli kandydat wie cokolwiek na temat „planu wykonania” lub Profillera – duży plus dla niego.

Wzorce, wzorce, wzorce….
Do całego koszyka umiejętności należy dodać znajomość podstawowych wzorców. Nie możemy wymagać znajomości wszystkich z serii GoF-a (Gang of Four), jednakże kandydat bez wiedzy o minimum singleton-ie oraz fabryce może nam narobić więcej szkód w projekcie niż korzyści. Od kandydata mającego programować z wykorzystaniem WPFa należy oczekiwać biegłości w posługiwaniu się również wzorcem MVVM, który pozwoli zapanować nad rozrastaniem się kodu przechodzącego w typowe spaghetti oraz powinno ułatwić zrozumienie kodu przez innych programistów.

Znajomość innych elementów na plus:

  • .NET ściśle wiąże się z refleksją, zatem wiedza na temat aktywatora oraz badania typu obiektu jest bardzo pomocna w wielu sytuacjach
  • Posługiwanie się wyrażeniami regularnymi – nieodzowna pomoc przy prasowaniu i walidacji danych
  • Umiejętność posługiwania się metodami asynchronicznymi oraz wątkami w podstawowym zakresie. Należy wiedzieć jak wątek poboczny może współpracować z interfejsem użytkownika w celu unikania „martwych aplikacji”.
  • Entity Framework – jeden z wielu ORM-ów, który pozwala na dużo szybsze tworzenie projektów w technologii .NET.
  • PRISM – oczekiwanie zbyt wygórowanie, jednakże jeśli ma to być osoba, która będzie odpowiedzialna za architekturę aplikacji to uważam, iż jest to wiedza niezbędna.

A co z biegłym j. angielskim? – jeśli developer nie będzie pracował w środowisku międzynarodowym, to uważam, iż stawienie takiego kryterium w ofercie pracy jest powodem braku świetnych kandydatur od osób, które fenomenalnie programują ale mają kłopoty z językiem obcym.

Pamiętajmy, iż odpowiedni wybór programisty jest w wielu projektach jest kluczem do sukcesu, zatem nie śpieszmy się z doborem developera, nie starajmy się na siłę zatrudnić dwóch osób zamiast jednego (co wprowadzi kolejny kłopot w zarządzaniu) oraz starajmy się dawać szansę młodym, ambitnym adeptom polskich studiów informatycznych.

Tomasz Toboła
[email protected]

Contact Us