alterpage013

autor: Emil Maraszek

Ścieżka rozwoju programisty, czyli jak się efektywnie uczyć aby się nauczyć

zadowolona-z-kodu-programistka
zadowolona-z-kodu-programistka

Gdy rozpoczynałem swoją przygodę z branżą IT w roku 2010 dużo rozmyślałem nad tym jak pokierować i zarazem zaplanować swoją karierę zawodową, aby spełniała moje oczekiwania w przyszłości. Już w początkowej fazie swojej obecności na rynku IT byłem przekonany, iż to właśnie rozwój osobisty będzie pełnił bardzo ważną rolę w karierze programisty. 

Sama konstatacja to jedno, ale wcielenie swoich przemyśleń w życie gdy poziom wyzwań jest tak ogromny, to zupełnie inna sprawa. Bo przecież bycie programistą to nie tylko pisanie kodu. Natomiast rozwój osobisty nie ogranicza się tylko i wyłącznie do czytania książek, czy też oglądania tutoriali. W jakiś sposób trzeba w końcu przekuć wiedzę teoretyczną w wiedzę praktyczną. I tutaj przychodzą nam z pomocą projekty wewnętrzne.

Dlaczego warto tworzyć projekty wewnętrzne?

Powodów dla których warto pracować nad własnymi rozwiązaniami jest bardzo dużo - w zasadzie ile głów tyle pomysłów, a to dlatego ponieważ jest to bardzo indywidualna kwestia. W mojej ocenie istnieją trzy kluczowe powody dla których warto zacząć pracę nad własnymi projektami wewnętrznymi. 

  • Poznanie nowych technologii - nowe technologie to bardzo kontrowersyjny temat w szczególności wśród doświadczonych zespołów programistycznych branży IT. Co prawda odpowiednio użyte potrafią stanowić tak zwany "game changer", lecz niewłaściwie użyte za sprawą między innymi skrócenia etapu poznawczego potrafią doprowadzić do poważnych problemów projektowych. Dlatego też proces wdrożenia nowych technologii do organizacji powinien być przeprowadzony z należytą rozwagą, starannością i dojrzałością! Tutaj z pomocą przychodzą projekty wewnętrzne ponieważ to właśnie przy ich pomocy programiści mogą nauczyć się korzystać z nowych technologii poprzez poznanie ich możliwości, a więc słabych i mocnych stron. Tego rodzaju wiedza rzuca zupełnie nowe światło na całokształt, minimalizując lub całkowicie eliminując potencjalne ryzyka wynikające z błędnych decyzji projektowych. Nie zapominajmy o tym, że to programiści dokonują doboru technologii, stosownych implementacji i to oni ponoszą całkowitą odpowiedzialność za poprawne funkcjonowanie zaimplementowanego oprogramowania w perspektywie długoterminowej. Na koniec to od programistów oraz tego jak dobrze poznali dane rozwiązanie, w dużej mierze zależy sukces lub niepowodzenie całego przedsięwzięcia korzystającego z nowej technologii. Dlatego też wbrew temu, co sądzą programiści bardzo dużo od nich zależy ;) 
Programista pracujący nad stroną internernetową dla jednego z Klientów.
  • Realizacja własnych pomysłów - w pracy nie zawsze zajmujemy się tym czym byśmy w danym momencie chcieli z racji tego, iż większość firm jest wysoce wyspecjalizowana w konkretnych dziedzinach. Taki stan rzeczy sprawia, iż przykładowo firma specjalizująca się w streamingu video nie będzie angażowała swoich zasobów do pracy nad sklepem internetowym ponieważ to nie jej zakres kompetencyjny. Dlatego też gdy chcemy poznać jakąś technologię, która znacznie wykracza poza zakres kompetencyjny naszej specjalizacji zawodowej z pomocą przychodzą nam projekty wewnętrzne. To właśnie przy pomocy tego rodzaju projektów możemy rozwijać się w zupełnie w nowych dziedzinach. 
  • Swoboda projektowa - realizacja projektów komercyjnych zawsze związana jest z jakimiś ograniczeniami, czy to za sprawą ograniczonego budżetu, czasu realizacji, specyfikacji technicznej czy też wybranych technologii. Czasem zachodzi konieczność opracowania lub zweryfikowania rozwiązania, które wymaga swobody projektowej pozbawionej tych wszystkich ograniczeń. W takich przypadkach również z pomocą przychodzą nam projekty wewnętrzne, które umożliwiają zdecydowanie większą swobodę działania w stosunku do projektów komercyjnych. 

Komfortowe środowisko 

