Jak zostałem programistą – historia prawdziwa

Od najmłodszych lat interesowałem się komputerami, ale to pewnie dlatego, że swój pierwszy komputer dostałem w wieku 9 lat (2002 rok). Dzięki temu już od najmłodszych lat miałem okazję poznawać możliwości, jakie daje tego typu sprzęt. Oczywiście na samym początku komputer służył przede wszystkim do grania w przeróżne gry. Każdego miesiąca z niecierpliwością czekało się na kolejne wydanie magazynu CD-Action. To były czasy, kiedy dostęp do internetu nie był tak powszechny jak teraz. Pewnie niektórym osobom ciężko to sobie wyobrazić. Zawsze byłem postrzegany jako ten, który zna się na komputerach. Wtedy sprowadzało się do posiadania takich umiejętności jak: utworzenie i wydrukowanie dokumentu, przygotowanie prezentacji, nagranie płyty CD/DVD, instalacja oprogramowania oraz sformatowanie dysku. Naprawdę (kolejność nie jest przypadkowa). Ważnym dla mnie momentem w tamtym czasie było podłączenie internetu radiowego (2006 rok). Wiedziałem przecież, że internet to kopalnia wiedzy i daje nieograniczone możliwości. Miałem dostęp do wszystkich informacji i materiałów na „wyciągnięcie ręki”. Miałem także dostęp do komunikatorów internetowych, serwisów społecznościowych, czy też gier on-line. Nietrudno się domyślić, które aktywności skupiły większość mojego czasu. Niestety interesować się czymś, a robić coś sensownego w tym kierunku to zupełnie dwie różne rzeczy.

Technikum, profil informatyczny …

Nadszedł czas wyboru szkoły średniej (2009 rok). Padło na technikum o profilu informatycznym. W głowie pojawiały się już pierwsze myśli, o tym, żeby zostać informatykiem. Byłem pełen zapału i nadziei na to, że właśnie w tej szkole będę miał świetne warunki do rozwoju i przyswojenia sobie podstaw informatyki, w różnych jej dziedzinach. Niestety, rzeczywistość okazała się zupełnie inna. Trafiłem na wymagającą kadrę nauczycielską z przedmiotów podstawowych i trzeba było poświęcać czas na naukę wszystkiego, tylko nie przedmiotów zawodowych. Zresztą poziom prowadzenia zajęć z przedmiotów zawodowych pozostawiał wiele do życzenia. Ciężko było się czegoś sensownego nauczyć, oczywiście poza grą w Counter-Strike.

Cóż, pozostało zdobywać wiedzę na własną rękę w czasie wolnym od zajęć. W tym przypadku również rzeczywistość okazała się zupełnie inna, bo przecież czas wolny to czas na odpoczynek, a nie na dodatkową harówkę. Generalnie lata spędzone w technikum upłynęły mi w dużym zawieraniu nowych znajomości. Nie żałuję tego, ponieważ kilka z nich przetrwały do dnia dzisiejszego.

Nauka programowania w technikum

Jednym z przedmiotów, które miały pojawić się w trzeciej klasie było programowanie strukturalne i obiektowe. Od starszych kolegów wiedziałem, że zaliczenie tego przedmiotu nie jest czystą formalnością (jak w przypadku pozostałych przedmiotów zawodowych) i sprawia dużo problemów. Postanowiłem poświęcić trochę czasu w wakacje poprzedzające trzeci rok technikum na samodzielną naukę programowania. Tym razem się udało. Znalazłem w internecie kurs dotyczący programowania w C++ i zacząłem go przerabiać. Najbardziej zaskoczyło mnie to, że nie musiałem zmuszać się do nauki. Temat bardzo mnie zainteresował, a przerabianie kolejnych lekcji sprawiało wiele przyjemności. Rezultaty widoczne od samego początku motywowały mnie do dalszej pracy. Pierwsze zajęcia z programowania, a już potrafiłem pisać proste programy. To nie mogło się nie udać. Na całe szczęście nauczycielka, która prowadziła te zajęcia, okazała się znakomitym dydaktykiem. Przedmiot faktycznie nie należał do najprostszych i tylko regularna nauka i poświęcenie odpowiedniej ilości czasu mogło dać efekty. Zaczęliśmy od nauki Pascala, przechodząc później do nauki strukturalnego C++. Od samego początku byłem osobą wyróżniającą się w grupie. Koledzy często przychodzili do mnie po pomoc, której z chęcią udzielałem. Nauczycielka doceniła moją aktywność oraz wysiłek jaki wkładałem w każde zajęcia. Jako jedyna osoba w grupie zakończyłem rok z oceną dobrą z tego jakże trudnego przedmiotu. Nie miałem jednak zapału, żeby robić coś wykraczającego poza program nauczania.

