Gdy zaczynałem pracę, jako programista cieszyłem się jak dziecko, gdy mogłem 8 godzin siedzieć i programować. Robiłem to, co lubiłem i jeszcze mi sporo płacili. Programowałem szybko, solidnie i byłem rzemieślnikiem. Unikałem jak ognia zbyt dużego zaangażowania w biznes, który oprogramowałem i skupiałem się na pojedynczych zadaniach. To był błąd! Poniżej zebrałem to, co w pracy programisty powinno być najważniejsze, to, co sprawa, że z łatwo zastępowanego programisty robimy się prawdziwi specjalistami, o których walczą pracodawcy.
Praca programisty, którego wartość sama w sobie opiera się tylko na tym, że umie korzystać w trudnych technologii i magicznie nazwanych framework-ów nie jest szczytem marzeń pracodawcy. Takiego programistę można łato zastąpić.
To, co naprawdę wyróżnia świetnego programistę to praca nad, jak to nazwałem, swoim 3 wymiarowym rozwojem.
Wymiar 1 – programowanie
To wymiar, który każdy z Nas powinien uwielbiać. Praca w tym wymiarze dotyczy rozwoju wiedzy o języku programowania, w którym pracujemy oraz technik programowania(np.: wzorce projektowe). Rozwoju wiedzy o dostępnych narzędziach i dostępnych użytecznych bibliotekach. Dodatkowo rozwój powinien również dotyczyć koncepcji językowych wspólnych dla danej dziedziny języków. Nie chodzi mi tu o składnie, ale o wspólne podejścia – typu w Javie i C# nie ma dziedziczenia wielokrotnego.
Wymiar 2 środowisko
W tym wymiarze chodzi o rozwój swojej wiedzy na temat środowiska, na którym działają programy napisane przez Nas. Rozwój wiedzy teoretycznej o systemach jak i praktycznych umiejętności konfiguracji oraz zarządzania nimi. Warto wiedzieć, na jakich serwerach działają nasze aplikacje, jakie systemy operacyjne są tam zainstalowane.
Warto również wiedzieć i korzystać z tej wiedzy, kto używa naszego oprogramowania. Należy podjąć wysiłek poszerzenia wiedzy na temat narzędzi używanych w danej pracy na przykład głupia wiedza na temat Excela czy Outlooka. Wydaje się to dość oczywiste, ale często widzę specjalistów informatyków, którzy używają Office jak by wyszli właśnie z prehistorycznej jaskini.
Kolejnym polem rozwoju powinna być wiedza na temat biznesu, w którym pracujemy. Często ta część jest pomijana przez programistów, którzy skupiają się na powierzonym zadaniu i zamykają się w swojej skorupie Visual Studio. Nie zapominajmy, że jeśli nie chcemy być klepaczami kodu to taka wiedza pozwala wykorzystać nasze intelektualne możliwości w szerszej perspektywie, za co pracodawca będzie Nam bardzo wdzięczny.
Wymiar 3 kody źródłowe:
Po miesiącach spędzonych z kodami, które utrzymujemy wiemy, co jest w kodach jak działają i gdzie mają błędy lub słabości. Ale to nie wystarczy. Najlepsi programiści czerpią wiedzę z kodów historycznych. Dzięki przeglądaniu takich kodów możemy nie tylko lepiej zrozumieć nie, które części aplikacji, ale również dowiedzieć się gdzie w kodach mogą czaić się inne niebezpieczeństwa. Dodatkowo dzięki takiej wiedzy Nasz kod jest dojrzalszy i stabilniejszy.
Rozwój w tych 3 wymiarach powinien być zrównoważony. Jeśli jesteśmy dobrzy w jednym wymiarze to postarajmy się podciągnąć ten, w, którym jesteśmy najgorsi. Dzięki takiemu rozwojowi Nasza osoba, stanie się cenniejsza dla firmy. Tak naprawdę na to czy ktoś jest dobry wpływa w 70% jego ogólna wiedza o firmie a nie specjalistyczna wiedza z wąskiego zakresu. Łatwo sobie wyobrazić „głównego eksperta specjalistę”, który wymyśla rozwiązania zupełnie niepasujące do realiów firmy a studenta, który po rozmowie o tym, co kto potrzebuje, produkuje oprogramowanie dokładnie dopasowane do potrzeb.
Podsumowując być niezastąpionym znaczy posiadać dużą wiedzę na temat tego gdzie pracujemy. Wiedzę na temat środowiska programistycznego jak i biznesowego. Osobiście lubię programować samotnie po nocach zamknięty w swoim świecie. Jednak w pracy skupiam się na poszerzaniu wiedzy w tych 3 wymiarach. Zwracam szczególną uwagę na biznes dzięki temu czasem naprawdę piszę mniej kodu a kod ten jest bardziej sensowny i zrozumiały.
[UPDATE 2 lutego 2014] pojawiło się wiele ciekawych i dobrze uzupełniających wyżej wymienione wymiary komentarzy.
Tak jak pisał „oos”. Ważne ale w swoim rozwoju nie zapominać o:
Pracy grupowej (pracodawca, chce aby grupa się rozwijała; osoby z większa wiedzą powinny być mentorami dla ‚młodych wilków’). Jeżeli oprócz samych umiejętności programowania, pełnisz ważną rolę w grupie (być może potrafisz dobrze przekazywać wiedzę ?)
(pracodawca, chce aby grupa się rozwijała; osoby z większa wiedzą powinny być mentorami dla ‚młodych wilków’). Jeżeli oprócz samych umiejętności programowania, pełnisz ważną rolę w grupie (być może potrafisz dobrze przekazywać wiedzę ?) Komunikacji – Jeżeli jesteś zupełnie nie komunikatywną osobą, to prędzej czy później grupa Ci ‚odjedzie’ i będziesz pierwszym do zwolnienia. (znam wiele takich przypadków). Pracujmy nad komunikacją z innymi członkami zespołu, starajmy się aby dla nich i dla nas praca była ‚rozwojowa’ i przyjemna. To absolutne minimum.
– Jeżeli jesteś zupełnie nie komunikatywną osobą, to prędzej czy później grupa Ci ‚odjedzie’ i będziesz pierwszym do zwolnienia. (znam wiele takich przypadków). Pracujmy nad komunikacją z innymi członkami zespołu, starajmy się aby dla nich i dla nas praca była ‚rozwojowa’ i przyjemna. To absolutne minimum. Ważne jest również czytanie kodu innych. Programista nigdy nie wykryje w swoim kodzie 100 % błędów, uchybień, łamań standardów etc. Dlatego większą wiedzę czerpie czytając kod innych i udostępniając swój kod innym. Druga ‚ukryta’ ale bardzo istotna tutaj kwestia, to to że dzięki temu potrafi później z łatwością zastąpić odchodzącą osobę. Zna jej warsztat, tak bym to ujął. Kolejny plus dla programisty, aby go nie zwolnić :)
Za to Michal Franc zwraca uwagę i słusznie na takie kwestie jak:
Do wymiaru 1 dodałbym tez znajomość innych platform i jeżyków. Będziesz lepszym specjalistom jeżeli znasz więcej podejść.
Do Wymiaru 2 dodałbym tez umiejętności miękkie takie jak komunikacja, zarządzanie czasem, zdolność motywacji własnej osoby, negocjacje etc.
Wszystkim dziękuje za uwagi. Razem nauczymy się szybciej i więcej.
Leave a Comment