Podstawowym problemem części początkujących (ale nie tylko) osób, które połkną bakcyla programowania (lub innej „twórczości” cyfrowej) jest chęć nauczenia się wszystkiego, a nawet WSZYSTKIEGO. Jeśli Ty jesteś jedną z nich, to zaoszczędzę Ci czasu: nawet nie próbuj! 🙂
Z pamiętnika
U mnie schorzenie „zbieraj jak najwięcej materiałów z możliwie najróżniejszych zagadnień i przerób je wszystkie” pojawiło się dawno temu. Gdzieś w okolicach gimnazjum, kiedy to samo granie w gry komputerowe przestało mi wystarczać. Wtedy jeszcze nie programowałem, ale lubiłem pobawić się jakąś grafiką, albo czymś flashowatym. I właśnie wtedy narodziło się u mnie zbieractwo i chęć nauczenie się wszystkiego co zebrałem.
Działo się to w okolicy przełomu wieków, gdy modemy w miastach wydawały charakterystyczny dźwięk, a na wsiach (a z takowej pochodzę) nie wydawały żadnego, bo ich tam po prostu nie było 😉 Internet nie był wtedy podstawowym źródłem wiedzy. Były nim czasopisma komputerowe (czasem z załączoną płytą CD) lub znajomi, którzy chętnie dzielili się swoimi zasobami na 3,5-calowych dyskietkach. Dokładnie tak w tamtych czasach wyglądała moja „biblioteczka” – sterta czasopism komputerowych i cała masa kursów z różnych dziedzin, które udało się od kogoś wyciągnąć.
Liceum i początek studiów (złote lata kafejek internetowych i pojawienie się domowych nagrywarek CD) sprzyjały zbieractwu i obiecywaniu sobie, że kiedyś do tego wszystkiego zajrzę.
Kiedy pod koniec studiów i na początku pierwszej pracy (na piątym roku pracowałem już na część etatu) programowanie na dobre zagościło w sferze moich zainteresowań zbieractwo było cały czas ze mną. Zmieniła się tylko tematyka materiałów. Teraz były to wszystkie możliwe informacje na temat programowania… programowania w czymkolwiek.
Zakup czytnika ebooków (Amazon Kindle 3) był kolejnym krokiem rozwijającym moją przypadłość. Kindle dawał możliwość odczytywania książek w formacie PDF (legalność źródeł przemilczę), więc te stały się moim nowym celem. W pewnym momencie zapchałem go tak bardzo, że odbywające się w tle indeksowanie treści uniemożliwiało mi dalsze korzystanie z urządzenia. Było tam wszytko – od Asemblera i C, poprzez Javę, C#, PHP, aż po Python, Perl i wiele, wiele innych. I cały czas planowałem to wszystko pochłonąć 🙂
Czasy nowożytne
Już jakiś czas temu zdałem sobie sprawę, że ilość otaczających nas technologii i częstotliwość pojawiania się nowych jest niemożliwa do ogarnięcia przez pojedynczego człowieka. Przy okazji przenosin na nowego laptopa usunąłem więc wszystkie stare materiały, które do tej pory zebrałem. Do 90% z nich nigdy dobrze nie zajrzałem. Większość i tak była już bardzo nieaktualna, a obecnie, przy szerokopasmowym internecie i Wi-Fi czającym się za każdym rogiem, dowolną informację można znaleźć kiedy tylko się jej potrzebuje. Podobnie zrobiłem z ebookami na Kindle’u. Zostawiłem jedynie kilka ponadczasowych i kilkanaście związanych z Javą i Pythonem. Chociaż tak naprawdę to i tak zbyt dużo.
Zbieractwo i odkładanie materiałów na później to globalna przypadłość. Gdyby było inaczej, to serwisy ułatwiające kolekcjonowanie treści (np. Delicious, Pinterest, czy Pocket) nie rosłyby jak grzyby po deszczu. Nastały więc czasy kolekcjonowania odnośników do treści.
Mimo uporządkowania dysku oraz Kindle’a i uświadomienia sobie, że doba ma tylko 24 godziny i z biegiem lat wolnego czasu jest coraz mniej, zbieractwo cały czas próbuje mnie dopaść. Jednym z przejawów jest codzienne wchodzenie na stronę wydawnictwa Packt Publishing po darmowego ebooka. Lista książek na ich koncie zrobiła się już baaardzo długa, a te do których zajrzałem można policzyć na palcach u jednej ręki. Już jakiś czas temu stwierdziłem, że nie ma to żadnego sensu. Stać mnie na to, żeby kupić sobie sensowną książkę, która mnie zainteresuje, a tematyka większości zamieszczanych darmowych książek już dawno przestała mnie interesować. Mimo wszystko nadal klikam. Chyba tylko dlatego, że zajmuje mi to mniej niż minutę dziennie 🙂
Kiedy kilka miesięcy temu postanowiłem zrobić porządek na mojej liście zadań (korzystam z aplikacji Todoist), zauważyłem, że w projekcie „Kursy internetowe” mam 35 pozycji. Chciałem nawet zamieścić screenshot, ale zrezygnowałem, gdy zobaczyłem, że jego długość jest dwukrotnie większa niż długość testu w tym wpisie 😉 Z kolei gdy kilka dni temu znałem w szufladzie karteczkę z notesu, zapełnioną listą technologii (nawet nie pamiętam kiedy ją stworzyłem), które chciałbym poznać (jej fragment jest widoczny na zdjęciu nagłówkowym), to postanowiłem ostrzec Ciebie przed manią chęci nauczenia się wszystkiego.
Cykl artykułów "Vademecum Juniora"
Ten wpis jest częścią cyklu, w ramach którego opisuję moje doświadczenia i spostrzeżenia na temat programistycznego rzemiosła. Cykl jest dedykowany osobom rozpoczynającym swoją przygodę z zawodowym programowaniem lub planują taki krok w przyszłości.
Artykuły składające się na Vademecum Juniora zawierają różne porady, wskazówki i przykłady z pracy jako programista. Nie są one ani uporządkowane chronologicznie, ani mocno ze sobą powiązane. Możesz je więc czytać niezależnie od siebie i w dowolnej kolejności. Polecam jednak zapoznać się z treścią wszystkich wpisów, gdyż wierzę, że z każdego możesz dowiedzieć się czegoś wartościowego.
Morał
Nie ucz się wszystkiego. Nie da się nauczyć wszystkiego. Co więcej nie da się nawet poznać wszystkiego pobieżnie. Trzeba przestać się oszukiwać i uświadomić sobie, że nie ma nawet potrzeby poznawania wszystkiego, choćby pobieżnie. Znacznie więcej benefitów przynosi poznanie jednej lub dwóch wybranych technologii (np. języków programowania) i zgłębianie wiedzy na ich temat. To jest droga do zostania specjalistą.
Uczenie się wszystkiego prowadzi tylko do bycia juniorem we wszystkim.
Ktoś może w tym momencie zapytać: No ale w programowaniu trzeba się ciągle rozwijać, żeby nie zostać w tyle. A co się ze mną stanie gdy na technologię, którą zgłębiam przestanie być zapotrzebowanie? To nie jest żaden problem. Jesteś bowiem w stanie przewidzieć, czy technologia, której używasz nadal cieszy się popularnością obserwując różne statystyki, np. TIOBE Index dla języków programowania. Strzelam, że jeśli język znalazł się kiedykolwiek w pierwszej dziesiątce, a nawet dwudziestce to zawsze będzie zapotrzebowanie na jego programistów. Ktoś w końcu musi te stare aplikacje utrzymywać 🙂 Zwróć uwagę jak dobrze ma się COBOL, którego początki sięgają 1959 roku! Systemy finansowe w nim napisane sprawiają, że nie można się tak po prostu od niego odciąć. Spokojnie zdążysz się „przebranżowić” jeśli zajdzie taka potrzeba.
Moja rada jest taka: rozwijaj się wgłąb, a nie wszerz. Wybierz sobie jeden mainstreamowy język programowania i rozwijaj wiedzę na jego temat. Dodatkowo jeśli starczy Ci czasu, zainwestuj go w naukę jakiegoś nowego, dobrze zapowiadającego się języka. Może się bowiem okazać, że w pewnym momencie będzie miał on swoje 5 minut, a popyt na jego programistów drastycznie wzrośnie. Wtedy i Ty będziesz miał swoje 5 minut 🙂 Nie przesadzaj również z uczeniem się bibliotek, czy frameworków związanych z wybranym przez Ciebie językiem. Tu również kieruj się podobną zasadą. Poznaj dobrze język i 2-3 najczęściej używane frameworki z danej dziedziny (np. dla aplikacji webowych, czy do testów jednostkowych). Reszty dasz radę douczyć się gdy zajdzie taka konieczność.
Jeśli jakimś cudem doczytał[a|e]ś do tego miejsca, a nie jesteś już juniorem, to mam do Ciebie pytanie: zgadzasz się z moim zdaniem? Czy głupoty gadam? 🙂 Jeśli masz jakiś kontrargument, to podziel się nim w komentarzu. Jestem otwarty na wszelkie dyskusje. Jeśli masz dowolną inną wątpliwość związaną z poruszonym powyżej tematem, to również nie krępuj się pytać – niezależnie od tego czy jesteś juniorem, czy seniorem.
Bądź na bieżąco!
Podobają Ci się treści publikowane na moim blogu? Nie chcesz niczego pominąć? Zachęcam Cię do subskrybowania kanału RSS, polubienia fanpage na Facebooku, zapisania się na listę mailingową:
lub śledzenia mnie na Twitterze. Generalnie polecam wykonanie wszystkich tych czynności, bo często zdarza się tak, że daną treść wrzucam tylko w jedno miejsce. Zawsze możesz zrobić to na próbę, a jeśli Ci się nie spodoba – zrezygnować
Dołącz do grup na Facebooku
Chcesz więcej? W takim razie zapraszam Cię do dołączenia do powiązanych grup na Facebooku, gdzie znajdziesz dodatkowe informacje na poruszane tutaj tematy, możesz podzielić się własnymi doświadczeniami i przemyśleniami, a przede wszystkim poznasz ludzi interesujących się tą samą tematyką co Ty.
W grupie Programista Na Swoim znajdziesz wiele doświadczonych osób chętnych do porozmawiania na tematy krążące wokół samozatrudnienia i prowadzenia programistycznej działalności gospodarczej. Vademecum Juniora przeznaczone jest zaś do wymiany wiedzy i doświadczeń na temat życia, kariery i problemów (niekoniecznie młodego) programisty.
Wesprzyj mnie
Jeżeli znalezione tutaj treści sprawiły, że masz ochotę wesprzeć moją działalność online, to zobacz na ile różnych sposobów możesz to zrobić. Niezależnie od tego co wybierzesz, będę Ci za to ogromnie wdzięczny.
Na wsparciu możesz także samemu zyskać. Wystarczy, że rzucisz okiem na listę różnych narzędzi, które używam i polecam. Decydując się na skorzystanie z któregokolwiek linku referencyjnego otrzymasz bonus również dla siebie.
Picture Credits
11 lutego 2019 at 21:59
jak to było?
Programujesz w Javie? – javascript musisz umieć
Programujesz w PHP? – javascript musisz umieć
Programujesz w C#? – javascript musisz umieć
12 lutego 2019 at 09:12
😉
1 września 2018 at 12:55
Artykuł stary ale jakże na topie dzięki dobry przerywnik który dużo uświadamia i potrząsa 🙂 pozdrawiam
1 września 2018 at 22:46
Dzięki Szymon za ten komentarz 🙂 Miło jest wiedzieć, że przypominanie o starszych wpisach cały czas ma sens 😉
Co do artykułu, fakt jest nieco starszy wiekiem, ale obstawiam, że jego treść jeszcze długo się nie zdezaktualizuje 🙂
19 listopada 2017 at 22:56
Zdecydowanie zgadzam się. Swego czasu też miałem ochotę znać jak najwięcej, umieć jak najwięcej, bo przecież „nigdy nie wiadomo co się przyda”. To bzdura. Lepiej być specjalistą w 1-2 tematach, niż średnim (lub nawet juniorem) w większej ilości. Choć pewnie – poszerzać wiedzę warto, choćby po to, żeby wiedzieć, że „są też inne technologie”.
Kiedyś w firmie przeszliśmy backendowo (duży system pocztowy) z C/C++/Python na raczkujący jeszcze język Golang. Początkowo wydawało mi się to marnowaniem czasu, niszowy język, „trzeba będzie szybko uciekać z firmy, bo szkoda się marnować”. A tu się okazuje, że Go pnie się w rankingach, co raz to nowe projekty w Go są pisane (przepisywane!), co raz więcej ofert pracy, gdzie znając taki język można „dyktować warunki”, zamiast „zgadzać się na nie”.
Wniosek: nie bójmy się nowych technologii, bo za rok/dwa może okazać się, że będziecie pożądanymi specjalistami w danym temacie 🙂
20 listopada 2017 at 23:54
To prawda. Tylko do wszystkiego trzeba podchodzić z umiarem i wyczuciem 🙂
19 listopada 2017 at 20:05
Jestem na początku swojej kariery, ale jak popatrzę na to co już pozbierałam to się zastanawiam teraz….a kiedy żyć?…
19 listopada 2017 at 21:23
Na początku ciężko przefiltrować rzeczy, które faktycznie się nam przydadzą, od tych, których nigdy nie użyjemy. To przychodzi z czasem. Niemniej jednak o samym procederze warto uświadomić sobie od samego początku 🙂
19 listopada 2017 at 14:29
Jak to mówią – jak coś jest do wszystkiego, to jest do niczego 🙂
A porządkowanie i wyrzucanie wszystkiego, co zalega i jest niepotrzebne, to pierwszy krok do produktywności 🙂
Fajny blog i do zobaczenia! 🙂
19 listopada 2017 at 20:59
Dokładnie. Wiedzy do ogarnięcia jest co niemiara. Chociaż ciężko się powstrzymać, to części w końcu trzeba powiedzieć „do widzenia” 🙂
Dzięki! Do zobaczenia 🙂
5 lutego 2017 at 11:21
Dobrze powiedziane. Ale jednak trzeba ciągle szukać nowych rzeczy nowych rozwiązań na spotykane przez siebie problemów. Trzymanie się i zagłębianie w jednej technologi owocuje, że ci wszyscy tobie mogą odjechać.
Także ważne jest umiejętność wyboru technologii. To jak inwestycja. Jeśli trafisz to mocno tobie zaprocentuje. Jeżeli blednie postawisz to poniesiesz straty.
Kiedyś wybrałem freenas i pfsense i do dnia dzisiejszego korzystam i ciągle utwierdza, że to bardzo dobre rozwiązanie dla mnie. Bo mogę za darmo te narzędzia wielu firmach wykorzystywać i dzięki temu oszczędzać czas bo pozwala ujednolicić środowisko i mogę powielać (skalować). Wadą routerów czy innych urządzeń jest, że nie każdą firmę stać do tego jeśli masz to po latach wielu filiach i firmach masz różne modele z różnymi interfejsem i bugami, które charakteryzuje się dany model.
Także takie esxi czy xen. Padło na esxi. Teraz mogę spokojnie znaleźć zatrudnienie bo wszędzie korzysta się z rozwiązań VMware.
Także mało się piszę i mówi o metodach organizowania wiedzy. Według mnie powinna być gramatyka zasady, których się winno trzymać przy nadawaniu nazw funkcjom obiektom czy plikom. Coś jak ma się w regułach CSS (metoda BEM).
19 listopada 2017 at 21:50
Wybacz, ale chyba przeoczyłem Twój komentarz wcześniej 🙁
To prawda, nie można zamykać się na nowości i alternatywne rozwiązania – wcale tego nie twierdzę. W ramach tego co się robi lub planuje robić warto ogarniać co w trawie piszczy, choćby po to żeby „nie kisić się we własnym sosie” (jak mawia mój znajomy). Warto jednak uświadomić sobie gdzie kończą się te „ramy” i nie wychodzić za nie zbyt daleko, bo z doświadczenia wiem, że to co znajduje się poza nimi najczęściej nie przydaje się „w najbliższej przyszłości”, a w dalszej perspektywie często się po prostu przedawnia.
23 października 2016 at 13:22
Znowu super artykuł, który dokładnie to pokazuje to co czuję :D,
-„sterta czasopism komputerowych i cała masa kursów z różnych dziedzin, które udało się od kogoś wyciągnąć” -> czasopisma, biuletyn hackerskie, książki na dyskach.
-„zauważyłem, że w projekcie “Kursy internetowe” mam 35 pozycji” -> miesiąc temu wybrałem 7 fajmych kursów, tak naprawdę jestem w stanie robić 1 i to ledwo. Ale jeden kurs zajmue ~10h tygodniowo. 24 * 7 – 7 * 8 – 7 * 9 = 50h / tydzien, ktore czlowiek pracujacy/spiacy jest w stanie poswiecic na kursy. Czyli z tego wynika, że jak się robotem to można 5 kursów tygodniowo.
-ważna jest optymalizacja czasu: jak prowadzę samochód, to słucham podcastów, jak jadę autobusem to oglądam kursy na courserze, jak idę to rozmawiam przez telefon, jak zasypia to czytam książkę sci-fi na kindlu. Niestety moment w którym człowiek zdaje sobie sprawę, że nie jest w stanie wszystkie zrobić co sobie zaplanował jest przytłaczający :(.
A teraz trochę krytyki:
„Nie ucz się wszystkiego. Nie da się nauczyć wszystkiego. Co więcej nie da się nawet poznać wszystkiego pobieżnie. Trzeba przestać się oszukiwać i uświadomić sobie, że nie ma nawet potrzeby poznawania wszystkiego, choćby pobieżnie.” -> Oczywiście, że specjalista w swojej dziedzinie zarobi znacznie więcej, ale czy to jest naszym celem? Żeby nasza praca była monotonna? Czy może chcemy odkrywać nowe rzeczy i czuć, że jesteśmy bliżej zrozumienia wszechświata? Może uda nam się znaleźć coś od czego nie da się nas oderwac? Dobry przykład z Cobolem, ale czy chcemy żyć w poprzedniej epoce przez większość naszego życia? Jeśli jednak, zależy nam na pieniądzach to wcale nie ma sensu uczyć się wszystkiego, ale jeśli na czymś więcej…?
24 października 2016 at 05:30
Chyba przeczytałeś wszystkie wpisy, co? 🙂 Dzięki za te wszystkie konstruktywne komentarze! Jestem bardzo wdzięczny.
Of course, to na ile poznawać świat „w szerz” a na ile „w głąb” trzeba sobie wyważyć. Dobrze wiedzieć co w trawie piszczy dookoła, ale nie można z tym przesadzać.
11 sierpnia 2016 at 09:37
„Uczenie się wszystkiego prowadzi tylko do bycia juniorem we wszystkim” – bardzo mądrze napisane; nigdy nie patrzyłam na to w ten sposób. Dziękuję za ten wpis, pomógł mi spojrzeć na kilka spraw z zupełnie innej perspektywy i dał kopa do działania.
11 sierpnia 2016 at 13:37
Bardzo się cieszę, że ten wpis Ciebie zainspirował. Dziękuję za pozytywny komentarz – to bardzo motywuje do dalszego pisania 🙂
13 września 2017 at 16:36
Fakt, ciekawie powiedziane i jest, w tym napewno duzo prawdy – jednakze osobiscie NIE zgadzam sie z tym, w 100%.
Patrzac z drugiej strony osoba, ktora ogranicza sie tylko do jednej rzeczy moze byc potem rzeczywiscie super-turbo-wymiataczem jednak calosciowo jest juz… potem co najwyzej sredniakiem (i zawsze bedzie!). np. Znam kilku ekspertow od RoR, ktorzy znaja kazdy mechanizm jednak nie potrafia samemu sklecic bardziej wymagajacego zapytania SQL bez pomocy AR czy nie maja pojecia o cache’owaniu. To nie sa seniorzy. Z doswiadczenia bym powiedzial, ze wskazane jest chociaz „liznac” otaczajace tematy by pozniej nie wyjsc na kompletnego dyletanta. Ale oczywiscie zgoda, ze nie mozna wszystkiego na raz, a zbieractwo to glupota.
Podsumowujac, jak we wszystkim – zdrowy rozsadek wskazany. Nigdy ze skrajnosci, w skrajnosc 🙂
pozdrawiam,
P.
14 września 2017 at 07:19
„Nigdy ze skrajności, w skrajność” – bardzo dobrze powiedziane 🙂 Zgadzam się z Tobą w 100%, choć może nie ubrałem tego odpowiednio w słowa w artykule.
Przez „nie ucz się wszystkiego” nie mam na myśli nie uczenia się technologii, z którą ma się styczność, ale o próbie nauczenia się naprawdę „wszystkiego”. Np. próba zapoznania się z 20, 50, 100 najpopularniejszymi językami z Tiobe Index podczas gdy w swojej karierze będziemy mieli styczność z małym ich procentem, a dodatkowo wszystkie języki tak naprawdę można pogrupować w kilka kategorii, wewnątrz których różnić się będą mniejszymi lub większymi niuansami. O takie skrajności mi chodziło 🙂
9 maja 2018 at 13:20
Do tego powiedzenia warto by było dodać, że gorsze od bycia wiecznym juniorem jest ciągle narastająca frustracja i przyspieszanie wypalenia zawodowego spowodowanego głównie tzw. syndromem oszusta.
@walu911:disqus napisał też, że się nie zgadza z postem w 100% i tutaj ma moje poparcie. Wielokrotnie spotkałem się z określeniem, że aby odnieść sukces w IT powinieneś: „know everything about something and something about everything.” (po angielsku fajniej to brzmi).
9 maja 2018 at 22:23
Ja się jak najbardziej podpisuję pod tym fajnym angielskim powiedzeniem 🙂 Przestrzegam tylko przed zbyt szerokim pojmowaniem części „something about everything” – w wielu przypadkach naprawdę wystarczy wiedzieć, że coś istnieje albo gdzie czegoś szukać, bez poświęcania czasu na naukę czegoś, czego być może nigdy nie przyjdzie nam w życiu użyć.
4 sierpnia 2016 at 21:09
Jakie to prawdziwe. Zbieractwo, listy, a nawet czytnik ebookow, ktory kupilem, aby 'wreszcie to wszystko nadrobic’. Nawet kursy Skąd ja to znam?
Jestem na drodze do zostania Java juniorem i jak sobie spojrze wstecz to widzę, ze za bardzo się rozdrabnialem na różne okoloJVMowe i frontendowe technologie bo akurat była potrzeba zrobić coś szybko lub troche przychalturzyc. Co gorsza nadal to robię. Dzięki za wartościowy post, pomogło mi to zrozumieć, ze jak nie wezmę się w końcu za obrany wycinek jednej technologii to skończę jako wieczny junior lub nawet-nie-junior z wybiorcza wiedza.
5 sierpnia 2016 at 05:03
Dzięki za ten komentarz! Nawet nie wiesz jak bardzo utwierdził mnie w przekonaniu, że warto było publikować ten wpis (bo miałem trochę wątpliwości na ten temat).
3 sierpnia 2016 at 15:30
Zgadzam się, szkoda życia na uczenie się wszystkiego 🙂 U mnie tyko Java i Java EE a nawet tu brakuje mi czasu na zgłębianie wiedzy. W przyszłości ew. Scala.
3 sierpnia 2016 at 20:41
Ech… Scala… tak, od kilku lat ma u mnie status „w przyszłości” 😉
23 października 2016 at 13:06
Chociaż bardzo mi się Scala podoba, to niestety zaczęły mnie dochodzić słuchy, że Scala umarła 🙁
24 października 2016 at 05:20
Skąd takie doniesienia?