Klasa maturalna

Czwarta klasa technikum to przede wszystkim matura i egzamin zawodowy. Musiałem także zastanowić się co zrobię po zakończeniu szkoły. Na szczęście już wtedy wiedziałem, że chcę swoją przyszłość wiązać z programowaniem. Chcę zostać programistą! Byłem wtedy przekonany, że jedyną drogą do osiągnięcia tego celu są studia. Wybrałem swój wymarzony kierunek, czyli Informatykę na Politechnice Wrocławskiej. Zdawałem sobie sprawę, że nie będzie łatwo się dostać, ale z drugiej strony wierzyłem, że jeżeli się postaram to mogę osiągnąć ten cel. W tym roku zajęcia z programowania skupiały się wokół obiektowego C++, którego zrozumienie na początku sprawiło trochę problemów. Nie było jednak zbyt wiele czasu na naukę programowania. Większość czasu zajmowały przygotowania do matury. Musiałem skupić się na nauce matematyki, bo to ona liczyła się najbardziej we wskaźniku rekrutacyjnym. Zawsze byłem trójkowym uczniem, więc miałem nad czym pracować. Szczęście w nieszczęściu, że w trzeciej klasie technikum Pani od matematyki przesadziła mnie za notoryczne rozmowy podczas lekcji do pierwszej ławki. Zostałem już tam, aż do ukończenia szkoły. Zdecydowałem się także, na podejście do matury z rozszerzonej matematyki i fizyki. Próbowałem przygotowywać się na własną rękę, ale czasu nie dało się oszukać. Nie da się nadrobić zaległości z czterech lat w kilka tygodni. Podanie o przyjęcie na studia złożyłem na Informatykę na Politechnikę Wrocławską (tak jak wcześniej postanowiłem) oraz na dwa kierunki na Politechnikę Łódzką, również na Informatykę oraz na Automatykę i Robotykę. Trzeba mieć przecież plan awaryjny. W moim odczuciu z maturą poradziłem sobie bardzo dobrze, nawet lepiej niż zakładałem (98% z podstawowej matematyki, 38% z rozszerzonej matematyki, 14% z fizyki). Czułem, że jedną nogą jestem już na moich wymarzonych studiach. Niestety w dniu ogłoszenia wyników pierwszej rekrutacji przeżyłem ogromne rozczarowanie. Dostałem się tylko na Automatykę i Robotykę, na którą nawet zapomniałem, że składałem podanie. Miałem bardzo mieszane uczucia, gdy dowiedziałem się, że jestem na 80 miejscu na liście rezerwowej. Kilka dni później kolejne złe wieści. Z teoretycznej część egzaminu zawodowego zabrakło mi jednego punktu do zaliczenia. Cały egzamin zawodowy (składał się z części praktycznej i teoretycznej) jest niezdany i ewentualna poprawa dopiero w przyszłym roku. Nie było mi za wesoło. Pozostało czekać na ogłoszenie wyników drugiej rekrutacji. Na szczęście udało się. Dostałem się na studia inżynierskie na Politechnikę Wrocławską na kierunek Informatyka. To co jeszcze kilkanaście dni wcześniej wydawało się niemożliwe, stało się faktem. Byłem przeszczęśliwy. Przy okazji tej sytuacji przekonałem się, że czasami warto kierować się intuicją i przeczuciem, nie zważając na to co mówią inni. Wiele osób odradzało mi zdawanie fizyki na maturze, słusznie argumentując, że mam zdecydowanie za małą wiedzę. Mówienie o uzyskanym przeze mnie wyniku, u wielu osób wywoływało uśmiech. W ogóle mi to nie przeszkadzało, ponieważ wiedziałem, że gdyby nie to 14% z matury z fizyki to nie dostałbym się na studia.

