10 rad dla początkujących programistów od seniora
Rozwiązuj więcej problemów niż tworzysz. To jedna z rzeczy, których żałuję, że nie wiedziałem zaczynając swoją przygodę z programowaniem. W ciągu 20 lat pracy z pasją, doświadczyłem wielu porażek i sukcesów. Postanowiłem przekuć je w dziesięć rad, które przeczytacie poniżej. Mam nadzieję, że wyciągniecie z nich jak najwięcej.
Tomasz Smykowski. Senior Software Development Consultant w Fream. Inżynier informatyki, programista od 20 lat. Redaktor, podcaster, autor książek i kursów, trener. Od początku kariery zawodowej aktywny w grupach wsparcia dla programistów. Zaliczany do TOP 4% użytkowników StackOverflow. Prywatnie lubi spacery i bieganie.
1. Miniprojekty mogą przerodzić się w biznes
Każdy, kto lubi programować pisze swoje miniprojekty. Robiłem to dla zabawy i nauki nowych rzeczy (nadal to robię). Jednak nikt mi nie powiedział, że mogą one przerodzić się w realne biznesy. Gdybym to wiedział, to po pierwsze robiłbym więcej mini projektów, a po drugie doprowadzałbym je do stanu, w którym inni mogą ich używać.
2. Można programować w wieku 35 lat
To może brzmieć absurdalnie, ale gdy byłem młody i nie było dużo starszych programistów, sądziłem, że programistą można być tylko jak się jest młodym. Na szczęście okazało się, że to nieprawda. Jeśli się na bieżąco uczy nowych rzeczy i nie zamyka na rozwój, można programować jak długo się chce.
3. Bycie początkującym to przywilej
Gdy byłem początkującym programistą bardzo martwiłem się, gdy coś mi nie wychodziło i to przeżywałem. Jednak z perspektywy czasu widzę, że to normalne i nawet teraz po 20 latach zdarzają się błędy, pomyłki, czasem nie jestem czegoś w stanie rozwiązać, albo pojawia się jakiś niespodziewany problem z kodem. Jednak gdy jesteś początkujący, każdy wie, że nie wiesz prawie nic i dlatego prawdopodobnie będziesz popełniał dużo błędów.
Trzeba po prostu się nie poddawać i spokojnie iść do przodu. Jak już jesteś doświadczony to bardziej przeżywa się niemoc w rozwiązywaniu problemów, bo ciągle z tyłu głowy słyszy się “powinieneś wiedzieć jak sobie poradzić”.
4. Wąska specjalizacja to pułapka
Poświęciłem w swoim życiu parę lat na programowanie aplikacji mobilnych i desktopowych. Mógłbym wyspecjalizować się bardziej w desktopie, ale byłaby to zła inwestycja, ponieważ teraz dużo aplikacji jest w sieci. Dogłębne poznawanie jakiejś technologii nie ma sensu w dłuższej perspektywie, bo zaraz inna technologia ją wyprze. I wtedy znajomość frameworka na pamięć nie będzie do niczego potrzebna. Może lepiej jest uczyć się koncepcji, oraz uczyć się “uczenia” niż poświęcać lata na coś, co stanie się bezużyteczne.
5. Programiści potrafią być wredni
Akurat w całym swoim życiu zawodowym miałem i mam przyjemność pracy z bardzo ogarniętymi ludźmi. Ale też działam w różnych grupach wsparcia od właściwie początku mojej pasji. I zawsze zdarzało się, że w tych grupach pojawiały się czarne owce, albo niektóre grupy wręcz zniechęcały do programowania. Nie ma sensu przejmować się, co myślą inni. Jeśli na przykład zadasz pytanie na grupie i ktoś wyzwie Cię od idiotów, to nie znaczy, że wszyscy programiści tacy są.
Po prostu trafiłeś na gościa, który sam nigdy nie doświadczył wsparcia i teraz nie potrafi oddać go innym. Ostatecznie gdy zadasz nawet najgłupsze pytanie i uzyskasz w końcu pomoc, to jesteś do przodu. A ten, kto nie zadał nadal nie zna odpowiedzi. Programowanie wydaje się elitarnym zajęciem, ale to zawód jak każdy inny, mnóstwo super ludzi i trochę szumowin.
Spis treści
6. Nauka programowania nie jest najważniejsza
Ludzie, którzy programują spędzają mnóstwo czasu sam na sam z monitorem. Najbardziej cierpią na tym umiejętności komunikacyjne i interpersonalne. Sam wiem o tym i sam to obserwowałem. Rozmawianie o trudnych technicznych problemach, stresujących, pod presją czasem czasu to wyzwanie. Gdy jeszcze nie jest się ekspertem od komunikacji. To musi rodzić problemy. Dlatego paradoksalnie nauka nowego języka programowania, czy biblioteki nie jest najlepszym, co możesz zrobić dla zawodowego rozwoju.
Warto poświęcić dużo czasu na poprawienie umiejętności miękkich. Nie mogę wystarczająco podkreślić, jak bardzo poprawia to pracę, swoją satysfakcję z niej, ale też jak bardzo wyróżni Cię nawet jako kandydata spośród innych ubiegających się o pracę.
7. Ani kasa, ani rozwój nie jest najważniejszy
Generalnie z dyskusji, które widzę w sieci, kształtują się dwie postawy. Pierwsza to, aby zarabiać jak najwięcej w pierwszej pracy. To fajne zarabiać dużo, ale nie ma co liczyć na kokosy w pierwsze miesiące pracy. Kasa przyjdzie z czasem, jeśli będziesz się rozwijać. Poza tym, można dostać więcej kasy, ale to oznacza większe wymagania. Co jeśli im nie sprostasz? Jak wpłynie to na Twoją samoocenę na początku kariery zawodowej?
Z drugiej strony niektórzy tak rozumując skupiają się na rozwoju. Biorą pracę nawet za niską kasę, ale która daje dużo rozwoju. Trochę skłaniałbym się ku temu, ponieważ inwestujesz w siebie długoterminowo. Ale tu też można trafić na pułapkę ciągłego rozwijania się.
Wybierasz “bezpieczna” pracę, gdzie nie będzie za dużo presji. Niby się uczysz, ale nie masz satysfakcji. Idziesz do kolejnej i to się powtarza i nie możesz wyrwać z pętli. Dlatego uważam, że trzeba wyważyć to i nie stosować podejścia kasa jest najważniejsza, albo rozwój jest najważniejszy. Tylko coś pośrodku. Praca powinna dawać trochę tego i tego. Ale nie ma co oczekiwać, że da w 100% to i to. Praca to przede wszystkim praca.
8. Rozwiązuj więcej problemów niż tworzysz
Programowanie jest skomplikowane. Każdy ma swój sposób, jak coś zrobić. Jeden da spację przed klamrą, a drugi nie, nie ma na to recepty. Jest za to mnóstwo uwarunkowań, które powodują, że są wybierane takie, a nie inne rozwiązania. I obojętnie ile kursów, studiów byś nie przerobił, może okazać się, że Twoi guru coś dla Ciebie uprościli, żebyś mógł nauczyć się programowania. I wtedy idziesz z taką teoretyczną wiedzą do pracy, okazuje się, że wszyscy robią wszystko źle. No i proponujesz przebudowanie wszystkiego. Ale nikt nie widzi potrzeby i przechodzi nad tym do porządku dziennego. To przykład, gdy można robić problemy, które są niepotrzebne.
Czasem lepiej dowiedzieć się, czemu jakieś decyzje zostały podjęte, zamiast zakładać, że się wie lepiej. Będąc programistą zastaniesz mnóstwo sytuacji, gdzie możesz stworzyć problem, zamiast rozwiązać jakiś. Jednak bilans powinien być taki, że rozwiązujesz problemy zamiast je tworzyć. W sumie na tym polega Twoja praca…
9. Nie musisz tego znać, by być dobrym programistą
Gdy zaczynałem programować panowało przekonanie, że dobry programista powinien znać assemblera. Zobacz, gdzie teraz są ci dobrzy programiści, nikt przecież nie pisze w assemblerze. Później słyszałem, że powinienem rozumieć wskaźniki i operacje bitowe. Czy dziś ta wiedza jest potrzebna w większości przypadków? Później wyśmiewano się z PHP, chociaż duża część sieci z niego korzysta. Kpiono z programowania w JavaScript, a stał się on kamieniem węgielnym sieci jaką znamy.
Non stop ktoś tam wymyśla, co trzeba znać, żeby być tym lepszym. Albo którzy programiści są gorsi. Jednak przeważnie to są błędne, źle motywowane twierdzenia. Nie ma co planować na nich swojego rozwoju.
10. Programowanie jest nadal fajne, nawet po 20 latach
Gdy zaczynałem, marzyłem o programowaniu gier wideo. Mimo iż trochę ich napisałem, zająłem się programowaniem zawodowo czego innego. Jednak nie żałuję i nadal mam dużo satysfakcji z bycia programistą. Nigdy nie zakładałem zresztą, że będę programować całe życie. Ale spróbowałem i tak się stało, że robię to już dosyć długo.
Nie urodziłem się programistą, bo nikt się nim nie rodzi, a jednak koduję. Nie miałem jakiś super predyspozycji w stylu liczenia w pamięci liczb binarnych, a jednak tu jestem. Programowanie jest naprawdę ciekawym zajęciem i życzę wszystkim, którzy zaczynają, by mieli motywacje by iść dalej. Programowanie to przechodzenie od bugu do bugu, bez nadmiernej utraty optymizmu.
Podobał Ci się ten wpis? Zapisz się na mój newsletter.
Zdjęcie główne artykułu pochodzi z unsplash.com.