Jak zostać niezastąpionym programistą .NET?

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ę ?)
  • 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.
  • 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.

 

 

14 przemyśleń nt. „Jak zostać niezastąpionym programistą .NET?

  1. W koncu ktos podkreslil jak wazna jest wiedza biznesowa. Ja mozliwosc poznawania domeny klienta traktuje jako najwieksza zalete naszego zawodu! Moge pisac kod i dowiadywac sie jak dziala swiat finansow, moge pisac kod i dowiadywac sie o sposobie leczenia chorob genetycznych czy tez moge pisac kod i wiedziec jak zbudowane sa potezne systemy rezerwacji czy jakie sa dlugi obywateli.

    Oczywisice na kazdy musi to robic i lubiec, potrzebni sa klepacze kodu ktorych nie zagnie zaden problem inzynieryjny jak i potrzebni sa osoby zainteresowane biznesem. Jest miejsce dla kazdego, hurraaa!

    1. Hej, dzięki na komentarz. Faktycznie nie pomyślałem sobie w ten sposób, że w sumie każdy programista pracuje w innym biznesie i może dzięki temu poszerzać horyzonty wiedzy.

    2. Nie mozna byc dobrym devem bez znajomosci domeny, tbh to chyba najcenniejsza wiedza i najbardziej odporna na starzenie sie. Klepanie kody bardzo szykbo traci na wartosci a umiejetnosci miekkie + wiedza biznesowa pozostaje na lata.

      BTW: Longer czy ty czasem nie grales w ET ? :)

  2. Ja znam inna definicje „programisty niedozastapienia”.
    Jest to negatywne okreslenie programisty, ktory koduje w taki sposob, ze nikt inny nie jest pozniej w stanie tego utrzymac po nim. Od razu mi sie to skojarzylo gdy przeczytalem tytul posta =]

    Znam firmy, ktore utrzymywaly programistow tylko dlatego, ze nikt inny nie zrozumial co napisali i jak to dziala.

    1. „Kod spaghetti” jednym słowem. Ale na to ma nie tylko programista wpływ ale i też kultura firmy.

  3. „Jak zostać niezastąpionym programistą .NET?”
    Otworzyć 1-osobową działalność gospodarczą ?! :) Taki drobny żart.
    Teraz w temacie:
    Wszystkie Twoje warianty są słuszne, natomiast dla mnie zabrakło czegoś 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ę ?) – Twoje zwolnienie się oddala :) 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.
    – Dla mnie osobiście od czytania własnego kodu źródłowego (wariant 3), ważniejsze jest 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ć :)

    Dobry wpis, czekam na kolejne.

  4. Słuszne wnioski. Łatwo znaleźć osobę, która będzie obeznana z technologiami, ale za to wdrożenie ją w proces biznesowy może zająć trochę czasu. Szczególnie jeśli ktoś jest jednym programistą w małym projekcie, to będzie bardziej „niezastąpiony”. Zamiast słowa „niezastąpiony” użyłbym „wartościowy” :) Nie można zapominać o własnych celach zawodowych, które bardzo często są przeciwne do pracodawcy. Dążenie do bycia niezastąpionym, może spowodować że wpadniemy w dużą pułapkę. Może się nagle okazać, że pracując sami, nie uczymy się niczego nowego. Nie zmieniając jakiegoś framework’a, spowoduje że zostaniemy w tyle itp. Myślę, że trzeba być ostrożnym. Z jednej strony należy pracować tak, aby firma była zadowolona, bo w końcu za to nas wynagradza. Z drugiej, nigdy nie można zapominać o własnych celach :)

    Btw, nie znalazłem na blogu kontaktu do Ciebie (e-mail, formularz).

    1. Hej dzięki za cenny komentarz. Kontakt do mnie się pojawi na blogu a na teraz to przemekword (at) gmail.com. Serdecznie zapraszam!

  5. Do wymiaru 1 dodalbym tez znajomosc innych platform i jezykow. Bedziesz lepszym specjalistom jezeli znasz wiecej podejsc.

    Do Wymiaru 2 dodalbym tez umiejetnosci miekie takie jak komunikacja, zarzadzanie czasem, zdolnosc motywacji wlasnej osoby, negocjacje etc.

    Wg mnie wymiary ktore wymieniles nie spowoduja ze bedziesz niezastąpionym ale bedziesz po prostu dobrym programistom. Kazdego pracownika da sie zastapic, kwestia tylko ile to bedzie kosztowac.

    „Podsumowując być niezastąpionym znaczy posiadać dużą wiedzę na temat tego gdzie pracujemy. ” – bycie niezastąpionym to wg mnie zle podejscie. Czy to ze bedziesz niezastąpiony to dla twojego pracodwacy dobrze czy zle ? Raczej zle prawda ? Bedzie na twojej lasce i nie bedzie mogl cie zwolnic jak przyjda gorsze czasy i potrzeba bedzie zredukowac twoj etat. Pracodawca to twoj partner, rownorzedny partner. Lepiej zeby traktowal cie jako swietnego pracownika niz kogos na kogo jest skazany :) Dlatego jesli chcesz byc naprawde swietnym specjalistom to tworz takie oprogramowanie do ktorego utrzymania nie bedziesz w ogole potrzebny a zastapienie cie bedzie bardzo latwe.

    http://en.wikipedia.org/wiki/Bus_factor

    Wg mnie jest to obowiazek kazdego developera. W wielu firmach sa developerzy ktorych nie da sie zastapic. Osiagaja oni to tworzac kod spaghetti zrozumialy tylko dla nich. Buduja sobie swoj wlasny fort i okopy :)

    1. Dzięki za cenne uwagi. Cześć z nich umieściłem w poście. Jeśli chodzi o pisanie dobrego kodu, to czasem mam wrażenie, że jak mój kod nie generuje błędów to nikt o nim nie wie, przez co staje się to mało zauważalne. Gdy dochodzi do jakiś zwolnień (powiedzmy) to potem się jakiś dyrektor pyta co On właściwie robi? No i nikt nie wie, nikt nie słyszał o mnie, bo nie było problemów.

      A w Polsce raczej jeszcze myśli się, że jak nie ma błędów to mało robi. Jeszcze nie znam złotego środka, jak to pogodzić.

      1. To ze ktos nie potrafi w twojej firmie docenic dobrego kodu to juz problem twojej firmy. Nie przejmuj sie tym, rozwijaj sie i kiedys znajdziesz miejsce gdzie to docenia.

        Pamietaj jednak ze trzeba tworzyc soft „Good Enough” i potrzebujesz troche lat doswiadczenia zeby zrozumiec jakie rozwiazanie jest „Good Enough”. To wszystko zalezy od kontekstu, projektu, sytuacji. Tworzenie nadmiarowego rozwiazania z super duper architektura i bajerami nieadekwatynymi do sytuacji + bez wyrazniej granicy koszt rozwiazania / a zysk z niego, jest tak samo zle jak pisanie kodu spaghetti.

        Co do „Nikt o mnie nie wie”. Przykro mi to powiedziec ale dzial IT w firmach ktore nie sa stricte IT jest traktowany czesto po macoszemu. Nie wazne jest jaki kod tworzysz ale jaki projekt realizujesz i kto o nim wie. Ciekawe projekty generujacy niezle zyski przyniosa ci wiecej plusow. Poza tym musisz sam nauczyc sie chwalic. Jako Polacy mamy z tym powazny problem bo kulturowo chwalenie sie jest postrzegane bardzo negatywnie, a nie powinno i o swoich malych sukcesach trzeba mowic i przypominac :)

        Rozwijaj sie rozwijaj, ucz sie i pamietaj ze jak przerosniesz organizacje to czas na zmiany i szukaj lepszego miejsca pracy. Lojalny badz tylko dla lojalnych pracodawcow ktorzy o ciebie dbaja i chca dla ciebie jak najlepiej. Nie przejmuj sie btw latka job hoppera, zmienialem firmy raz do roku i nie zaszkodzilo to mojej karierze.

        Jako uzupelnienie – http://vannevar.blogspot.co.uk/2009/01/riding-sigmoid-curve.html

Możliwość komentowania jest wyłączona.