Studia

Nadszedł czas, aby wkroczyć w kolejny etap edukacji. Chociaż trafniej byłoby zakwalifikować wyjazd na studia do Wrocławia jako kolejny etap w moim życiu. Była to przecież dla mnie ogromna zmiana. Musiałem przeprowadzić się do dużego miasta (pochodzę z małej wioski) oddalonego o wiele kilometrów od mojego obecnego miejsca zamieszkania i rozpocząć samodzielne życie. Miałem w sobie dużo motywacji, bo wiedziałem jak ciężka była droga, która zaprowadziła mnie do tego miejsca. Moje początkowe obawy okazały się niepotrzebne, ponieważ bardzo szybko odnalazłem się w realiach życia w większym mieście. Poznałem także zasady i zwyczaje panujące na uczelni oraz kilka ciekawych osób z kierunku. W pierwszym semestrze bardzo mocno przykładałem się do nauki. Przecież miałem świadomość, że wybrałem sobie trudne studia. Regularność i intensywna powtórka materiału przed sesją sprawiły, że zaliczyłem wszystkie egzaminy w pierwszym terminie. Co prawda trochę inaczej wyobrażałem sobie studia informatyczne, ale przecież to dopiero początek. Do tej pory uczyłem się w większości zagadnień związanych z matematyką. Martwiło mnie to, że prawie całkowicie straciłem kontakt z programowaniem. Przecież od kilku miesięcy nie zrobiłem nic sensownego w tym kierunku. Kolejne dwa lata studiów całkowicie zmarnowałem. Większość mojego czasu pochłaniało pogłębianie znajomości, rozrywka i imprezowanie. Co prawda udawało mi się zaliczać prawie wszystkie kursy, ale to tylko dlatego, że byłem dość zaradny i mogłem liczyć na pomoc kolegów. Próbowałem kilkukrotnie podchodzić do nauki języka programowania JAVA (poznałem go trochę na 2 semestrze studiów), ale za każdym razem ze słomianym zapałem. Nie tak to wszystko miało wyglądać. Realia studiów w ogóle nie pokryły się z moimi wyobrażeniami. Ale czego ja właściwie oczekiwałem ? Że studia zrobią ze mnie programistę. Bardzo błędne założenie. Już nie łudziłem się, że zdobędę mój wymarzony kiedyś zawód.

Niestety na trzecim roku studiów pojawiły się kłopoty z zaliczeniem jednego z kursów (Języki formalne i techniki translacji). Dodatkowo nie miałem odbytych praktyk zawodowych. Nie miałem także najmniejszego pojęcia jak zabrać się za pisanie pracy inżynierskiej. Nie mogłem uwierzyć, że znalazłem się w takim położeniu. Powoli dochodziłem do wniosku, że być może zawiesiłem sobie poprzeczkę zbyt wysoko. W końcu pewnego dnia stwierdziłem, że trzeba zmniejszyć oczekiwania co do swojej przyszłości i wziąć się w końcu do roboty. Teraz moim celem było ukończenie za wszelką ceną studiów (nie ważne czy w terminie czy nie) oraz znalezienie jakiejkolwiek pracy w branży IT.

Poszukiwania praktyk