Realizacja projektów wewnętrznych w ramach samorozwoju wymaga odpowiedniego przygotowania. Poznawanie nowych rozwiązań to fascynujące zajęcie ale wiąże się z koniecznością spędzania dużej ilości czasu na nieznanych nam technologicznych wodach, a sam proces poznawczy okupiony jest wieloma niepowodzeniami. Dlatego też bardzo ważnd jest, aby już na samym początku zapewnić sobie odpowiednie, komfortowe środowisko. Zadbajmy więc o ergonomiczne krzesło, duże biurko, odpowiednią ilość monitorów, komfortową mysz i klawiaturę, w zależności od stopnia złożoności projektów infrastrukturę sprzętową i usługową oraz oczywiście notes z długopisem na notatki robocze. 

Code review jest bardzo ważnym elementem procesu tworzenia stron internetowych.

Jak zacząć, czyli o definicji celu 

Przede wszystkim rozejrzyjmy się dookoła siebie, spójrzmy na nasz warsztat i zastanówmy się nad tym czy jest coś co chcielibyśmy usprawnić. W poszukiwaniach warto skupić się na stosunkowo niewielkich (przynajmniej na początku) upgrade'ach, aby za szybko się nie zniechęcić. Zanim przejdziemy do rzeczywistej fazy realizacji, warto zadać sobie kilka pytań, które pomogą nam ocenić czy dysponujemy wszystkimi niezbędnymi zdolnościami oraz zasobami do realizacji celu. 

  • Czy do realizacji celu potrzebuje pozyskać nową wiedzę? 

Praca z nowymi, całkowicie nieznanymi nam rozwiązaniami wiąże się z koniecznością pozyskiwania nowej wiedzy. Od tego na jaką formę nauki się zdecydujemy i z jakich materiałów dydaktycznych skorzystamy, w dużej mierze zależy efektywność całego procesu przyswajania wiedzy. Zamiast korzystać z niesprawdzonych rozwiązań powszechnie dostępnych w Internecie, warto rozważyć wykorzystanie tych materiałów dydaktycznych, które społeczność już wykorzystała i oceniła. Tego rodzaju materiały dostępne są w postaci dokumentacji technicznych, książek, kursów czy tutoriali. Taka decyzja z pewnością nam się opłaci i co więcej oszczędzi frustracji oraz wielu dodatkowych godzin spędzonych na testach i poprawkach. 

Kod źródłowy strony internetowej może czasami przerażać, ale wraz z rozwojem kompetencji, programiście łatwiej go ujarzmić.
  • Czy do realizacji celu potrzebne są dodatkowe narzędzia? 

Czasem bywa tak, że na potrzeby osiągnięcia celu warto rozważyć wykorzystanie dodatkowych narzędzi, które zwiększą komfort oraz efektywność pracy. Dobrym przykładem są tutaj wszelkiego rodzaju edytory kodu, graficzne narzędzia do zarządzania strukturą baz danych, oprogramowanie do tworzenia diagramów UML i ERD na potrzeby prac koncepcyjnych oraz inne narzędzia, które poprawiają komfort oraz jakość pracy z daną technologią. Nie zapominajmy, iż nasz komfort jest tutaj najważniejszy bo dzięki niemu proces pozyskiwania nowej wiedzy jest znacznie przyjemniejszy. Jeżeli coś sprawia nam przyjemność to wówczas chętnie do tego wracamy. 

  • Czy do realizacji celu potrzebuje dodatkowych urządzeń lub usług? 

Projekt, projektowi nierówny dlatego już na samym początku warto zastanowić się czy aby na pewno dysponujemy wszystkim tym, co jest nam niezbędne do działania; zarówno w kontekście sprzętu jak i usług. Być może naszym zadaniem jest integracja z API fizycznego urządzenia lub integracja sklepu internetowego z API zewnętrznej, komercyjnej usługi. Niektóre projekty w szczególności te o większym stopniu złożoności wymagają poniesienia pewnych kosztów związanych z zakupem stosownych urządzeń, licencji, subskrypcji itp. To od nas zależy jaką drogę wybierzemy, lecz warto te wszystkie czynniki uwzględnić na samym początku procesu, a nie w trakcie, ponieważ każdy z takich nieprzewidzianych elementów sprawia, iż czas potrzebny na skuteczną implementację ulega znacznemu wydłużeniu. 

Nauka programowania rozwiązań digital, takich jak np. e-commerce to często również praca z notatnikiem.

Od pomysłu do realizacji 

