Nauka programowania to temat na wpis numer 8. Dziś kolejny raz coś nietechnicznego. Poprzedni odnosił się do zarządzania czasem, ten natomiast jest na temat tego, czy i ewentualnie w jaki sposób programista powinien się uczyć.

Temat nauki był na różnym etapie mojego życia mniej lub bardziej poważnie traktowany. Za czasów szkoły podstawowej nauka była na pierwszym miejscu, szkoła średnia natomiast to czas buntu i trudnych chwil. Studia to powrót do edukacji na 200% i tak mam do dziś. Mimo tego edukacja szkolna zawsze wydawała mi się zbędna i szedłem własnymi ścieżkami. Cały proces mojej edukacji przedstawię poniżej.

Nauka jest jak niezmierne morze. Im więcej jej pijesz, tym bardziej jesteś spragniony.

Stefan Żeromski

Na wstępie zaznaczam, że naukę traktuję poważnie, bezkompromisowe i często odbiega od edukacji szkolnej lub podczas studiów. Przedstawię opis w formie retrospekcji i omówię moje podejście do nauki i sposoby w jaki zdobywałem wiedzę na przestrzeni kilku ostatnich lat.

Na początku był chaos

Napisałem wyżej,  że nie uznaję kompromisów i w stosunku do siebie jestem bardzo wymagający. Śmiało mogę powiedzieć, że od 2013 roku, czyli od rozpoczęcia pracy zawodowej uczę się niemal codziennie. Nauka programowania, aspekty biznesowe takie jak zarządzanie sobą w czasie, motywacja, systematyczność czy walka ze złymi nawykami a kończąc na szeroko pojętym marketingu.

Przed rozpoczęciem kariery developera nie było tak kolorowo. Zawsze interesowałem się zagadnieniami technicznymi i byłem w nich dość dobry w szkole. Totalnie jednak odpuszczałem przedmioty humanistyczne. Był to swojego rodzaju bunt, który do dziś we mnie siedzi. Dużo zmieniłbym w temacie edukacji szkolnej ale nie jest mi to dane.

Pierwszy komputer

Mój pierwszy sprzęt otrzymałem od rodziców gdy miałem 13 lat. Nie oznaczało to wcale, że od razu rozpocząłem programować. Pierwsze lata marnowałem grając w gry i był to mój duży problem aż do 19 roku życia. Przełamanie nastąpiło w momencie wyjazdu na studia do Wrocławia. Mimo problemów z uzależnieniem od gier komputerowych ukończyłem jedną z najbardziej prestiżowych szkół technicznych w Polsce – radomskiego Elektronika. Szkoła rok do roku wypada bardzo dobrze w rankingach zarówno pod względem ogólnego poziomu nauczania jak i wyników egzaminów maturalnych i zawodowych.

Poważne programowanie zagościło w moim życiu dopiero podczas pierwszego roku studiów na Politechnice Wrocławskiej na kierunku Elektronika i Telekomunikacja. Zacząłem tam programować w języku C++. Kolejny raz obudziła się we mnie buntownicza natura i po pierwszym roku studiów dziennych wróciłem do Radomia i podpisałem umowę z firmą zajmującą się rozwojem i wdrażaniem systemu ERP. Byłem wtedy przed 21 rokiem życia i poczułem, że z chaosu wyłania się piękna perspektywa.

Początki pracy zawodowej

Pierwsza poważna praca na pełen etat była powiązana z ogromem informacji, które musiałem przyswoić. Zaczynałem jako programista bazodanowy, by następnie zostać po roku programistą .NET. Na tym etapie popełniłem jeden z pierwszych błędów dotyczących nauki programowania.

Z racji tego, że czytam dużo książek i od ponad 10 lat średnia roczna nie schodzi poniżej 30 książek podszedłem do tematu źle. Nauka programowania w sposób teoretyczny na początku nie jest dobra. Do godziny 16 przebywałem w biurze a po pracy siedziałem w książkach i czytałem informacje na wszystkie możliwe tematy techniczne – od SQL, programowania obiektowego, wzorców projektowych po algorytmy. W tym czasie zafascynowałem się też magazynem Programista, którego do dnia dzisiejszego prenumeruję (mam wszystkie numery od roku 2012). Zasadniczo podejście wydaje się dobre ale nie w początkowej fazie pracy zawodowej. Oczywiście miałem podstawową wiedzę, ponieważ rok spędzony we Wrocławiu i Nauka programowania w C++ na własną rękę dały mi dość szeroki pogląd na programowanie. Jednak jako programista zajmujący się głównie SQL poczułem się przytłoczony ilością informacji, które zawarte były w publikacjach. Po takim zderzeniu ze ścianą, po roku miałem dość i poszedłem na miesięczny urlop. Po tej przerwie w 2015 roku wróciłem do rozmów z pracodawcą na temat przyszłości.  Spowodowało to przerzucenie mnie do projektu obejmującego oprócz SQL również język C# i Framework .NET – z tymi też technologiami pracuję do dziś.

