Żaden kurs na Udemy nie zastąpi Pair Programming
Często jest tak, że dwoje kochających się ludzi chce mieć dzieci. Wszystko jest super, lecz gdy pewnego dnia dziecko przychodzi i mówi, że jest głodne – kupują mu kurs na Udemy i mówią: masz tu się nauczysz jak gotować. Można też posadzić dziecko przed telewizorem i niech się życia uczy! Oczywiście to jest przenośnia, która obrazuje bardzo częste sytuacje, z jakimi mierzą się młodzi-stażem programiści. Niech oglądają godzinami tutoriale to się tak wyszkolą, że hoho! Jakie jest zatem wyjście? Jaka jest właściwa droga na początku? To jest logiczne – by iść dalej w swoich umiejętnościach – trzeba dziecko wysłać do innych dzieci – niech się razem bawią, doświadczają, uczą rozumieć siebie nawzajem. Jak to jest z programistami? Tak samo. Pracujcie RAZEM, doświadczajcie RAZEM – nie ma lepszej lekcji. I tu wcale nie trzeba być juniorem – ilekroć przychodzi nowa osoba do pracy i nie ma jeszcze doświadczenia w domenie, infrastrukturze, rozeznania w kodzie i kulturze pracy, będzie zagubiona. Czy to ważne? Tak – możesz być seniorem, ale bez doświadczenia w konkretnej firmie, będziesz błądzić jak dziecko we mgle. Dlatego potrzebujesz innych dzieci, które znają rzeczywistość poza mgłą, które znają świat na pamięć i przeprowadzą Cię przez najbardziej zamglone zakamarki systemów. I tak to działa.
Nie chcę programować do końca kariery
To chyba najciekawsza lekcja – dowiedzieć się po kilku latach programowania jako profesjonalny inżynier oprogramowania, że nie chcę programować. Tak. Dokładnie – taka jest prawda – nie chcę. Na początku kariery owszem, pisanie kodu to największa frajda i tak naprawdę tego od nas oczekują – pisania kodu! Świetnie! Ale im więcej się ma doświadczenia tym mniej się koduje – taka jest rzeczywistość. Powiesz, że to totalnie nielogiczne – może i tak! Ale praca programisty to w dużej mierze myślenie, planowanie, projektowanie, wdrażanie, komunikowanie, ewaluacja, odpowiedzialność za wiele rzeczy, które są związane z kodem, ale też zwyczajnie nim nie są. Kod jest tylko środkiem wyrazu, narzędziem, równaniem, a nie wynikiem. A na czym nam zależy? Na kilometrowym równaniu czy wyniku? Moje wnioski po 5 latach są dość mocno związane z procesami i ludźmi. Jeżeli myślisz, że dowiesz się tutaj jakiś nowinek technologicznych to… nie. Nic takiego tutaj nie znajdziesz, bo wiesz – cokolwiek napiszę to po roku czy dwóch będzie tak bardzo nieaktualne, że będzie mi wstyd, że coś takiego napisałam.
To jest świetna branża, ale nie dla wszystkich
Tworzymy z ludźmi dla ludzi, jednak bardzo często zapominamy o tym i tracimy cel sprzed oczu skupiając się na szczegółach, które owszem są ważne, ale gdy stają się ważniejsze niż sam cel – wszystko się rozjeżdża. W tym całym ferworze tworzenia, bardzo łatwo jest się zwyczajnie zgubić. Tak zwyczajnie – po ludzku. I przyznaję – ludzie się gubią. Nawet ci herosi z latami doświadczeń, z tysiącami linijek kodu, z dowiezionymi projektami na czas – jednak dalej się gubią. To jest bardzo ludzkie, jednak sztuką programowania jest również znalezienie wyjścia z tego zagubienia. Dlatego programujemy w teamach, dlatego nie podejmujemy samodzielnie decyzji – ważnych decyzji, dlatego też dzielimy wspólnie sukcesy i porażki. Programowanie to gra zespołowa i jeżeli ktoś tego nie widzi/czuje, nie powinien podejmować pracy jako programista. To nie chodzi o to, by kod po prostu działał, ale żeby miał sens: był spójny, prosty, czytelny, gotowy do rozbudowy. Do tego potrzebujesz wiedzy nie tylko o SOLID czy jakie są wzorce, ale kiedy i w jakim stopniu są przydatne, kiedy warto ich używać. Jednak by móc to dobrze dostrzec, warto rozumieć domenę, w której pracujesz. Tak – cele biznesu powinny być Twoimi. Jeżeli nie są – będzie to praca odtwórcza, a nie twórcza, a takiej pracy – przynajmniej ja – nie chcę.
Trzeba się cenić
Siedzisz na dupie większość dnia, pewnie jeszcze w domu, gapisz się w monitor i Twój mózg pracuje na kofeinie, którą wchłaniasz w zastraszających ilościach. Większość ludzi stwierdzi, że to spoko – bo siedzisz w cieple i tylko stukasz w klawisze. No i w sumie to ma sens, ale… tracisz zdrowie (kręgosłup!!!) i zużywasz siebie. Pytanie: po co? W większości przypadków jest to tylko po to, by ktoś mógł zarobić więcej. Dzięki czemu Ty też zarobisz, jednak jakim kosztem? Jeżeli akceptowalnym to jest ok, jeżeli nie – zawijaj się. Bo jeżeli to, co robisz nie sprawia Ci radości i nie daje Ci korzyści materialnych – szkoda życia. Jeżeli masz korzyści materialne ze swojej pracy, która Cię nie cieszy, to też nie ma na dłuższą metę sensu. Tak samo jest z pracami, które kochasz, ale wynagrodzenie jest niewystarczające to wypalisz się jeszcze szybciej. Jaki tu znaleźć złoty środek? Poznać swoją wartość – od czasu do czasu wyjrzeć zza monitora i dostrzec świat poza nim, zadać sobie pytanie co warto robić, a co się tylko opłaca, a potem znaleźć coś, co warto robić i się opłaca. I musi Ci to dawać radość, choćby tylko na początku. A potem iść dalej zanim wypalisz się totalnie.
Bycie inżynierem(ką) nie jest równe przeciąganiu „tykiecików” jak błyskawica
Chociaż nasza praca czasami tak powinna wyglądać, zwłaszcza, gdy jest dobrze zaplanowana i “dogadana” z drużyną i resztą biznesu. Jednak bezmyślne i bezkrytyczne “dowożenie” nie jest zbyt dobrym sposobem na wzrost jako programista(tka) – to właśnie krytyczne myślenie staje się tu kluczowe do tego, by pracować sprawniej i unikać wąskiego spojrzenia na projekt, ale widzieć większe znaczenie we wszystkim, co robimy. Kwestionujmy ile się da! Warto zadawać sobie i innym pytania, które czasami wydają się być oczywiste, ale czasami mogą zaoszczędzić nam mnóstwo czasu, a co za tym idzie i pieniędzy.
Robienie certyfikatów ładnie wygląda na profilu na LinkedIn lub na CV, ale to strata czasu
Jeżeli robisz certyfikat w nadziei, że się czegoś nauczysz… spoko – może ja coś zrobiłam nie tak, ale… jedyne, czego nauczyłam się robiąc certyfikat AWS to robić notatki z kursów na Udemy i jak wykuć kilkadziesiąt pytań. I to tylko po to, by udowodnić sobie i komuś, że coś potrafię. W istocie czułam się wspaniale dowiedziawszy się, że zdałam, jednak czy moje umiejętności powiększyły się? Nie. Jedyne, co mogło sprawić, że sprawnie korzystam z usług AWS jest po prostu korzystanie z nich na codzień poprzez budowanie i utrzymywanie rozwiązań. Tyle. Budowanie fikcji, udowadnianie, że “coś rozumiem”, gdy niekoniecznie jest to prawdą. Jeżeli robię to dla siebie jako wyzwanie – tylko wtedy ma to sens. Jeżeli masz potrzebę – zrób dla siebie.
Ludzie są ważni, czyli nie samym kodem człowiek żyje
Czy znasz ludzi, którzy odchodzą z pracy, bo im nie pasuje tech stack? Pewnie tak – ja też! Jednak zdecydowana większość ludzi odchodzących z pracy to osoby, które nie odnalazły się w relacjach z innymi: czy to w drużynie czy w departamencie, albo zwyczajnie nie widzieli swojej przyszłości w firmie. Pracujemy w drużynach, a czym jest drużyna? To nie jest grupa ludzi, którzy po prostu pracują ze sobą – to grupa ludzi, która ufa sobie. Nie ma innego wyjścia. To właśnie z innymi ludźmi spędzasz najwięcej czasu w pracy – bez odpowiednich relacji, nie ma szans na dobrą współpracę.
Zostań pragmatycznie agnostyczna(y)
Nie ma sensu się przywiązywać do jednego języka programowania. Zmiany są dobre i potrzebne, jednak czując się zbyt komfortowo z jednym językiem, zamykasz się na zmiany i to już nie jest bezpieczne. Z językami programowania jest trochę jak z modą czy polityką – ludzie podążają za trendem, który w danym momencie wydaje się być najbardziej optymalnym rozwiązaniem. I na pytanie który język jest lepszy/najlepszy – każdy będzie miał inną odpowiedź, bo w gruncie rzeczy języki programowania służą jednemu celowi – tworzeniu oprogramowania, a to jaka ilość ludzi korzysta z danego języka to już kwestie bardzo… ludzkie. W moim przypadku przesiadka z PHP na Golang była dla mnie fajna, jednakże środowisko pracy wymagało pracy w PHP dużo większym wymiarze niż w Go, więc zmiana nigdy nie była całkowita. W moim przypadku to zmiana myślenia i nastawienia była kluczowa w przesiadce na inny język. Na chwilę obecną na tapecie będzie Ruby. I dla mnie nie ma większego znaczenia jaki to będzie język, ważne, bym umiała osiągnąć to, co chcę i by było to zgodne z najważniejszymi założeniami fundamentalnych zasad programowania.
Pewności siebie nabierasz wraz doświadczeniem, doświadczenia z pewnością siebie
W pewnym momencie poczułam się pewniej. Nie potrafię powiedzieć co dokładnie się stało, bo zdecydowanie nie był to jakiś spektakularny moment w mojej karierze. To był proces. Gdy w pewnym momencie zauważyłam, że z każdym nowym zadaniem mam coraz mniej niewiadomych, doszłam do wniosku, że to jest ta droga, którą już przechodziłam. Mam wrażenie, że z architekturą, kodem itd. jest jak z wielkim miastem – by zapamiętać wszystkie ścieżki, należy zwyczajnie nimi przejść raz czy dwa, potem znasz miasto na pamięć i wiesz która ścieżka jest najlepsza, która najkrótsza i która najładniejsza. Gdy piszesz kod – musisz wiedzieć, które rozwiązanie jest najszybsze, a które najbardziej odpowiednie. Co to znaczy odpowiednie? Definicję trzeba dostosować do potrzeb projektu, sytuacji, czasu itd. Kod nie może po prostu „tylko” działać. Tak myślałam na początku – teraz wiem, że to nie jest najważniejsze.
Strach jest dla wygodnych
Rozmowy kwalifikacyjne są jak małe egzaminy – w naszej branży trwają niejednokrotnie bardzo długo i składają się z kilku etapów. Większość z nich to sprawdziany techniczne. Oblałam sporo z nich, zdałam też całkiem sporo. Co jest ciekawe w tym wszystkim… to są doświadczenia, lekcje. Nie umiem nie odbierać ich personalnie. Bałam się być oceniana, bałam się porażek. Wygodnie jest nic nie zmienić, nie przechodzić przez ten strach znowu i znowu… I tak oto mają wybór: przechodzić przez kolejne mozolne często etapy rozmów kwalifikacyjnych albo wykonywać dobrą, bezpieczną pracę – wybór wydaje się być oczywisty, jednak jeżeli cele firmy nie pokrywają się z Twoimi – wybór może okazać się trudniejszy niż cokolwiek innego. Zwłaszcza, gdy nie masz konkretniejszego celu niż po prostu zarabianie pieniędzy. Jeżeli Ty nie zadbasz o własną karierę i rozwój to nikt tego za Ciebie nie zrobi. Nikt.
Będąc lepszą programistką, stałam się lepszym człowiekiem
Jednym z największych wyzwań w moim życiu jest okiełznanie chaosu i wiem – brzmi to zdanie jak żywcem wyjęte z Wiedźmina, ale to nie tego typu chaos. I wcale nie chodzi o chaos dookoła mnie (aka bałagan) tylko ten chaos… we mnie. Okiełznać nie znaczy wykluczyć z mojego życia, bo gdyby nie chaos to pewnie nie byłabym taka twórcza. A co to właściwie oznacza i jak to się ma do programowania? W moim przypadku było to złożenie wielu rzeczy: od praktykowania cierpliwości, łagodności, zgłębiania problemów, studiowania każdego przypadku, praktyka skupienia i akrobacji logicznych. Wcześniej wszystko było YOLO. Dosłownie. Jestem w gorącej wodzie kąpana. Podejmuję wiele pochopnych decyzji, a z kodem tak nie można. Z kodem trzeba widzieć więcej, rozumieć więcej i przewidywać. I tak – te trzy lata zmieniły moje podejście do wielu spraw. Nabrałam pokory do życia, umiejętności, profesjonalizmu. Jedyne, co mogę to praktykować i nabierać doświadczenia. Nie ma innej drogi.