Panuje powszechna opinia, że programista, w tym przypadku Junior Java Developer nie robi nic innego jak tylko siedzi przed komputerem i pisze kod, ale w większości przypadków tak nie jest. Z mojego doświadczenia wynika, że 30 procent czasu, to samo kodowanie, a 70 procent czasu, to komunikacja z innymi osobami w zespole i próba zrozumienia tego, co musimy przedstawić w postaci kodu języka Java. Dobra komunikacja i ścisła współpraca z innymi członkami zespołu jest moim zdaniem takim samym wyznacznikiem dobrego programisty jak jakość jego kodu. Dodatkowo dawno już minęły czasy, kiedy programista był postrzegany jako odludek pracujący w piwnicy.

Współpraca z innymi osobami w zespole nie oznacza, że nie ma zadań, które wymagają indywidualnej pracy. Każde omówione zadanie do wykonania jest później realizowane indywidualnie przez programistę. Programista musi równoważyć komunikację w zespole z indywidualną pracą nad tworzonym kodem, inaczej może doprowadzić do sytuacji, w której nie wystarczy mu czasu na pisanie fragmentu oprogramowania, który zadeklarował, że napisze.

Pracodawcy wymagają umiejętności miękkich takich jak komunikacja w zespole i asertywność, na równi z wiedzą techniczną. Obecnie programista bierze bezpośredni udział w tworzeniu oprogramowania, głównie za sprawą zwinnych metodyk wytwarzania oprogramowania, które „[…] dużą wagę przywiązują do bezpośredniej komunikacji między członkami zespołu […]”, „Członkowie zespołu biorą odpowiedzialność za zadania postawione w każdej iteracji. Sami decydują jak osiągnąć postawione cele.”. Z tego jasno i wyraźnie wynika jak istotne są umiejętności miękkie.

Wiedza techniczna, tzw. umiejętności twarde są niezbędne dla każdego Junior Java Developer’a. Osoby starające się o stanowisko młodszego programisty Java często nie zdają sobie sprawy z tego, że sam język Java nie wystarczy, szerzej piszę o tym w artykule Czy sam język Java wystarczy? Rozszerzając wspomniany artykuł, każdy programista musi mieć minimalną wiedzę na temat systemów operacyjnych, sieci komputerowych, znać i rozumieć, np. wielowątkowość, system plików, adres IP, port itp..

Tworzone obecnie oprogramowanie działa również w chmurze, czyli jako systemy rozproszone, gdzie komunikacja między różnymi częściami oprogramowania odbywa się przez internet, tym samym niezbędna jest znajomość sieci komputerowych. Nawet „starsze” oprogramowanie komunikuje się przez sieć, np. serwer aplikacji z bazą danych, można uzyskać, to na jednym komputerze, ale niezbędna będzie wiedza z zakresu systemów operacyjnych oraz sieci komputerowych. Trzeba będzie zainstalować i skonfigurować serwery, np. www, bazy danych.

Zapraszam do regularnego odwiedzania mojej strony, będą pojawiać się kolejne artykuły oraz do kontaktu przez email kontakt(at)juniorjavadeveloper.pl.