Drugi rok pracy i zmiana pracodawcy

Miesięczna przerwa zrobiła mi dobrze, dodatkowo praca z nowym dla mnie językiem spowodowała przypływ nowej motywacja. Postanowiłem nie popełnić błędu z przeszłości i odstawiłem ciężkie książki techniczne (okazało się, że tylko na pewien czas). Zacząłem wtedy śledzić rynek programistów w Polsce (między innymi Macieja Aniserowicza i Gynvaela Coldwinda). Czytanie blogów technicznych w powiązaniu z darmowymi kursami na YouTube były dużo bardziej efektywne niż czytanie książek.

Zdobyta wiedza i podniesiona pewność siebie zaowocowała w czerwcu 2016 zmianą pracodawcy i pracą nad dedykowanym systemem CRM. Tam nastąpił u mnie też przełom dotyczący umiejętności miękkich. Rozpocząłem pracę bliżej biznesu, w grupie programistów i analityków. Było to nowe doświadczenie ale spowodowało, że w mojej własnej ocenie stałem się bardziej kompletnym developerem. Na początku 2017 roku powrócił temat książek, zarówno z dziedzin miękkich jak i technicznych. Nauczony poprzednimi doświadczeniami postanowiłem czytać jedynie publikacje pokrywające się z tym, co aktualnie zajmuje mi czas zawodowo. Zacząłem zgłębiać wiedzę z języka C# oraz technologii webowych, z naciskiem na JavaScript, ponieważ projekt CRM wymagał pracy full stack zarówno po stronie serwera jak i przeglądarki.

Uzbrojony w pomoce dydaktyczne dobrane do mojego poziomu, kursy wideo oraz zapatrzony w autorytety ruszyłem w stronę biznesu.

Własna firma

Po ponad roku pracy nad systemem CRM, w połowie roku 2017 padł pomysł założenia firmy zajmującej się programowaniem i marketingiem. Tu popełniłem kolejny błąd edukacyjny, tym razem dotyczący aspektów biznesowych. O ile technicznie rozwijałem się dobrze tak pod kątem biznesu postawiłem na złych mentorów od których czerpałem wraz ze wspólnikiem Michałem wiedzę. Model, który prezentowali i którego my się uczyliśmy był nieadekwatny do profilu naszej działalności. Oglądanie materiałów wideo, czytanie polecanych książek i kupowanie kursów tych osób odbiło się na mnie negatywnie. Na plus zaliczam jedynie poznanie siły networkingu i spotkań biznesowych.

Model jaki przyjęliśmy spowodował gwałtowny rozrost firmy, duże koszty operacyjne i chaos. Oczywiście koniec końców pożar ugasiliśmy, zmieniliśmy model biznesowy i zdobyliśmy nagrodę Granitowego Tulipana za najszybciej rozwijającą się firmę w regionie radomskim. Szybkość rozwoju firmy sprawiła, że zacząłem odrywać się od programowania na rzecz zarządzania firmą. Postanowiłem walczyć z tym jeszcze intensywniejszym czytaniem i analizowaniem książek technicznych oraz rozwiązywaniem problemów na portalu SPOJ. Uważam, że jest to idealne miejsce do szlifowania umiejętności programistycznych i rozwiązuję tam zadania aż do dziś.

Wszystko to umocniło mój charakter i pewność siebie, dzięki czemu dziś mogę spełniać swoje marzenie i prowadzić tego bloga. Czas prowadzenia firmy popchnął mnie również w stronę przekazywania wiedzy innym i dyskutowania nad problemami programistycznymi w większym gronie. To spowodowało, że podjąłem decyzję wyjazdu do Warszawy i współpracy z tamtejszą firmą tworzącą rozwiązania dla biznesu.

Wyjazd do Warszawy

Rok 2019 rozpocząłem z przytupem. Dwa ostatnie miesiące 2018 roku przygotowywałem się do współpracy z firmą, która obdarzyła mnie zaufaniem i przydzieliła mnie do projektu bankowego. Intensywne czytanie książek, praca nad nowymi problemami technicznymi oraz dołączenie do platformy Meetup spowodowało kilka drobnych sukcesów w projekcie oraz umocnienie współpracy nowym kontraktem. Sytuacja zawodowa spowodowała, że w czerwcu podjąłem decyzję – zakładam bloga.

Decyzja ta była spowodowana moimi poprzednimi doświadczeniami. Doszedłem do momentu, że nagromadziłem dość duże pokłady wiedzy i chciałbym ją uporządkować oraz przekazywać innym. Skorzystałem też z kilku płatnych kursów na platformie Udemy (między innymi Python dla Zaawansowanych, Digital Marketing oraz Montowanie wideo, ponieważ moim celem na 2020 rok jest między innymi uruchomienie kanału na YT).

