9/22/2020
Czy ten tytuł to clickbait? Oczywiście, że tak. Nie ma na świecie dwóch takich samych osób. To co sprawdziło się u mnie niekoniecznie musi się sprawdzić u Ciebie. Tak prawdę mówiąc, to tytuł tego posta powinien brzmieć "Co chciałbym przekazać sobie, gdybym dzisiaj miał zaczynać jako junior developer". Ale uznałem, że to trochę zbyt długie. Kto wie, może niektóre z poniższych wskazówek przydadzą się Tobie. Czy niektóre z tych rad są kontrowesyjne? Pewnie tak. Ale wszystkie z nich są szczere, i właśnie takie chciałbym usłyszeć gdybym wchodził jeszcze raz w świat IT. Traktruj ten wpis, raczej jako taki list Przemka do Przemka :)
TL;RD
Kiedy zaczynałem szukać swojej pierwszej pracy jako programista (2012 r.) nie wiedziałem, że wyląduję na frontendzie. Nie miałem konta na githubie. Nie miałem portfolio. I gdybym dzisiaj miał szukać pracy, to też bym takiego portfolio nie budował. A już na pewno nie wrzucałbym tam aplikacji typu ToDo List, albo Weather App. Nie zrozum mnie źle, pisanie takich aplikacji jest jak najbardziej ok. Dzięki temu uczysz się jak składać działającą całość. Ale wrzucanie tego do portfolio jak dla mnie nie ma sensu.
No dobra...ale co zamiast portfolio?
Odpowiedź jest prosta - Open Source. Na githubie jest mnóstwo bibliotek, do których możesz kontrybuować. Wybierz sobie swoją, przeczytaj dokumentację, spróbuj zbudować lokalnie, zobacz jak wygląda lista Issues - z czym ludzie mają problemy. Dzięki temu nauczysz się o wiele więcej niż przy ToDo czy Weather App. Czytanie cudzego kodu to jedna z najważniejszych umiejętności w byciu programistą. Mówiąc o kontrybucji do Open Source, nie mam na myśli np. nowych ficzerów Reacta (chociaż do odważnych świat należy). Czasami jedna linijka kodu potrafi rozwiązać czyjś problem. Ba! Nie musisz wcale kodować. Pisanie dokumentacji to też cegiełka do Open Source. Pierwszy commit Kent C Dodds'a w ramach Open Source to była literówka. Nie wierzysz? - zobacz ten wpis.
Podsumowując - jedno Twoje zdanie podczas rekrutacji - "aktywnie udzielam się w świecie Open Source" znaczy więcej niż portfolio z fajerwerkami.
Znowu - kiedy zaczynałem szukać pierwszej pracy, jedynym portalem typu social media był dla mnie Facebook. Dopiero po czasie zobaczyłem ile mnie omija. Jeśli chcesz być na bieżąco z informacjami dot. technologii to Twitter jest chyba najlepszą opcją. Facebook = rodzina i przyjaciele, sprawy for fun, śmieszki, heheszki, memy, zdjęcia. Twitter = nowinki technologiczne, ciekawi ludzie z branży, motywacja, inspiracje. Dlatego, jeśli jeszcze nie masz konta na Twitterze, to czym prędzej je zakładaj. Poszukaj kilku osób z branży, a potem poszerzaj listę obserwowanych. Nie bój się również usuwać ludzi z listy. To nie są Twoi przyjaciele - nikt się nie obrazi :) Jeśli nie podobają Ci się treści, jakie wrzuca obserwowana przez Ciebie osoba - po prostu przestań ją obserwować, albo wycisz jej tweety.
Z durgiej strony - nie obrażaj się, jak Twój "idol" wrzuci od czasu do czasu posta niekoniecznie związanego z programowaniem. Koniec końców jest to portal typu social media. Zrzut ekranu ze Spotify jeszcze nikomu krzywdy nie zrobił ;)
No ale, co z tym "ale"?
pfff "że co!?". Wierz mi, albo nie, "kiedyś to było". Może inaczej - kiedyś to NIE - było tylu blogów, tylu informacji, tylu kursów, tylu "mentorów". Z czasem ludzie podchwycili temat pt. "praca w IT = dużo hajsu". Zaczął się napływ ludzi do branży, bo to przecież "łatwe pieniądze". Siedzi się tylko i klepie w klawisze. Jak grzyby po deszczu zaczęły wyskakiwać kolejne szkoły programowania, bootcampy, kursy, mentorzy. Zrobił się z tego niezły biznes. Przecież każdy chce zarobić - co nie? - co w tym złego?
Nic. Jeśli masz pieniądze to je wydajesz jak chcesz. Gdybym tylko miał sobie dawać w tej kwesti radę, to powiedziałbym "uważaj na celebrytów w IT". Trochę takich ludzi szufladkuję, sorry. Naczytali się Aniserowicza i Szafrańskiego, jak to można zarabiać na blogu, kursach itp. Sami ledwo co skończyli bootcamp, liznęli pierwszej pracy a już wydają swój autorski kurs - "Programowanie w HTML dla zaawansowanych". Brzmi jak dowcip? Niestety. Brzmi jak zazdrość - kto wie - być może. Niestety nikt nie uczy tego, jak odfiltrować dobry content od tego skopiowanego i nastawionego na szybki zysk. Czasami nie jesteśmy w stanie zweryfikować doświadczenia danej osoby. Kto wie - może naczytał się pierdół o żabach i teraz na siłę próbuje zainteresować tym innych :) Sam musisz sobie wyrobić czujnik na takie osoby - Przemku.
Dobra wiadomość jest taka, że tych dobrych "dusz" jest więcej. A takie celebryto-IT-pijawki zdarzają się sporadycznie.
PS. Nie zrozum mnie źle. Dzielenie się wiedzą na blogu, vlogu (whatever) nawet jeśli dopiero co nauczyłeś się "czegoś" jest SUPER! Ale natychmiastowa próba zarabiania na tym - już nie - przynajmniej nie dla mnie. Gdy płacę za kurs, to chcę mieć pewność, że dana osoba "zęby na tym zjadła", a nie naczytała się pierdół o żabach ;)
A przynajmniej tych o technologiach. A już na pewno nie kupuj ich z myślą "kiedyś przeczytam". Książki o technologiach szybko się starzeją. Zwłaszcza te o technologiach frontendowych, o frameworkach itp. Jeśli chcesz mieć fajną podstawkę pod monitor - spoko, your choice :) Mam takie dwie cegły pt. JAVA ^^ #naPóźniej.
Zamiast tego, skup się na książkach ponadczasowych. "Clean Code", "Clean Coder", "Pragmatyczny Programista", "Zawód Programista", "Refaktoryzacja" ... to są książki, które się nie starzeją. Po takie książki warto sięgać kilkukrotnie w swojej karierze. Za każdym razem wyciągniesz z niej coś innego, będziesz miał inny punkt widzenia, inny poziom doświadczenia.
I żeby było jasne - nie ma nic złego w książkach o samych technologiach/frameworkach - o ile kupisz aktualną wersję i przeczytasz ją zaraz po zakupie. W innym przypadku - "daj se siana" ;)
PS. Jeśli możesz - czytaj w oryginale, inaczej mówiąc - uważaj na tłumaczenia. Wiem, że oryginały są znacznie droższe w porównaniu z wydanymi nad Wisłą "tłumaczeniami" - ale warto. Obserwuj takie strony jak HumbleBundle, tam często pojawiają się "paczki" książek np. z wydawnictwa O'Reilly Media i można je dostać za "śmieszne" pieniądze.
Często na grupach dla początkujących czytam: "najpierw skup się na podstawach, dopiero potem zajmij się Reaktem". Ding-dong - Bullshit dector - Ding Dong. Owszem - podstawy pt. zmienne, pętle, funkcje wypadałoby ogarnąć przed frameworkiem. Ale jak już łykniesz podstawowej składni to śmiało wypływaj na głębie. Podczas nauki samego Reakta otrzesz się o funkcje wyższego rzędu, kompozycje, destrukturyzację i to w takiej praktycznej formie. Nie ma sensu czekać!
It's fine to learn React while you're learning JavaScript. Frameworks can teach you closures, higher order functions, ternaries, etc...
— Eric Elliott (@_ericelliott) June 6, 2020
Inny wymiar tej rady mówi o tym, że programowanie powinno sprawiać Ci frajdę. Nie bój się napisać "brudnego kodu", eksperymentuj, baw się. Wykorzystaj różne podejścia. Sprawdź w czym najlepiej się czujesz.
W programowaniu chodzi o rozwiązywanie problemów. A najpiękniejsze w tym wszystkim jest to, że wiele problemów można rozwiązać na wiele, wiele, wiele różnych sposobów.
I na koniec - jeśli masz już za sobą ciężki bój przez te "podstawy", a pisanie każdej kolejnej linijki sprawia Ci ból - to zastanów się czy to na pewno dla Ciebie. Praca programisty nie jest usłana różami, czasami trzeba zanurkować w niemałe szambo i nikt Cię za to po plecach nie poklepie. Z drugiej strony - nie samymi programistami IT stoi. Do branży można wejść na różne sposoby ;)
Z niecierpliwością czekam, aż mój kolega Radomir, zbierze się w sobie i wygłosi prezentację na temat zarządzania czasem. Sprzedał mi ten temat kiedyś przy jakiejś kawie. Główny przekaz jest mniej więcej taki - jeśli jesteś na studiach to nawet nie wiesz ile masz wolnego czasu. Dopiero (o zgrozo) po czasie dochodzi do nas, ile cennych minut przepaliliśmy. I żebyśmy się dobrze zrozumieli - nie ma nic złego w naparzaniu po nocach w Counter Strike'a (gra się jeszcze w to?). Nie ma nic złego w imprezowaniu. Jest taki okres w życiu człowieka - studia - gdzie dopiero poznaje się "co to życie". Korzystaj póki możesz :) Ale pamiętaj - już nigdy nie będziesz miał tyle czasu co teraz. Każdy z nas ma tyle samo czasu. Doba ma 24 godziny. Różnimy się tym, jak ten czas wykorzystujemy. Naucz się swoich nawyków. Swojego organizmu. Sprawdź kiedy jesteś najbardziej produktywny, kiedy najlepiej się uczysz. Wykorzystuj to. Naucz się świadomie zarządzać czasem.
Ostatnio na Twitterze napisałem, że praca programisty to nieustanna nauka. Tak jest. Na tę naukę też trzeba umieć znaleźć czas. Chcesz prowadzić bloga? Sprawdź ile czasu zajmuje napisanie posta. Kanał na Youtube? Kurs gita, czy babela nagrywam już chyba od lutego :) To nie jest proste. Na wszystko trzeba znaleźć ten cholerny czas. Dlatego Przemku - naucz się świadomie zarządzać czasem.
Do pierwszej pracy dostałem się na staż. To nawet nie było stanowisko juniorskie. Kiedyś staż kojarzył mi się z parzeniem kawy i wpinaniu kartek do segregatora (tak tak, i jeszcze za to Unia płaciła...ale ciiiiii 🙊). Ale w Samsungu było inaczej. Konkretny projekt, konkretni ludzie, ogrom wiedzy. Dacie wiarę, że startowałem do zespołu C++ (myślałem, że jak kodowałem w tym języku na studiach to się uda) a dostałem się do zespołu SmartTV, w którym pisaliśmy we frontendowych technologiach? W życiu bym nie powiedział. Dla mnie JS kojarzył się tylko z jQuery i śnieżynkami na stronach. No ale nie o tym chciałem pisać.
Byłem zielony - to fakt. Szybko musiałem nadrobić wiedzę. Udało mi się to dzięki wspaniałym ludziom, z którymi miałem okazję pracować - ale o tym będzie następna rada. Pomimo braku w wielu kwestiach techniczncyh - dosyć szybko awansowałem. Dostałem też możliwość poprowadzenia małego zespołu. Mój szef coś we mnie dostrzegł. Od liceum bardzo lubiłem nawiązywać nowe kontakty. Uważałem się za duszę towarzystwa. Tu coś zagrać na gitarce, tu zagadać, tu się pośmiać. Spotkałem świetnych ludzi na swojej drodze. Byłem szczery, życzliwy, pracowity (teraz też jestem, żeby nie było 😜). Z perspektywy czasu widzę, że to właśnie relacje jakie budowałem z ludźmi pozwoliły mi tak szybko awansować, tak szybko stanąć na czele zespołu.
Bardzo często nie doceniamy umiejętności miękkich w IT (chociaż zauważam zmieniający się trend). Zdradzę Ci teraz pewien sekret - Przemku - pisanie kodu to nie wszystko. Ba! Umiejętna komunikacja i zdolność do budowania relacji znaczą o wiele więcej niż klepanie kodu.
Dlatego - zainwestuj w umiejętności miękkie. Sprawdź jak dobrze się komunikować - bo to wcale nie jest takie łatwe.
W poprzednim punkcie pisałem o świetnych ludziach, z którymi miałem przyjemność współpracować. Szymon K., Grzegorz D., Bartek K., Maciej W. (trochę jak z kryminału :D...no ale nie wiem czy chcieliby się znaleźć tu z nazwiska więc dla pewności zostawiam tak :))...wiele by wymieniać. Wszysktich ich łączy jedno - dążyłem do tego, by być na zbliżonym do nich poziomie. Nie porównywałem się, bo to nie ma sensu. Każdy ma swoją drogę, swoje przeżycia, doświadczenia. Ale możemy się inspirować, czerpać wiedzę, pytać o przeżycia i bazować na doświadzczeniu innych. Dzięki temu zwiększałem prędkość nauki i wchodzenia na wyższy level. Dzisiaj nie wyobrażam sobie pracy w środowisku, w którym nie mogę uczyć się od lepszych od siebie. Zawsze szukam takiej osoby i staram się inspirować.
PS. Pamiętaj, że to może działać w dwie strony. U kogoś widzisz rzecz, której Tobie brakuje...za to ta druga strona widzi w Tobie rzeczy, które ją inspirują do działania. Dzięki temu wzajemnie się napędzacie.
Wszyscy mówią - załóż bloga, załóż kanał na YT. A ja mówię - kup notatnik. Taki zwykły zeszycik A5 może być. Zapisuj tam skrzętnie to, czego się nauczyłeś. Czytając książki, bądź oglądając kursy - rób notatki. Spisuj swoje osiągnięcia. Zapisuj przemyślenia. Rysuj mapy myśli. To pomaga - serio. Pomaga - ale z czasem. Np. podczas rozmowy o podwyżkę. Takie rozmowy często odbywają się raz do roku. Czy jesteś w stanie z pamięci wyrecytować wszystkie swoje osiągnięcia. Podpowiem Ci - NIE!. Czasami robimy małą rzecz dla siebie, ale wielką dla projektu. Zapisując swoje wszystkie sukcesy i porażki jesteś w stanie popłynąć na takiej ocenie rocznej i wywalczyć upragnioną podwyżkę. Ale nie rób notatek dla pieniędzy :) rób je dla siebie i dla swojego mózgu, który nie zawsze jest w stanie wszystko spamiętać ;)
PS. Bloga też sobie załóż jak chcesz - dziel się tam swoją nowo-zdobytą wiedzą i doświadczeniem. Tylko proszę - nie nastawiaj się od początku na "zarabianie z bloga". Nie każ mi akceptować powiadomień i zapisywać się do newslettera :) Na początku bloga prowadź go dla siebie. Sława i splendor przyjdą z czasem....albo i nie :P
W liceum nie byłem jakoś specjalnie zainteresowany angielskim. Tu trójeczka, tam czwóreczka, tu coś ściągnąć, tam zagadać i "jakoś to będzie". Szybko tego pożałowałem. I choć nie miałem problemu w zrozumieniu słowa pisanego (dokumentacja, książki, maile) to szybko zarobiłem "plaskacza" w momencie, kiedy miałem poprowadzić spotkanie czy prezentację po angielsku. Mówi się, że podstawowym językiem programisty jest język angielski - to prawda. I chociaż coraz więcej publikacji powstaje w języku polskim, tłumaczone są dokumentacje (patrz React) to nadal - posługiwanie się językiem angielskim to podstawa. Bardzo dużo dają tzw. English-Days. W Suncrapers, w którym miałem okazję pracować, był taki jeden dzień - chyba czwartek z tego co pamiętam. W czwartki rozmawiało się tylko po angielsku. To nic, że w projekcie sami polacy. Trzeba było tłumaczyć i szprechać po inglishu. Wiadomo - dla ludzi, którzy dużo się oczytali, ale mało mówili to był problem. Wytłumaczenie prostej rzeczy zajmowało x2, x3 albo x4 tyle co po polsku. Z drugiej strony dzięki takim zabiegom później było łatwiej :)
Dzisiaj nie mam już problemu z posługiwaniem się językiem angielskim. Cały czas pracuję nad wzbogacaniem słownictwa (aktualnie trenuję z dziećmi Ba-Ba-Black Sheep ;))
Dlatego Przemku, jeśli to czytasz i chcesz wejść do IT - to wiedz, że bez angielskiego - ani rusz!
I to by było na tyle. Takie rady dałbym sobie dzisiaj, gdybym miał zaczynać jeszcze raz w IT. Banalne? Kontrowesyjne? Nudne? Dajcie znać w komentarzach ;)