Kocham rozmawiać z programistami o rozwoju kariery zawodowej. Nie wiem, czy jest to spowodowane moim gadulstwem i ciągłą potrzebą otwierania ust. Czy może po prostu lubię poznawać nowych ludzi?
Często po takich rozmowach czuję motywacje do zmian. Od wypróbowania nowego frameworka po przetestowanie innego języka. Niekiedy nawet staram się skopiować nawyki innych osób, które uznam za warte naśladowania. Dlatego też podzielę się z wami moją historią i zachęcę do zmiany.
Niniejszy post jest częścią cyklu "Wasze Historie".
Autor: Tomek
Dowiecie się dzisiaj, dlaczego tak bardzo lubię walenie.
Początek długiej wędrówki
Dobra, zacznijmy od początku. Cofnijmy się w czasie do pierwszych lat XXI wieku, mniej więcej 2003-2004. W tym czasie miało miejsce najbardziej przełomowe wydarzenie w moim życiu. Coś, co zmieniło otwartego i uprawiającego dużo sportu dzieciaka w trochę przygrubego, gadatliwego, choć mniej socjalnego nerda. Komputer oraz dostęp do internetu.
Mniej więcej w tym czasie kupiłem sobie komputer, a niedługo po tym podpięto mi łącze internetowe. Zanim jeszcze miałem internety to tworzyłem strony. Nie u mnie, tylko u kolegi. Powstawały na archaicznych hostingach republika. Co prawda przy użyciu generatora i wyglądały ohydnie, ale co strona to strona!
Nie trzeba było długo czekać, abym rozpoczął zabawę na poważnie. Książka do nauki HTML, Gimpa i oraz narzędzia takie jak słynny Pajączek. Tworzyłem je dniami i nocami. Teraz powiedziałbym, że moje podejście było żałosne. Zmieniłbym w nim wiele. Zamiast starać się zrozumieć jak to wszystko działa, skupiałem się na wynikach, których i tak nie było. Czego można oczekiwać od 9-11 latka ?
Strony statyczne zaczęły mnie szybko nudzić. Przesiadłem się na instalowanie phpBB czy Wordpresa. Pojawiły się także pierwsze przygody z linuxem.
Dlaczego teraz wspominam o pingwinie ? Ponieważ ma on ogromny związek z moim odwiecznym problemem. Był on strasznie irytujący. Bałagan i ogrom psujących się zależności.
Prościej się nie da ! Chyba…
No i nastał pewien poranek. Postanowiłem zainstalować forum lokalnie, bez żadnego hostingu. Miałem wtedy internet radiowy. Strasznie irytująca sprawa, bo potrafił nie działać godzinami. Dlatego pobrałem sobie Krasnala (pozdro dla kumatych). Moje pierwsze środowisko developerskie. Jeżeli uznamy, że byłem jedynym użytkownikiem tych stron, to mogę nazwać to nawet UAT-em !
Do czasu.
Pamiętam, jakby to było dzisiaj, że coś zaczęło się pierdzielić, a ja nie znałem się na tyle, żeby wiedzieć co. Dni mijały, trochę ochłonąłem. Postanowiłem zainstalować to samo na linuxie. Miałem go wtedy na dualboocie, bo przecież jakoś trzeba grać w gry komputerowe, co nie?
Zgodnie z poradami znalezionymi w internecie przekopiowałem komendy do terminala, nie zastanawiając się nad ich znaczeniem. I co ? Dupa. Coś działało, ale baza nie chciało hulać. Rzucało jakimiś błędami, których tym bardziej nie rozumiałem. Grzebałem, instalowałem i odinstalowywałem, czyste szaleństwo. Wróciłem do Windowsa, żeby zainstalować jakiś pakiet konkurencyjny dla Krasnala, chyba był XAMPP (głowy nie dam).
Zgadnijcie, co otrzymałem? Efekt bardzo zbliżony do tego z Linuxa. Przez to, że miałem dwa serwery zainstalowane, nie chciało działać. Wkurzony zdecydowałem się na krok ostateczny. Czas ogłosić apokalipsę! Reinstalacja systemu operacyjnego. Po tym długim i wyczerpującym przedsięwzięciu wszystko chodziło tak, jak miało. Po latach przywykłem do tego. Że co by się nie działo, z serwerami zawsze będą problemy.
Zawsze będę duplikował biblioteki. Bo przecież nie ma innego wyjścia.
Zawód programista
Mijały lata. Skończyłem gimbazę, liceum i nawet udało się dostać na uczelnie. Niestety nie ten kierunek co chciałem.
Zawsze marzyłem o tworzeniu gier, programowaniu. Dostałem się jednak na elektronikę i telekomunikację (chociaż to jest temat na osobna opowieść).
Koniec końców zapisałem się na staż do jednej z firm. Po miesiącach czekania odpowiedź: “został pan przyjęty“. Hell yeah. Kariera programisty stoi dla mnie otworem. Teraz już nic mnie nie zatrzyma!
Pamiętam to zadowolenie i strach pierwszego dnia. Byłem pełen optymizmu. Myślałem “poznam najlepsze praktyki, będę do przodu względem kolegów”. I to była prawda… częściowo.
W pracy nauczyłem się sporo, więcej niż gdziekolwiek indziej. W pierwszych dniach dostałem dostęp do repozytorium i krótkie polecenia jak odpalić aplikacje. Wszystko fajne. Wiadomo projekt w Javie EE to i jakiś serwer potrzebny. Projekt A odpalamy na JBoss w wersji 5.0, projekt B odpalamy na JBossie 7, do tego potrzebujesz bazy danych C i D. Tych samych, ale w innych wersjach. Na dodatek tego i tamtego nie możesz pobrać z internetu, ponieważ mamy własne wersje, w których wprowadziliśmy swoje modyfikacje.
I w sumie wszystko fajne. Przez cały staż, jak i kilka miesięcy później, kiedy byłem już pracownikiem, nie miałem z tym większego problemu. Wiadomo jak wygląda praca wdrożeniowca, kiedy ma się otwarte kilka projektów. Nagle trzeba się przepiąć na inny, poprawić kilka bugów i możemy wrócić do starego. Każdy wdrożenie to kolejne repozytorium. Nie ma w tym nic dziwnego, ale to także osobny serwer.
Przy kilku takich otwartych projektach mamy milion różnych wersji serwerów. Kilka bazek, jedne na środowiskach zewnętrznych, drugie u mnie lokalnie. Po kilku miesiącach takiej zabawy uświadomiłem sobie, że to wszystko to po prostu patologia. Zależności i wersje ciągle gryzą się ze sobą, a ja marnuje czas na odpowiednie włączenie i wyłączenie tego co aktualnie potrzebuje. Zawsze zapominam o jakiejś rzeczy i kolejne godziny lecą na znalezieniu problemu.
No ale przecież to jest normalne. Każdy tak ma, nie? Rozmawiałem o tym z kolegami pracującymi w innych firmach. Zawsze ta sama reakcja. Zdziwienie, bo przecież TO jest normalne.
Kochane walenie
Minął około rok.
Nie wiem co mnie wtedy tchnęło. Robiłem wtedy jakiś prosty projekt. Tematyka nie miała znaczenia, po prostu chciałem pobawić się MongoDB.
Ni z tego, ni z owego wszedłem na stronę Dockera. Sam produkt znany był mi od dawna. Zawsze jednak uważałem to za narzędzie dla jakichś adminów. Sposób wdrażania aplikacji na produkcję. Po co mam utrudniać sobie życie, marnować czas na poznawanie czegoś, co w codziennych zabawach z programowaniem nie będzie mi przydatne.
Byłem wtedy młody (dalej jestem… chyba) i głupi. Zainstalowałem, chwile poczytałem, nie użyłem. Nie poświęciłem odpowiedniej ilości czasu na zrozumienie zasady działania. Komendy w terminalu wydawały mi się skomplikowane (chociaż nie były). Dlatego zarzuciłem pomysł.
Na szczęście tylko na kilka dni. Po tym czasie sfrustrowany wpisałem magiczną frazę w Google: „Docker GUI”. Znalazłem jakieś pierwsze lepsze narzędzie o nazwie Kitematic. Zainstalowałem i szczęka mi opadłą. Zbierałem ją kilka dni. Nie byłem w stanie uwierzyć jakie to proste.
Otwieram listę dostępnych obrazów, znajduje MongoDB, klikam pobierz i co ? Działa. Instancja stoi i ma się dobrze. Potrzebuję PostgreSQL, którego nienawidzę konfigurować ? Same shit, klikam działa. Dodaje drugą, trzecią czy czwartą instancję kontenera z PostgreSQL. Wszystkie działają i nie ma żadnych problemów.
Oczywiście chciałem już wdrożyć to w firmie, w której pracowałem. Szybko zdałem sobie sprawę, że się nie da. Architektura nigdy nie była przystosowana na konteneryzację.
Konteneryzacja ogromnego monolitu mija się z celem. No i wiadomo, musiałbym przekonać inne osoby. Ja młody nie miałem siły przebicia. Teraz myślę, że mogłem spróbować, może udałoby się coś zmienić. Niestety było minęło.
Zaniechałem prób. Jednak była to kolejna cegiełka do zmiany pracy.
Plot twist
Teraz pewnie siedzisz przed monitorem, czytając i zastanawiając się, co to w ogóle ma być. Oczekiwałeś jakiejś mega interesującej historii, ciekawych zwrotów akcji. Wybuchających serwerów na produkcji. Zwolnień ludzi, dramatów i zdrad. Seksu w biurach czy śmierci współpracowników. Upadających firm czy magicznych startupów zmieniających świat w tydzień. Największych patologii w zawodzie programisty, jakie są tylko możliwe.
To nie ta historia… niestety. Nie chcę, żebyś zapamiętywał treść tej opowieści, by później dzielić się nią z kolegami. Chcę, abyś dziś wszedł sam na stronę Dockera, pobrał go i dał mu szansę.
Udało mi się przekonać parę osób do spróbowania. I żaden z nich nie wrócił do starych metod stawiania serwisów. Mnie niebieski waleń pomógł zmienić pracę na lepszą. Może tobie też się uda ? Jeżeli nie, to ułatwisz sobie życie. Tutaj nie da się przegrać. Więc czytelniku nie zwlekaj i nie odkładaj na później. Spróbuj, a przekonasz się, że warto ! Jak już ci się uda (w co wierzę i trzymam kciuki) to zrób przysługę innym.
Idź i dziel się wiedzą. Nie tylko Dockerem, ale wszystkim, czego się dowiesz. Bloguj, snapuj nagrywaj cokolwiek. Jak profesjonalista!
Na koniec link do Dockera: https://www.docker.com.
Fajna historia, przypomniałeś mi tym moje początki za dzieciaka. U mnie punktem zapalnym było uszkodzenie systemu 4go dnia od zakupu kompa (chyba rok 2001). Byłem tak osrany przed rodzicami (20lvl hehe), że ukryłem ten fakt i zatrudniłem fachowca by mi to naprawił. Moje oszczędności skurczyły się o całe 80zł i to była ta chwila, gdy obiecałem sobie, że już nigdy nie będę musiał za to płacić.
Wszystko to ładnie ewoluowało w dobrym kierunku, dziś są systemy SAP i wiedza nabyta w młodości (programowanie, bazy danych, SOA, HTML, CSS, skrypty, RPG, gry i inne) została przekuta w dalszy rozwój osobisty.
Dzisiaj dziele się wiedzą z innymi i prowadze różne szkolenia w firmie.
Trzymaj się!
O tak, krasnal, xampp i pajączek. Nawet republika była! Miło, że przypomniałeś tamte czasy :)
No i również polecam Dockera. Nie taki waleń wielki jak go malują ;)
To czucie kiedy odpalasz webowy serwis ASP.Net Core na Kestrelu pod Linuxu na Dockeru i działa. Nie sądziłem, że tego dożyję ;)