Wszystko zaczyna się w naszych głowach. To pomysł jest iskrą, która potrafi diametralnie odmienić sytuację i sprawić, że to co dotychczas wydawało się niemożliwe staje się możliwe. W pracy programisty również pomysł odgrywa ogromną rolę i ma bezpośrednie przełożenie zarówno na koszt, czas realizacji jak i stabilność długoterminową opracowanego rozwiązania. Najważniejszym etapem prac projektowych w mojej ocenie są prace koncepcyjne oraz planistyczne. To właśnie od jakości wykonanej na tym etapie pracy, w dużej mierze zależy powodzenie całego projektu, pod warunkiem oczywiście, że dysponujemy kompletem informacji na temat przedmiotu prac, który ma zostać wykonany. Dlatego też planując realizację warto podzielić całe zadanie na zbiór mniejszych czynności, które muszą zostać wykonane oraz zaprojektować koncepcyjnie każdą pomniejszą czynność z osobna. Takie podejście pozwoli nam na uzyskanie kontroli nad złożonym procesem oraz uświadomi jaki realnie zakres prac musi zostać wykonany. 

Przeciwności losu

Praca nad własnym warsztatem to nie tylko pasmo sukcesów i droga usłana różami. Nie wszystko to co zaplanowaliśmy uda się zrealizować zgodnie z planem. Na swojej drodze prędzej czy później natrafimy na cały szereg rozwiązań, które będą źle udokumentowane, niestabilne lub całkowicie nieprzydatne. Również nie wszystkie nasze pomysły, decyzje, plany i strategie okażą się trafione. Być może w trakcie prac projektowych pojawią się nowe informacje lub będziemy zmuszeni zatrzymać się na chwilę, zdobyć nową wiedzę, poszukać nowych rozwiązań dla palącego problemu. Skala wyzwań może nas przerosnąć i nie ma w tym nic złego czy zaskakującego.

Bez względu na to jak potoczą się nasze projektowe dokonania bądźmy dla siebie wyrozumiali i pamiętajmy, że jesteśmy tylko ludźmi i mamy swoje ograniczenia. Na wszystko w życiu przyjdzie odpowiedni moment, a jeżeli teraz coś nam nie wychodzi to znaczy, że nie nastał jeszcze odpowiedni czas lub gdzieś popełniamy błąd. W takich sytuacjach warto się zatrzymać, odpocząć i przeanalizować szerzej i na spokojnie problem. Najważniejsze to się nie poddawać! 

W programowaniu rozwiązań internetowych, takich jak np. konkursy czy loterie, zawsze przychodzi moment wytchnienia i satysfakcji.

Dynamiczny rozwój branży IT nadal stawia wiele wyzwań przed programistami, którzy muszą na bieżąco dostosowywać swój zakres wiedzy do zmieniającego się świata. Praca nad własnymi rozwiązaniami między innymi poprzez realizację projektów wewnętrznych jest jedną z najskuteczniejszych form zwiększania swoich kompetencji, które to z kolei mają bezpośrednie przełożenie na atrakcyjność i konkurencyjność na rynku pracy. Dzisiaj z perspektywy czasu jako osoba, która jest również odpowiedzialna za pozyskiwanie nowych członków zespołu uważam, iż prowadzenie rozmowy rekrutacyjnej w oparciu o kontekst projektów wewnętrznych potencjalnego kandydata jest najskuteczniejszą formą weryfikacji, ponieważ pozwala poznać tok myślenia, realne problemy i wyzwania kandydata z którymi borykał się na etapie prac koncepcyjnych, planistycznych jak i implementacyjnych. 

Szkolenia zarówno wewnętrzne jak również zewnętrzne to cenne źródło wiedzy dotyczące również zagadnień cyber bezpieczeństwa.

Decyzja o inwestycji w swój warsztat programistyczny, czyli w wiedzę i umiejętności, to być może jedna z najważniejszych, o ile nie najważniejsza decyzja w karierze zawodowej każdego programisty. Dlatego też zachęcam wszystkich bardzo gorąco do tego, aby przestali się martwić o swoje miejsca pracy oraz globalne zmiany w branży IT i zaczęli aktywnie inwestować w swoje kompetencje, poprzez między innymi realizację projektów wewnętrznych. 

Powodzenia! 

formularz kontaktowy

Jeśli masz jakieś pytania lub chciałbyś zrealizować z nami projekt zapraszamy do kontaktu.

Plik

Informujemy, że Twoje dane osobowe wskazane w wypełnionym formularzu kontaktowym są przetwarzane przez Administratora – spółkę Alterpage sp. z o.o. na podstawie art. 6 ust. 1 lit. f) RODO tj. uzasadnionego interesu Administratora polegającego na nawiązaniu kontaktu i realizacji zgłoszonego przez Ciebie wniosku, zgodnie z jego treścią i zakresem. Szczegółowe informacje dot. przetwarzania danych osobowych znajdują się w Polityce Prywatności.

*

Pola obowiązkowe