Tego samego dnia zacząłem szukać praktyk jako informatyk. Nie miałem żadnych oczekiwań. Chciałem znaleźć cokolwiek, co pozwoli mi zaliczyć praktykę studencką. Po długich poszukiwaniach znalazłem jedno ogłoszenie o praktyki, na które miałem szansę się dostać. Firma oferowała 3-miesięczną praktykę dla studentów chcących nabyć praktyczną wiedzę o systemach wspomagających prowadzenie przedsiębiorstwa. Wymagania : ogólna wiedza z obszaru informatyki, umiejętność użytkowania systemów Windows, umiejętność obsługi pakietów biurowych, dobra organizacja pracy, samodzielność, odpowiedzialność, solidność, uczciwość, chęć do nauki, nastawienie na rezultat i wytrwałość w realizacji celów, dyspozycyjność min. 15 h tygodniowo. To było wszystko, co w tamtym czasie mogłem zaoferować. Postanowiłem, że zadzwonię do firmy i zapytam, czy ogłoszenie jest w ogólne aktualne. W czasie rozmowy telefonicznej od razu poproszono mnie o powiedzenie kilku słów o sobie, o mojej edukacji i umiejętnościach. Byłem bardzo zaskoczony, gdy zaproszono mnie na rozmowę rekrutacyjną, która miała odbyć się następnego dnia. Na stronie internetowej firmy widniało także ogłoszenie o praktyki na stanowisku Programista C#. Wymagania były podobne, z tym że dodatkowo oczekiwano podstawowej znajomości C#, SQL oraz WinForms. Na studiach poznałem podstawy języka programowania JAVA, podstawy baz danych, napisałem aplikację okienkową (kalkulator binarny), ale uważałem, że nie jest to wystarczające, aby aplikować na to stanowisko. Poza tym nie takie umiejętności były wymagane w ogłoszeniu. Kolejnego dnia, delikatnie zestresowany, pojawiłem się punktualnie na rozmowie kwalifikacyjnej. Firma okazała się małym startupem liczącym sobie cztery osoby. Przebieg samej rozmowy był dla mnie jeszcze bardziej zaskakujący. Jeszcze raz dokładnie wypytano mnie o umiejętności oraz dyspozycyjność. Osoba prowadząca rekrutację przedstawiła mi działalność firmy oraz opowiedziała o specyfice pracy. Zaproponowano mi 3-miesięczne bezpłatne praktyki w wymiarze 2/5 etatu. Poproszono mnie jednak, żeby spróbował swoich sił na praktykach o profilu programistycznym, a nie wdrożeniowym, na które aplikowałem. Oczywiście bez wahania się zgodziłem. Praktyki mogłem realizować w elastycznych godzinach oraz w zależności od zadania także zdalnie (poza biurem). Bardzo odpowiadał mi taki model, ponieważ mogłem odbyć praktyki w czasie trwania studiów. Podziękowano mi za rozmowę i poinformowano, że po weekendzie zaczynam (rozmowa miała miejsce w piątek). Cieszyłem się jak dziecko. Od razu przeszła mi przez głowę myśl, że może jednak jest jakaś mała szansa na to, że zdobędę mój wymarzony zawód. Od razu udałem się do akademickiej biblioteki i wypożyczyłem książkę o platformie .NET i języku C#. W ciągu weekendu przyswoiłem sobie składnie języka, która okazała się zbliżona do języka JAVA, z którym miałem już styczność wcześniej. Zainstalowałem także środowisko programistyczne Visual Studio i próbowałem rozpoznać bibliotekę WinForms, wykorzystywaną do tworzenia aplikacji z graficznym interfejsem użytkownika. Visual Studio udostępnia mechanizm bezpośredniego przeciągania i upuszczania komponentów oraz zestaw metod i zdarzeń do ich obsługi. To wszystko powoduje, że aplikacje tworzy się w łatwy, szybki i dość intuicyjny sposób. Po tych dwóch dniach znowu wróciła mi chęć i zapał do nauki programowania, a tego nie czułem już od dawna.

Praktyki

