W jaki sposób samoucy znajdują pracę jako programiści?
Takie pytanie pojawiło się w serwisie Quora
Mam 17 lat i programuję od 14 roku życia. Głównie koncentruje się na Javie i udało mi się zdobyć piątkę w ocenie końcowej z Informatyki. Jestem całkiem biegły w używaniu Javy (składnia, OOP, GUI/JFrame itd.) i nawet całkiem dobrze radzę sobie z HTML5 oraz CSS3. Jednakże wydaje mi się, że wciąż zbyt wiele mi brakuje, aby się lepiej prezentować na rynku pracy (np: Nie wiem jak działają bazy danych i które z nich powinienem używać). Z tego względu ciekawi mnie jak inni się tego wszystkiego uczą. Zamierzam w przyszłości iść na Informatykę jednak zaczyna mnie irytować fakt, że aby ktokolwiek chciał mnie zatrudnić to muszę iść na studia. Czy są jakieś kursy, bądź rzeczy, które mógłbym robić, aby polepszyć moją sytuację?
Odpowiedź:
Wydaje mi się, że źle do tego podchodzisz. Masz nadzieję, że aby czegoś się nauczyć to musisz koniecznie przejść przez jakieś kursy, gdzie ktoś cię ciebie czegoś nauczy. A samoucy właściwie robią coś zupełnie innego.
Programista samouk ma właściwie bardzo wiele wspólnego z osobą, która sama nauczyła się grać na gitarze. Nie wiem czy kiedykolwiek grałeś na gitarze, więc wytłumaczę ci jak osoba, która chcę się nauczyć grać na gitarze może podejść do nauki gry na tym instrumencie.
Po pierwsze, znajdują swój wzorzec. Jeżeli zamierzają nauczyć się grać na gitarze, to mają swojego idola(bądź idoli) i prawdopodobnie będzie to jakiś znany gitarzysta, którego chętnie słuchają. Więc starają się być tak jak on. Po tym fakcie decydują się że "Ja też mogę być gitarzystą!". Więc idą do lokalnego sklepu muzycznego(albo serwisu aukcyjnego) i kupują używaną gitarę (bo są tańsze i nie robi to na początku zbytniej różnicy).
Następnie jedna z dwóch rzeczy się wydarzy.
Albo ta osoba zabierze się za książkę typu "Gitara dla bystrzaków", bądź wejdzie na YouTube i zacznie się uczyć jak grać ich ulubione piosenki. Z reguły ci którzy grają swoje ulubione piosenki radzą sobie lepiej z grą na gitarze.
Tak więc, jeżeli młody adept jest zmotywowany, aby nauczyć się konkretnej piosenki to będzie oglądał filmy instruktażowe, drukował tabulatury, akordy i tak dalej i będzie starał się tą piosenkę odtworzyć na podstawie dostępnych mu materiałów.
Po wielu godzinach ćwiczeń, nauki akordów, solówek, sposobów kostkowania i tak dalej, będzie w stanie zagrać swoją własną wersję piosenki. Nie będzie ona dokładnie taka sama, ale wystarczająco dobra, aby zrobić wrażenie.
Następnie zacznie się uczyć kolejnej piosenki, która się mu podoba. Po drodze nauczy się schematów, technik i tak dalej nie zdając sobie nawet z tego sprawy, czym one faktycznie są. Będzie je stosować nie znając ich nazw i jak one w teorii faktycznie działają.
Po pewnym czasie gra na gitarze będzie po prostu "czymś naturalnym" i zabranie się za naukę nowej piosenki będzie powszechne i bezproblemowe. A "mowa" gitarowa będzie czymś czym może się porozumiewać tak jak ty, czy ja porozumiewamy się używając słów.
To wszystko się dzieje po tysiącach godzin ćwiczeń. Nawet grając kilka godzin dziennie, zabierze to wiele lat.
Ale... co to ma wspólnego z programistami samoukami?
Więc... tą rzeczą, która tworzy programistów samouków jest to, że oni budują rzeczy. Dużo rzeczy. Aby stać się świetnym programistą z cennymi umiejętnościami na rynku pracy, musisz budować rzeczy i pisać kod.
Chodzenie na zajęcia/kursy i nauka teorii jest świetnym pomysłem, ale wielu profesorów nie dała rady "wykodować" swojej drogi do pracy zawodowej. Nie byliby w stanie stworzyć użytecznej aplikacji, którą ktokolwiek chciałby używać, nawet jakby się starali.
To nie chodzi o to, że oni się na tym nie znają. Raczej o to, że do umiejętności profesora należą badania naukowe i ich teoretyczne zrozumienie, a nie pisanie kodu i przynoszenie wartości dla klienta.
Widzisz różnicę?
Najlepsi programiści z którymi pracowałem stali się dobrzy ponieważ budowali rzeczy. Wiele rzeczy. Praktycznie... cały czas.
Na ten przykład, dzisiaj wszyscy używają Wordpressa. Długo przed powstaniem Wordpressa stworzyłem dla własnych celów 3, bądź 5 różnych Systemów Zarządzania Treścią (CMS) w PHP i MySQL. Tworzyłem gry. Tworzyłem aplikacje mobilne. Frameworki. Oraz aplikacjie SAAS.
Nikt mi za to nie płacił. Robiłem to dla zabawy, nauki, bądź z ciekawości.
Nie byłem na zajęciach od lat i nie wydaje mi się, że by pomogły mi one w mojej karierze. Jednakże, gdybym się zdecydował stworzyć własny język programowania, bądź system operacyjny od podszewki, to mogę się założyć że przy okazji nauczył bym się bardzo wielu ciekawych rzeczy.
Tak, prawdopodobnie bym mógł iść na zajęcia z tej dziedziny, ale nauczyłbym się o wiele więcej budując coś, robiąc błędy i naprawdę "doświadczając" tego wszystkiego, niż gdybym przeczytał książkę, bądź wysłuchał wykładu.
Więc moja rada da ci sporą przewagę od tych którzy tego nie robią...
Rozwiąż problem, który chcesz rozwiązać. Stwórz program, który chciałbyś, aby oprogramowanie robiło. Albo ktoś inny by chciał by oprogramowanie robiło. Pisz kod w tym kierunku każdego dnia. Noce, weekendy, codziennie. Nawet jeżeli spędzisz nad tym 15 minut, to będzie to wystarczająca ilość czasu.
Aż w końcu będziesz mieć coś co działa i jest całkiem przyzwoite.
A potem robisz to znowu. Budujesz coś innego. Twórz, twórz, twórz i jeszcze raz twórz. Stawiaj sobie wyzwania, aby pomóc sobie w osiągnięciu tych dziesiątek tysięcy godzin.
W miarę tworzenia staraj się zbierać swoje prace i publikuj je jako portfolio na swojej stronie. Za każdym razem, gdy ktoś skończysz wrzuć to na social media, Reddit, Twitter cokolwiek. Napisz na ten temat wpis na blogu.
Masz 17 lat... do czasu ukończenia 20 bez problemu zebrałbyś 2000+ godzin i około 10-20 projektów w portfolio. Nauczyłbyś się również masę rzeczy, których nie nauczą się ludzie chodzący na lekcje czy wykłady.
Co więcej, pokażesz że umiesz pisać kod, rozwiązywać problemy i tworzyć coś pożytecznego. To jest cenne. To jest coś czego szukają firmy.
Gdy tylko znajdziesz pracę, twórz dalej w swoim wolnym czasie i promuj to co stworzyłeś. Rozwiniesz się szybciej od swoich rówieśników, bo gdy ty się uczysz, rozwijasz i tworzysz to oni wracają do domu i siadają się przed telewizorem.
Im więcej tworzysz, tym więcej się uczysz. Im więcej się uczysz, tym cenniejszy się stajesz. Im cenniejszy się stajesz, tym łatwiej jest ci znaleźć pracę i większą dostaniesz pensję.
@Rezix: moim zdaniem pisanie od razu kodu też nie jest takie dobre bo jak ktoś nie zna nawet podstaw i nie wie o co chodzi w kodowaniu to więcej czasu spędzi w google niż nad projektem, zacznie utrwalać złe wzorce, ja pamiętam jak zaczynałem to główne rady właśnie "zacznij coś tworzyć" i tak stworzyłem aplikację opierającą się chyba na 100 wywołaniach "Console.Writeline()" a w nawiasach działania matematyczne, oczywiście to działało (jakoś)
@Rezix: mi kursy, książki, uczelnia dają pewność siebie, odrobinę komfortu zanim rozpocznę korzystanie z niej technologii. Teraz już zaczynam od dokumentacji, ewentualnie tutoriala. Jeśli brakuje mi tam informacji lub nam wrażenie, że jest nieaktualna, czytam kod źródłowy, debuguję. Coraz częściej czytam blogi projektowe. Nic nie zastąpi doświadczenia, ale są ludzie, dla których skok na otwarte morze nie jest na początku dobrym pomysłem. Czyli stare dobre TIMTOWTDI.
@Rezix: Analogie programisty samouka do gitarzysty samouka idą dalej niż tylko grindownie. Gitarzysta samouk jest nieświadomy całej masy aspektów muzycznych, które gitarzysta uczony przez nauczyciela będzie miał przerobione.
Tak samo programista. Jak ktoś siada i zaczyna klepać, to może i będzie umiał coś wyklepać, ale bez książek, studiów czy bycia prowadzonym przez kogoś, kto się na tym zna - to będzie po prostu kaleczył, bo duża część samouków ma za płytki
@Bambro: na początku będąc samoukiem tworzy się taki kod i tyle, potem to mija, szybciej lub wolniej, no ja nigdy nie tworzyłem czegoś na zasadzie 100x powtórzeń, bo jak trafiałem na taki moment, to szukałem i kilka godzin jak to ominąć, monotonne klepanie tak mnie demotywowało że po prostu nie potrafiłem :D
A tak to jeszcze jest sprawa właśnie książek i poradników... wszystkie mnie demotywowały, za dużo suchej wiedzy a nic się nie tworzyło, tylko jakieś np kalkulatory, czy program co wczytuje dane pracowników z konosli, no ***** zabić się idzie.
@GotoFinal: Ja na przykład wolę akurat czytać książki niż pisać coś tylko dla pisania ( ͡°͜ʖ͡°) Wolę zjeść suchą wiedzę w pigułce i ją przyswoić zamiast
@GotoFinal: dlatego zacząłem wypowiedź od "moim zdaniem", każdy się uczy tak jak mu lepiej i ja akurat wolę mieć jakiekolwiek pojęcie o tym co robię, bo miałem właśnie na odwrót - jak brałem losowy kod i nie wiedziałem co on robi, co on TAK NAPRAWDĘ robi, widziałem tylko jakieś komendy, fajnie, ale co się dzieje pod tym kodem? Do czego on się odwołuje? Skąd on się tak naprawdę wziął? Mogłem się
zamiast bez sensu dłubać coś, co nie jest nikomu do niczego potrzebne
Czyli jak przykłady z książek :D
Nie umiem się zmusić do robienia rzeczy niepotrzebnych po prostu.
No właśnie, to jak można przerabiać te przykłady z książek ;/
Ja sobie znalazłem takie rzeczy by to miało dla mnie sens, np zaczynając naukę javy bawiłem się rozszerzeniami do serwerów minecraft, można je potem upublicznić czy nawet sprzedawać, a wtedy też
No ale tak się zgadzam że każdy powinien się uczyć po swojemu, bo to że ktoś woli książki to oczywiście szanuje :D Mi zwyczajnie taka sucha wiedza nie wchodzi, tylko od razu wychodzi i nudzi.
@GotoFinal: Ja mam akademicki background jeśli chodzi o naukę, dlatego wolę raczej suche info ( ͡º͜ʖ͡º) Praktyka jest wtedy, kiedy ktoś coś faktycznie potrzebuje.
Nie ma jednej drogo dobrej dla każdego. Znam ludzi którzy potrafią przeczytać książkę, a potem dopiero zacząć coś robić na jej podstawie. Znam też takich którzy chcą coś zrobić i po drodze uczą się rzeczy które są im w tym potrzebne. I nie powiem że jeden sposób jest lepszy od drugiego,bo ludzie potrafią i działają inaczej i to jest kwestia indywidualna. Co łączy obie drogi to to, że i jeden i drugi
@Rezix: nie chce mi się czytać wszystkich komentarzy, ale jest w tekście masa bzdur. Porównanie do gitary, z dupy - znaczy inaczej, pasuje to do teorii autora, opisał to na siłę, ale pasuje. Ja postaram się to sprostować: Uczysz się grać na gitarze. Uczysz się piosenek ulubionego muzyka. Uczysz się z tutoriali na yt, i faktycznie nauczyłeś się grać piosenkę, wychodzi ci znośnie, ale nadal czegoś ci brakuje. Zaczynasz grać kolejną
Zresztą tak samo miałem jak przyszła do mnie książka ok. 2k stron (1600 to treść, a jeszcze spisy treści, indeks itp) myślałem że będę się #!$%@?ł z tym rok bo przecież też trzeba coś w międzyczasie robić. Książka okazała się być napisana na tyle fajnym językiem i ukazująca nie tylko podstawy, ale też bardziej zaawansowane rzeczy, skąd dana klasa pochodzi, co jest mi NAPRAWDĘ potrzebne, zamiast czytać coś czego nigdy nie użyję,
Takie pytanie pojawiło się w serwisie Quora
Mam 17 lat i programuję od 14 roku życia. Głównie koncentruje się na Javie i udało mi się zdobyć piątkę w ocenie końcowej z Informatyki. Jestem całkiem biegły w używaniu Javy (składnia, OOP, GUI/JFrame itd.) i nawet całkiem dobrze radzę sobie z HTML5 oraz CSS3. Jednakże wydaje mi się, że wciąż zbyt wiele mi brakuje, aby się lepiej prezentować na rynku pracy (np: Nie wiem jak działają bazy danych i które z nich powinienem używać). Z tego względu ciekawi mnie jak inni się tego wszystkiego uczą. Zamierzam w przyszłości iść na Informatykę jednak zaczyna mnie irytować fakt, że aby ktokolwiek chciał mnie zatrudnić to muszę iść na studia. Czy są jakieś kursy, bądź rzeczy, które mógłbym robić, aby polepszyć moją sytuację?
Odpowiedź:
Wydaje mi się, że źle do tego podchodzisz. Masz nadzieję, że aby czegoś się nauczyć to musisz koniecznie przejść przez jakieś kursy, gdzie ktoś cię ciebie czegoś nauczy. A samoucy właściwie robią coś zupełnie innego.
Programista samouk ma właściwie bardzo wiele wspólnego z osobą, która sama nauczyła się grać na gitarze. Nie wiem czy kiedykolwiek grałeś na gitarze, więc wytłumaczę ci jak osoba, która chcę się nauczyć grać na gitarze może podejść do nauki gry na tym instrumencie.
Po pierwsze, znajdują swój wzorzec. Jeżeli zamierzają nauczyć się grać na gitarze, to mają swojego idola(bądź idoli) i prawdopodobnie będzie to jakiś znany gitarzysta, którego chętnie słuchają. Więc starają się być tak jak on. Po tym fakcie decydują się że "Ja też mogę być gitarzystą!". Więc idą do lokalnego sklepu muzycznego(albo serwisu aukcyjnego) i kupują używaną gitarę (bo są tańsze i nie robi to na początku zbytniej różnicy).
Następnie jedna z dwóch rzeczy się wydarzy.
Albo ta osoba zabierze się za książkę typu "Gitara dla bystrzaków", bądź wejdzie na YouTube i zacznie się uczyć jak grać ich ulubione piosenki. Z reguły ci którzy grają swoje ulubione piosenki radzą sobie lepiej z grą na gitarze.
Tak więc, jeżeli młody adept jest zmotywowany, aby nauczyć się konkretnej piosenki to będzie oglądał filmy instruktażowe, drukował tabulatury, akordy i tak dalej i będzie starał się tą piosenkę odtworzyć na podstawie dostępnych mu materiałów.
Po wielu godzinach ćwiczeń, nauki akordów, solówek, sposobów kostkowania i tak dalej, będzie w stanie zagrać swoją własną wersję piosenki. Nie będzie ona dokładnie taka sama, ale wystarczająco dobra, aby zrobić wrażenie.
Następnie zacznie się uczyć kolejnej piosenki, która się mu podoba. Po drodze nauczy się schematów, technik i tak dalej nie zdając sobie nawet z tego sprawy, czym one faktycznie są. Będzie je stosować nie znając ich nazw i jak one w teorii faktycznie działają.
Po pewnym czasie gra na gitarze będzie po prostu "czymś naturalnym" i zabranie się za naukę nowej piosenki będzie powszechne i bezproblemowe. A "mowa" gitarowa będzie czymś czym może się porozumiewać tak jak ty, czy ja porozumiewamy się używając słów.
To wszystko się dzieje po tysiącach godzin ćwiczeń. Nawet grając kilka godzin dziennie, zabierze to wiele lat.
Ale... co to ma wspólnego z programistami samoukami?
Więc... tą rzeczą, która tworzy programistów samouków jest to, że oni budują rzeczy. Dużo rzeczy. Aby stać się świetnym programistą z cennymi umiejętnościami na rynku pracy, musisz budować rzeczy i pisać kod.
Chodzenie na zajęcia/kursy i nauka teorii jest świetnym pomysłem, ale wielu profesorów nie dała rady "wykodować" swojej drogi do pracy zawodowej. Nie byliby w stanie stworzyć użytecznej aplikacji, którą ktokolwiek chciałby używać, nawet jakby się starali.
To nie chodzi o to, że oni się na tym nie znają. Raczej o to, że do umiejętności profesora należą badania naukowe i ich teoretyczne zrozumienie, a nie pisanie kodu i przynoszenie wartości dla klienta.
Widzisz różnicę?
Najlepsi programiści z którymi pracowałem stali się dobrzy ponieważ budowali rzeczy. Wiele rzeczy. Praktycznie... cały czas.
Na ten przykład, dzisiaj wszyscy używają Wordpressa. Długo przed powstaniem Wordpressa stworzyłem dla własnych celów 3, bądź 5 różnych Systemów Zarządzania Treścią (CMS) w PHP i MySQL. Tworzyłem gry. Tworzyłem aplikacje mobilne. Frameworki. Oraz aplikacjie SAAS.
Nikt mi za to nie płacił. Robiłem to dla zabawy, nauki, bądź z ciekawości.
Nie byłem na zajęciach od lat i nie wydaje mi się, że by pomogły mi one w mojej karierze. Jednakże, gdybym się zdecydował stworzyć własny język programowania, bądź system operacyjny od podszewki, to mogę się założyć że przy okazji nauczył bym się bardzo wielu ciekawych rzeczy.
Tak, prawdopodobnie bym mógł iść na zajęcia z tej dziedziny, ale nauczyłbym się o wiele więcej budując coś, robiąc błędy i naprawdę "doświadczając" tego wszystkiego, niż gdybym przeczytał książkę, bądź wysłuchał wykładu.
Więc moja rada da ci sporą przewagę od tych którzy tego nie robią...
Rozwiąż problem, który chcesz rozwiązać. Stwórz program, który chciałbyś, aby oprogramowanie robiło. Albo ktoś inny by chciał by oprogramowanie robiło. Pisz kod w tym kierunku każdego dnia. Noce, weekendy, codziennie. Nawet jeżeli spędzisz nad tym 15 minut, to będzie to wystarczająca ilość czasu.
Aż w końcu będziesz mieć coś co działa i jest całkiem przyzwoite.
A potem robisz to znowu. Budujesz coś innego. Twórz, twórz, twórz i jeszcze raz twórz. Stawiaj sobie wyzwania, aby pomóc sobie w osiągnięciu tych dziesiątek tysięcy godzin.
W miarę tworzenia staraj się zbierać swoje prace i publikuj je jako portfolio na swojej stronie. Za każdym razem, gdy ktoś skończysz wrzuć to na social media, Reddit, Twitter cokolwiek. Napisz na ten temat wpis na blogu.
Masz 17 lat... do czasu ukończenia 20 bez problemu zebrałbyś 2000+ godzin i około 10-20 projektów w portfolio. Nauczyłbyś się również masę rzeczy, których nie nauczą się ludzie chodzący na lekcje czy wykłady.
Co więcej, pokażesz że umiesz pisać kod, rozwiązywać problemy i tworzyć coś pożytecznego. To jest cenne. To jest coś czego szukają firmy.
Gdy tylko znajdziesz pracę, twórz dalej w swoim wolnym czasie i promuj to co stworzyłeś. Rozwiniesz się szybciej od swoich rówieśników, bo gdy ty się uczysz, rozwijasz i tworzysz to oni wracają do domu i siadają się przed telewizorem.
Im więcej tworzysz, tym więcej się uczysz. Im więcej się uczysz, tym cenniejszy się stajesz. Im cenniejszy się stajesz, tym łatwiej jest ci znaleźć pracę i większą dostaniesz pensję.
Więc idź i pisz kod! Twórz coś!
~Brian
Tłumaczenie wpisu z tego bloga: http://brianknapp.me/how-do-self-taught-developers-actually-get-jobs/
Sprawdźcie również jego książkę:
http://brianknapp.me/creative-genius/
A tu link bezpośredni do Amazonu: https://www.amazon.com/dp/B0163BAUWC/?tag=bkme-20
Wpis pojawił się również na moim blogu :)
http://www.noob-programmer.com/nauka-programowania/jak-znalezc-prace/
#naukaprogramowania #gitara #muzyka #programista15k
Nic nie zastąpi doświadczenia, ale są ludzie, dla których skok na otwarte morze nie jest na początku dobrym pomysłem.
Czyli stare dobre TIMTOWTDI.
Tak samo programista. Jak ktoś siada i zaczyna klepać, to może i będzie umiał coś wyklepać, ale bez książek, studiów czy bycia prowadzonym przez kogoś, kto się na tym zna - to będzie po prostu kaleczył, bo duża część samouków ma za płytki
@Rezix: Podoba mi się te zdanie:
@GotoFinal: Ja na przykład wolę akurat czytać książki niż pisać coś tylko dla pisania ( ͡° ͜ʖ ͡°) Wolę zjeść suchą wiedzę w pigułce i ją przyswoić zamiast
Czyli jak przykłady z książek :D
No właśnie, to jak można przerabiać te przykłady z książek ;/
Ja sobie znalazłem takie rzeczy by to miało dla mnie sens, np zaczynając naukę javy bawiłem się rozszerzeniami do serwerów minecraft, można je potem upublicznić czy nawet sprzedawać, a wtedy też
@GotoFinal: Ja mam akademicki background jeśli chodzi o naukę, dlatego wolę raczej suche info ( ͡º ͜ʖ͡º) Praktyka jest wtedy, kiedy ktoś coś faktycznie potrzebuje.
Co łączy obie drogi to to, że i jeden i drugi
Porównanie do gitary, z dupy - znaczy inaczej, pasuje to do teorii autora, opisał to na siłę, ale pasuje. Ja postaram się to sprostować:
Uczysz się grać na gitarze. Uczysz się piosenek ulubionego muzyka. Uczysz się z tutoriali na yt, i faktycznie nauczyłeś się grać piosenkę, wychodzi ci znośnie, ale nadal czegoś ci brakuje. Zaczynasz grać kolejną