Zapraszamy do zapoznania się raportem jaki powstał po przeprowadzeniu przez firmę CTS Customized Training Solutions badania, którego celem jest opracowanie DNA programisty, czyli znalezienie odpowiedzi na temat tego, jakie są najważniejsze cechy i umiejętności dobrego programisty.
Na pytanie dotyczące tego jakich umiejętności twardych u programisty szukają rekruterzy prawie 95% respondentów w pierwszej kolejności wymieniło kwestie związane ze znajomością nowych technologii. Na drugim i kolejnym miejscu znalazła się znajomość kilku języków oprogramowania a także umiejętności analityczne.
Natomiast w przypadku umiejętności miękkich 60% respondentów wymieniło na pierwszym miejscu pasję programowania, a w drugiej kolejności zdolność komunikacji i kreatywność.
Zdecydowana większość respondentów stwierdziła iż dobry programista nie musi posiadać certyfikatów potwierdzających kwalifikacje, a także iż taką osobę poznaje się przede wszystkich po efektach podejmowanych przez niego decyzji. Jednakże z drugiej strony w przypadku procesu rekrutacji prawie 60% odpowiedzi twierdziło iż certyfikaty są ważne.
Na pytanie jakie cechy/umiejętności ogólne są wymagane i niezbędne u programisty średnio co trzeci respondent wybierał odpowiedź: znajomość wzorców projektowych, znajomość systemów kontroli wersji a także debugowanie kodu.
Co to znaczy być dobrym programistą ? Na to pytanie respondenci odpowiadali różnie. Jednakże przewija się w odpowiedziach obraz programisty: dotrzymującego terminów, tworzącego poprawny nie zawierający błędów kod, umiejącego rozwiązywać problemy, postępujący zgodnie z wymaganiami klienta i kreatywny.
Dobry programista dla 85% respondentów to osoba dobrze znająca matematykę, wykorzystująca różnego rodzaju narzędzia (w tym i płatne) do realizacji swoich zadań, analizująca kod innych osób (np. projektów open source) w celu nauki, a także powinien znać i wykorzystywać różnego rodzaju narzędzia (w tym i płatne) do realizacji swoich zadań.
Dobry programista najwięcej czasu w pracy poświęca w kolejności: na tworzenie kodu, rozwoju kodu ? refactoring, przebudowę kodu, wykorzystanie wzorców projektowych.
Prawie 50% respondentów wśród najważniejszych cech pracodawców, które skłaniają programistę do pracy u niego wymieniło kwestie związane z wykorzystywaniem najnowszych technologii, na drugim miejscu znalazł się elastyczny czas pracy i dostęp do płatnych narzędzi.
Na pytanie dotyczące tego, czy programista powinien być odpowiedzialny tylko za mały fragment aplikacji (np. logikę biznesową, warstwę dostępu do danych), czy jednak powinien być odpowiedzialny za większy fragment aplikacji rozkład odpowiedzi był pół na pół. Połowa respondentów odpowiedziała tak, a druga nie.
Na koniec ankiety respondenci zostali poproszeni o wymienienie konkretnych twardych obszarów umiejętności niezależnych od technologii które każdy dobry programista powinien posiadać. Wśród najczęstszych odpowiedzi padały takie umiejętności jak: umiejętności analityczne, wzorce projektowe, czytanie kodu, znajomość baz danych, dokładność i zarządzanie projektami.
Poniżej przedstawiamy rozmowę z Panem Danielem Plawgo ? trenerem w firmie Customized Training Solutions www.cts.com.pl a także programistą/konsultantem zaangażowanym w różne projekty programistyczne.
Od początku roku firma CTS prowadziła badanie, którego celem było opracowanie DNA programisty, czyli znalezienie odpowiedzi na temat tego, jakie są najważniejsze cechy i umiejętności dobrego programisty. Czy może Pan określić jakie trzy najważniejsze według Pana cechy jakie powinien posiadać dobry programista, i dlaczego właśnie te cechy są tak ważne.
Myślę, że najważniejszą cechą dobrego programisty to łatwość (i bezproblemowość) komunikacji z innymi członkami zespołu. Nie ma nic gorszego jak programista idący ?pod prąd? całego zespołu, który obniża morale osób oraz spowalnia proces wytwarzania oprogramowania. Do tego idealnie jak chciał się ciągle rozwijać i zastanawiał się, czy to co zrobił można zrobić lepiej, szybciej z wykorzystaniem jakiegoś nowego rozwiązania (niestety na rynku jest duża liczba programistów, którzy programują w identyczny sposób jaki kilka lat temu kiedy zaczynali przygodę z programowanie). Myślę, że te dwie cechy są najistotniejsze i ich przede wszystkim szukam u osób, których mam przyjemność rekrutować.
Dziękuję. Zastanawia mnie także fakt, czy do każdego projektu wymagane są inne cechy i dobry programista wybrany do projektu A nie będzie już tak dobry przy projekcie B.
Dobry programista odnajdzie się w każdym projekcie, ponieważ dzięki dobrej komunikacji z członkami zespołu dość szybko dowie się, co dzieje się w projekcie oraz dlaczego. Natomiast chęć rozwoju spowoduje, że równie szybko uzupełni braki potrzebnej wiedzy w danym projekcie. Oczywiście zakładam, że projekty są zbliżone do obszaru wiedzy programisty i nie musi on uczyć się od zera technologii wykorzystywanych w projekcie, bo wtedy faktycznie może się okazać, że programista może nie być dobrą osobą do takiego projektu.
Proszę opowiedzieć z Pana doświadczenia jakie cechy są najczęściej oceniane przez działy HR w procesie rekrutacji a jakie liczą się w przypadku pracy w zespole ?
W procesie rekrutacji na ogół ocenie się przede wszystkim wiedzę techniczną programisty, czy ma ją wystarczającą, aby móc rozwijać określony rodzaj oprogramowania. Niestety rzadziej (co bardzo często jest wręcz niemożliwe) nie ocenia się umiejętności pracy w zespole (poza znajomością narzędzi w stylu systemów kontroli wersji, systemu zarządzania zadaniami/bugami) a jak wspomniałem wcześniej dobra współpraca zespołu do podstawowy krok do sukcesu.
Na koniec proszę nam jeszcze opowiedzieć czy cechy te można rozwijać, a jeżeli tak, to jaki jest na to najlepszy sposób.
Jak większość cech jesteśmy w stanie je rozwijać i należy głównie określić, co musimy poprawić. A następnie ciężko pracować nad poprawą tego. Co jakiś czas wracam do tego co robiłem rok wcześniej i zastanawiam się jak dany element zrobiłbym teraz. Jeśli okazało by się, że dany kawałek kodu lub problem w pracy zespołu rozwiązałbym tak samo, jest to dla mnie sygnał, że w danej dziedzinie w ciągu roku nie rozwinąłem się i należy nad tym w najbliższym czasie popracować.