I nadszedł pierwszy dzień praktyk. Byłem bardzo zestresowany. Obawiałem się, że wyjdzie na jaw, jak mało potrafię, co będzie skutkowało bardzo szybkim ich zakończeniem. Na szczęście nic takiego nie miało miejsca. Każdy były bardzo uprzejmy i pomocny od samego początku. Tego dnia moim głównym zadaniem było przygotowanie środowiska do pracy. Musiałem zainstalować środowisko programistyczne (Microsoft Visual Studio), system zarządzania bazą danych (MSSQL), środowisko do zarządzania bazą danych (SQL Server Management Studio) oraz system klasy ERP (enova 365). Otrzymałem instrukcje krok po kroku jak to zrobić, a w razie problemów mogłem prosić o pomoc. Problemów nie było, choć cały proces był dość żmudny. Cieszyłem się, że poradziłem sobie pierwszego dnia i nie dałem plamy z na pozór tak prosto wyglądającymi zadaniami. Drugiego dnia miałem utworzyć demonstracyjną bazę danych wraz z przykładowymi danymi oraz zapoznać się z interfejsem użytkownika systemu enova365. Przeszedłem szkolenie z podstawowych funkcjonalności systemu oraz otrzymałem dostęp do filmów instruktażowych z modułów CRM (zarządzanie relacjami z klientami) oraz Handel (obsługi zamówień i magazynu). Trzeciego dnia miałem uruchomić projekt programu, który dokonuje elementarnych operacji w module Handel, np. dodanie dokumentu, płatności, przeglądanie kartoteki towarów i kontrahentów. Otrzymałem link do projektu na GitHub’ie wraz z instrukcją jak go uruchomić. Poinformowano mnie, abym nie przejmował się, jeżeli nie uda mi się uruchomić przykładowego projektu, ponieważ wbrew pozorom nie jest to takie proste. Dostałem na to czas do końca tygodnia. Od samego początku wyraźnie zaznaczono, że na praktykach nacisk położony jest na samodzielną pracę, więc wszystko w miarę możliwości starałem się robić samodzielnie. Minęło wiele godzin zanim uruchomiłem ten projekt, ale w końcu się udało. Wtedy byłem zafascynowany jego działaniem i bardzo ucieszony faktem, że poradziłem sobie z tym zadaniem sam. W czasie trwania praktyk głównie otrzymywałem proste zadania programistyczne (np. Dodanie formularza, na którym użytkownik wprowadzał dane, a następnie za pomocą odpowiedniego przycisku uruchamiał określoną akcję – wykonanie obliczeń, dodanie/modyfikacja obiektu w systemie, zapis danych) oraz wspierałem wdrożeniowców przy migracji danych (Np. Wprowadzenie kontrahentów/towarów do systemu na podstawie listy dostarczonej od klienta). Brałem także udział w wizytach u klientów oraz wyjazdach na prezentacje systemu. Miałem okazję zobaczyć przekrój działań firmy zajmującej się wdrażaniem i obsługą systemów ERP.

Zaliczenie praktyk