Nauka programowania – Podsumowanie

Uff retrospekcja to temat ciężki. Odpowiem teraz na pytanie tytułowe, czy i jak programista powinien się uczyć?

Uważam, że nauka programowania u developera musi być procesem ciągłym. Nie ma innej możliwości co do pogłębiania wiedzy tak, by być dobrym programistą. Nie ma wyjątków!

Analizując moją opowieść mogę tez odpowiedzieć w paru punktach na pytanie w jaki sposób można się uczyć programowania (w zasadzie można w ten sposób uczyć się wielu innych dziedzin):

  1. Praktyka zawodowa – nic tak nie uczy jak praca na etacie i projekty wdrażane na produkcję.
  2. Kursy wideo – jest wiele ciekawych platform, gdzie możesz zgłębiać swoją wiedzę z niemal każdej technicznej dziedziny.
  3. Czytanie – ale mądre, dostosowane do poziomu i wpadające w zakres, którym na co dzień się zajmujesz. Nie czytaj publikacji ponad Twój poziom i nie z zakresu.
  4. Znalezienie mentorów i śledzenie ich poczynań – ważne by osoby te były wiarygodne i dopasowane do charakteru Twojej pracy. Nie popełnij mojego błędu i nie pozwól sobie zaszkodzić.
  5. Networking – uczęszczaj na spotkania techniczne. W Warszawie takich spotkań jest kilka tygodniowo i większość jest darmowych. Możesz tam poznać nowe osoby i nauczyć się ciekawych rzeczy w przystępny sposób. Do tego zjesz dobrą pizzę i wypijesz darmowe piwo :).
  6. Rozwiązuj problemy innych – idealne do tego są platformy typu Sphere Online Judge (SPOJ). Oczywiście można do tego dodać fora internetowe ale ja osobiście nigdy tego nie praktykowałem.
  7. Ucz innych – gdy już będziesz doświadczony postaraj się znaleźć niszę i uczyć innych programistów.

Na koniec

Kolejność nie jest przypadkowa, w moim przypadku tak aktualnie wygląda proces nauczania. Przede wszystkim chcę zaznaczyć, że u mnie działa. Nie koniecznie musi tak być u Ciebie. Na koniec dodam coś jeszcze. Od mojego poważnego zaangażowania się w programowanie minęło jakieś 2500 dni (początek 2013 roku) i nie skłamię jeżeli powiem, że uczyłem się niemal codziennie. Zakładam, że 2450 z 2500 dni spędziłem na nauce programowania, poprawianiu umiejętności miękkich i obserwacji innych – lepszych ode mnie. Kolejne 2500 dni zapowiada się jeszcze bardziej pracowite! 🙂

Obserwuj ten proces, bo mam w planach zrobienie czegoś unikatowego.

Dziewiąty wpis będzie dotyczył formatu dat w jednym z zadań na platformie SPOJ.

PS. Będę wdzięczny za komentarze pod tym postem!

PS2. Czeka też na Ciebie prezent. Wystarczy, że zapiszesz się na Newsletter poniżej!

PS3. Dołącz do naszej grupy na Facebook!


Subskrybuj

Zapisz się na Newsletter, odbierz NAGRODĘ w postaci 10 omówionych algorytmów pojawiających się w pytaniach podczas REKRUTACJI.

Dodatkowo otrzymuj co niedzielę informacje na temat nowych wpisów, wiadomości ze świata IT i matematyki oraz ciekawych wydarzeniach. Nie przegap i dołącz już dziś do 597 osób!.
Autor

👨‍💻 .NET and Python programming passionate 🏦 Digtial Banking Solutions 🎓 Student 📊 Psychology 📚 Bookworm 🏠 Warsaw

1 Komentarz

  1. Dziękuję ci Mateusz za podzielenie się swoją historią. Myślę że bardzo dużo już osiągnąłeś. Ja programowaniem zainteresowałem się też gdzieś w 2012 i naprawdę niewiele do tej pory zrobiłem :-p. Grunt żeby być odważnym. Mi zawsze brakowało odwagi do ludzi.

    Chyba większość programistów to introwertycy, jednak teraz wiem że uczenie się i ćwiczenie umiejętności miękkich jest bardzo ważne. Czytam teraz książkę „Sprawny Programista” Jonh-na Sonmez. Zgadzam się z tobą w wielu kwestiach, także w tej że nie powinno się czytać nad wyraz, za bardzo ambitnych lektur.

    Życzę ci powodzenia w twoich przedsięwzięciach. Dziękuję ci za ten wpis na twoim blogu :-).

Napisz komentarz

This site uses Akismet to reduce spam. Learn how your comment data is processed.