Warunkiem zaliczenia praktyk poza frekwencją było zrealizowanie jednego bardziej wymagającego i bardziej  pracochłonnego zadania. Na początku drugiego miesiąca otrzymałem wytyczne do zadania, na którego realizację miałem czas do końca trwania praktyk. Oczywiście w międzyczasie zajmowałem się także innymi mniejszymi tematami. W moim przypadku było to napisanie aplikacji, która umożliwi migrację danych z systemu SaldeoSMART (program księgowy) do systemu enova365. Program SaldeoSMART generuje plik w formacie EDI++ na podstawie faktury. Migrator miał zaczytać taki plik i na jego postawie utworzyć ewidencję sprzedaży dla poszczególnych pozycji z dokumentu. Po zakończeniu działania aplikacja miała wyświetlić informacje na temat niepoprawnie dodanych pozycji i zapisać rezultat importu do pliku. Zdecydowanie bardziej wolałem zajmować się pisaniem tego typu programów (praktycznych aplikacji, wykorzystywanych przez użytkowników), niż tych na uczelnie, które zwykle rozwiązywały jakiś problem algorytmiczny. Temat bardzo mnie wciągnął i po dwóch tygodniach miałem gotową aplikację. Mój przełożony za szybką realizację zadania wręczył mi bon zakupowy. Wtedy to było dla mnie na prawdę coś. Nie dość, że realizacja zadania sprawiła mi wiele frajdy to jeszcze otrzymałem za to wynagrodzenie. A przecież na samym początku było wyraźnie powiedziane, że praktyki są bezpłatne. Zważywszy na to, że do końca praktyk zostało jeszcze półtora miesiąca to przełożony zapytał mnie, czy nie chciałbym napisać jeszcze jednej aplikacji, tym razem za wynagrodzenie. Oczywiście się zgodziłem. Chciałem zdobyć jak najwięcej doświadczenia, a poza tym lubiłem to, co robię. Kolejnym zadaniem było napisanie systemu do przeprowadzania szybkiej inwentaryzacji i śledzenia położenia towaru w magazynie za pomocą czytnika kodów kreskowych. Po przeprowadzaniu inwentaryzacji aplikacja miała dodać do systemu odpowiedni dokument z podsumowaniem. Wykonanie tego zadania zajęło mi ponad miesiąc, a więc prawie do końca trwania praktyk. Zgodnie z wcześniejszymi ustaleniami otrzymałem wynagrodzenie, nawet większe niż się spodziewałem. Po raz kolejny mogłem doświadczyć jak to jest dostać zapłatę za pracę, która sprawia nam przyjemność. Praktyki prawie dobiegły końca. Byłem bardzo zadowolony z ich przebiegu, przede wszystkim dlatego, że bardzo dużo się nauczyłem i wróciła mi chęć do nauki programowania. Wiedziałem, że firma nie szuka nowego pracownika, więc pozostało tylko podziękować za współpracę. Istotnym punktem było również to, że zaliczyłem w ten sposób praktykę studencką, co jeszcze niedawno wydawało się dla mnie nieosiągalne. Byłem bardzo zaskoczony, gdy kilka dni przed zakończeniem praktyk poproszono mnie na rozmowę, w czasie której zaproponowano mi pracę. Nie mogłem w to na początku uwierzyć. Pracodawcy bardzo spodobało się moje zaangażowanie oraz sumienność i zdecydował się mnie zatrudnić w niepełnym wymiarze godzin, co było dla mnie wtedy bardzo istotne. Oczywiście i tym razem bez zawahania się zgodziłem. Mogłem robić to, co sprawia mi dużo satysfakcji, a dodatkowo będę za to otrzymywał pieniądze. Moje marzenie się spełniło. Od tej pory mogłem pełnoprawnie nazywać się PROGRAMISTĄ 😊


 Cykl artykułów „Vademecum Junior .NET Developera”

Ten wpis jest częścią cyklu dedykowanego osobom rozpoczynającym swoją przygodę z zawodowym programowaniem lub planującym taki krok w przyszłości. Zapraszam do lektury pozostałych artykułów.

  1. Jak zostałem programistą – historia prawdziwa
  2. Jak zostać programistą?  wiele dróg do celu
  3. Dlaczego warto/nie warto zostać programistą?
  4. Kto może zostać programistą? najczęściej zadawane pytania
  5. Umiejętności praktyczne, których potrzebujesz do rozpoczęcia pracy jako programista cz.1
  6. Umiejętności praktyczne, których potrzebujesz do rozpoczęcia pracy jako programista cz.2
  7. Jak i skąd uczyć się programowania?
  8. Najczęstsze błędy w nauce programowania
  9. Na czym polega praca programisty? Jak wygląda typowy dzień pracy programisty?
  10. Ile zarabia programista?

Bądź na bieżąco!

Dziękuję za przeczytanie tego artykułu i mam nadzieję, że spotkamy się jeszcze na moim blogu. Jednocześnie mam do Ciebie wielką prośbę: jeśli cokolwiek co przeczytasz na tym blogu uznasz za wartościowe, to KONIECZNIE mi o tym napisz (w komentarzu, bądź mailowo). Każdy potrzebuje nieco motywacji i znacznie łatwiej będzie mi usiąść do tworzenia kolejnego materiału wiedząc, że Tobie też się to przydaje. Zachęcam Cię do polubienia strony na Facebooku oraz subskrybowania kanału na YouTube.

Polub stronę na Facebooku

Chcesz otrzymywać powiadomienia o nowych artykułach? W takim razie zapraszam Cię do polubienia strony na Facebooku. Miej pewność, że nie przegapisz kolejnych postów!

Subskrybuj kanał na YouTube

Wkrótce na YouTube pojawią się praktyczne kursy dotyczące programowania aplikacji na platformę .NET.