Updated. Poniżej również tekst "po roku pracy".

Old stuff. Poniższy tekst został napisany w styczniu 2015 (a pracuję od maja 2015), w momencie kiedy miałem silne postanowienie zmiany pracy by zostać programistą. Zacząłem się uczyć na początku 2014 r. Z perspektywy czasu, powiem: Warto. Nie ma drogi na skróty. Chcieć to móc. Motywacja jest bardzo ważna, a może najważniejsza. Zacznij się uczyć. A piszę to dlatego, bo zauważyłem, że jest spore zainteresowanie tematem. Przede wszystkim, odpowiedz sobie na to bardzo ważne pytanie.

"Postanowiłem się podzielić w jaki sposób ja zamierzam się przebranżowić, być może ułatwi to sprawę pytającym. Może ktoś skorzysta.

Słowem wstępu. Mam 29 lat. Pracuję w innej branży. W ostatnim roku zacząłem szukać informacji jak się przebranżowić, wiele czytałem, gromadziłem informacje. Zacząłem też się uczyć i próbować wielu rzeczy, robić proste projekty, próbując wymyślić co mi bardziej będzie pasować a co nie. Nie mam komfortowej sytuacji, że mogę rzucić wszystko i zacząć coś innego ale staram się, żeby była jak najbardziej komfortowa. Przyszło też załamanie, z powodów osobistych a także nieco sytuacji finansowej (w zasadzie źle nie zarabiam, tylko miałem spore wydatki i po prostu zastanawiałem się czy podołam). Mimo to nie zrezygnowałem z pomysłu. Muszę spróbować bo nie da mi to spokoju. W zasadzie to w pomyśle nikt mnie nie popiera. Na przekór wszystkim mnie do tego ciągnie i nic na to nie poradzę. Mimo to wiele rzeczy z IT mnie interesuje, nie tylko programowanie. Niestety nie posiadam znajomych, którzy się tym trudnią. Z początku myślałem o tym czysto hobbystycznie, ale wkręcam się coraz bardziej. Nie, nie boję się, że jestem za stary.

Moje działania zanim stworzyłem konkretny plan (niekoniecznie po kolei):
  1. Szukanie i gromadzenie informacji - książki, kursy, tutoriale, ciekawe wpisy ludzie z doświadczeniem, wykłady, listy projektów itp.
  2. Wykorzystanie wszystkich możliwości jakie mam w obecnej pracy by przekuć to na zalety (np. mogłem iść chociaż na szkolenie z SQL)
  3. Przygotowanie sobie środowiska pracy, IDE, komputer, zahaczając o linuxa itp. - może złej baletnicy przeszkadza rąbek od spódnicy - ale ja się uczę po godzinach, w wolnych chwilach - na razie, więc wyeliminowanie wszystkich możliwych denerwujących aspektów działa na plus.
  4. Zdecydowanie się na technologię i zastanowienie się co chciałbym robić - było trochę Pythona, ostatecznie Java - co dokładnie chciałbym robić w sumie to jeszcze nie wiem, póki co nie tracę zainteresowania, a im więcej rzeczy poznaje to ta droga może się zmieniać. (nie wykluczam poznania innych języków, ale na razie zostaję przy Java)
  5. Oczywiście nauka w wolnych chwilach: weekendy, w tygodniu po godz. 17:00 - wygospodarować sobie czas, zrobić plan dnia
  6. Liczne rozważania, wzloty, upadki, tracenie motywacji itp. Wniosek: potrzebowałem kopa w dupę.
  7. Pewnie większość uzna, że to śmieszne, sam tak uważałem, ale stwierdziłem, że "co mi szkodzi?". -> Tym kopem był doradca zawodowy z agencji rekruterskiej, która głównie rekrutuje stanowiska IT. Potrzebowałem usłyszeć "dasz radę", "jakie możliwości, plany A i B", "jak efektywnie podejść do zmiany zawodu", "jak pracodawca będzie na mnie patrzył", "co zmienić w CV". - Tutaj widać jak motywacja jest ważna. Nie miałem wiary w siebie i starczyło, żeby ktokolwiek powiedział mi "dasz radę" i jakoś to poszło.

No to mam swój Plan A (został nakreślony w styczniu 2015) - co zrobić by zacząć pracę jako programista Java:

  1. Wrócić do systematycznej nauki i praktycznego kodowania -> własne projekty & zacząć coś open source (bo miałem przerwę) - to obejmuje również wymyślanie własnych, coraz bardziej sensownych projektów
  2. Zapisać się do lokalnych organizacji, chodzić na konferencje oraz targi pracy -> trochę zaznajomić się ze środowiskiem
  3. Opracować dokumenty aplikacyjne oraz konta społecznościowe jak linkedin i goldenline w kierunku stanowiska programisty i pozostać tam aktywnym
  4. Stworzyć listę interesujących firm z mojej lokalizacji
  5. Mailing -> stworzyć interesującą, nie za długą wiadomość e-mail opisującą trochę moją sytuację oraz chęć nauki i pracy i zacząć rozsyłać do firm
  6. Dalej przeglądać oferty pracy i staży. Może szukać firm, które realizują projekty dla firm z mojej obecnej branży
  7. Szukać stażu/praktyk itp., pierwszych doświadczeń, które można wpisać do CV, jeśli się zdarzy rzucić obecną pracę i poświęcić duże ilości czasu na pracę oraz naukę po godzinach pracy
  8. Iść na studia podyplomowe + certyfikat OCA/OCP Java - to był punkt, którego pewien nie byłem, rozważałem też zaoczną Infę albo nic nie robić. Przejrzałem ofertę tych studiów podyplomowych, podoba mi się tematyka (bardziej ogólny kierunek niż sama Java), prowadzący to chyba głównie praktycy, więc na plus. I jedna z zalet takich studiów, poznanie środowiska i może właściwych ludzi, którzy pomogą pchać to dalej. Certyfikat zobaczę jak obrócą się sprawy - przynajmniej jest tani. Aha mam zaoszczędzoną kasę i to też jest argument by zrobić te studia. I to bardziej “dla siebie” niż dla papiera.
  9. W jakiś wolnych chwilach np. czekając gdzieś mieć ze sobą jakąś książkę np. “clean code” i coś sobie czytać
  10. Być może stworzyć bloga o programowaniu lub własną stronę jako swoje CV czy cokolwiek w ten deseń
  11. Dostać się na stanowisko Junior Java Developer
  12. Na bazie doświadczenia opracować ścieżkę dalszego rozwoju: Android, Web itp. itd. Wiele z tych punktów robić jednocześnie. Generalnie to zrobić jak najwięcej w krótkim czasie, by nieco nadrobić stracony czas.

Oczywiście to jest coś co ja będę się starał realizować. Wierzę, że dla innych może zadziałać coś innego.”

Ps. Nie wszystkie z tych punktów zostąły spełnione np. na studia i na certyfikat ostatecznie nie poszedłem :)


UPDATE. Po roku pracy:

Jest dobrze, mocno do przodu, mój obecny stack to mniej więcej coś takiego: Spring Framework (Spring DI, Spring Boot, Spring Data, Spring Security, Spring MVC) Elementy JEE Hibernate, JPA, Jersey, Rest, Guava TDD, JUnit, Mockito, Spock Eclipse/IntelliJ, Git, Gradle, Groovy, Jenkins DB: MySQL, Oracle + trochę Scala i akka-http

Kiedyś napisałem dla kogoś tekst odnośnie "motywacji ludzi, którzy chcą się przebranżowić". Może to komuś pomoże.


Ogólnie jakbym miał kiedyś o tym robić prezentację to zaczynałbym od tego:

https://www.youtube.com/watch?v=9O-ZI0Kzttg Scena z Laską z filmu Chłopaki nie Płaczą.

Chciałem napisać krótko a i tak wyszło dużo. Będzie Wall of text, a mógłbym napisać więcej. Poniżej pytania jakie otrzymywałem, myślę, że to naświetli problem.Zresztą po tych pytaniach raczej widać, że kłopoty w przebranżowieniu nie leżą w samej nauce programowania, tylko gdzie indziej.

Czemu ludzie chcą zostać programistami?

Głównie dlatego, że chcą robić coś ciekawego. Generalnie większość takich osób jest w podobnym wieku co ja 29-30 lat. Ci młodsi by się przebranżowić wielkich kłopotów raczej nie mają. Mam wrażenie, że jak dawno temu byliśmy głupi i młodzi to wydawało nam się, że na jakiekolwiek studia nie pójdziemy to będzie dobrze. Rzeczywistość to weryfikuje. Wydaje mnie się, że często to są ludzie ambitni, którzy się duszą bo nie mogą się w żaden sposób realizować zawodowo.

W innej branży bardzo szybko można popaść w rutynę i łatwo osiągnąć szklany sufit możliwości, realizacji siebie czy zarobków. Wtedy jak się pomyśli, że będzie się tak pracować X lat, to się rzygać chce. "znowu do tej roboty". IT to jest cały czas coś nowego, wiele ścieżek rozwoju, nawet jeśli pracodawca nas blokuje to można się uczyć czegoś nowego. Mi osobiście średnio pasowała realizacja siebie w sferze bardziej biznesowej. Część ludzi chyba chce dlatego, że słyszała, że programiści dużo zarabiają. Według mnie jest to skazane na porażkę. Myślę, że są łatwiejsze sposoby na zarabianie a programowanie trzeba chociaż trochę lubić. Część ludzi też chce być "kimś" i robić coś 'konkretnego".

Ogólnie wyszczególniłbym kilka najważniejszych problemów przy realizacji celu:

  1. Motywacja - numer jeden. Motywacja, chęci, determinacja są najważniejsze. Głównym problemem tutaj jest to, że ludzie zamiast widzieć cel widzą same problemy, przez co nie skupiają się na programowaniu, na pisaniu linii kodu, tylko na np. A czy pisać pod Windowsem czy linuksem? Czy w Eclipse czy w Netbeans? Czy klawiatura taka i taka starczy czy może powinienem mieć większy monitor? Jaki język wybrać? itp. - Człowiek piętrzy problemy, które są tak naprawdę nieistotne.
  2. Wiara w siebie - W sumie można by połączyć to z powyższym. Osobiście nie miałem za bardzo wsparcia w realizacji celu, nie mogłem sobie też pozwolić na to, żebym nie miał źródeł dochodu, więc musiałem jednocześnie pracować i się uczyć. Brak czasu wolnego. Ogólnie to samo nic nie przyjdzie, trzeba wykonać kawał ciężkiej roboty. W moim przypadku 1 osoba powedziała mi : You can do it i to wystarczyło.
  3. Czas - bez czasu poświęconego na naukę nic z tego nie będzie. Warto nakreślić sobie plan działania, albo nawet plan A i plan B (sam myślałem alternatywnie by zacząć od testera czy jakiegoś wdrożeniowca, gdzie będzie potrzebna wiedza biznesowa), starać się realizować punkty planu, żeby mieć jakiś progress. U mnie w zasadzie działało to na zasadzie “uczę się kiedy tylko mogę”. Łączy się z tym kwestia “sytuacji życiowej”. Wiek też robi swoje, im jesteśmy starsi tym więcej obowiązków.

Wydaje mnie się, że wiele osób szuka w necie potwierdzenia, że się da, przypadki ludzi, którym się udało ich motywują. Sam też najpierw takiego potwierdzenia szukałem.

Przeszkody jakie ludzie widzą:

Ludzie boją się, że nie podołają, że jest za późno, że są za starzy, że ich sytuacja życiowa na to nie pozwoli, że są za głupi, bo programowanie to czarna magia, że nie mają czasu, że za wiele trudu trzeba wykonać na początek, bo sufit się zwali na głowę. itp. Większość to wymówki. Czemu tak pisze, bo sam nie miałem komfortowej sytuacji tylko musiałem zwyczajnie zaryzykować i postawić wszystko na jedną kartę. Co łatwe nie było.

Pytania jakie mi zadawano (dużo pytań tego typu dostałem):

Pytania: “Jak się uczyć?”:

  • Długo się uczysz już javy? - Uczyłem się rok od Pythona przez Javę, po godzinach z przerwami, później dostałem pracę.
  • Jak rozkladales czas po pracy na nauke? Ile godzin dziennie? - Ile mogłem to sięuczyłem
  • Jak wygladalo twoje podejscie do nauki? Jak sie uczyles? Przepisywales kod z ksiazki i pozoniej modyfikowales i pisales sam czy jak? - Wszyskie sposoby, obecnie książek mam wiele. Newslettery do mnie spływają na bieżąco, szukam nowych wyzwań cały czas
  • Mam pytanie odnośnie tego ile czasu może zająć nauka programowania aby podjąć pierwszą pracę albo chociaż staż? - U każdego będzie różnie, według mnie najważniejsze by się udało, lepiej prędzej niż później
  • Czego "warto" się uczyć? (to pytanie zawsze się wszędzie pojawia i ludziom trudno zrozumieć, że jest ono źle stawiane) . - Nigdy nie kierowałem się tym, że da się na tym zarobić. Chciałem robić co lubię, a wtedy kasa powinna sama przyjść.
Pytania o CV i rozmowę:
  • Jak wyglądała rozmowa? - miałem zadanie do zrobienia, skonsumowanie webservices i operować nimi lokalnie. Później pogadanka techniczna. Na pewno było coś z SQL
  • Jakieś testy, zadania? - jw
  • Miałeś jakiś projekt do pokazania w CV? - Nie miałem, robiłem jakieś banały ale ich nie wpisałem w CV
  • W jakiej branży pracowałeś przed przebranżowieniem? - Logistyka, z wykształcenia ogólnie mgr inż ale 0 programowania na studiach
  • Skoro wywaliłeś poprzednie doświadczenie z CV, to co w nim zostało? I co napisałeś o poprzednim doświadczeniu? - 1 linijkę, że gdzieś pracowałem te X lat
  • Czy wpisywałeś czego się uczyłeś z programowania mimo, że nie miałeś w tym doświadczenia komercyjnego? - wpisałem skill matrix w skali od 1 do 5
  • Sam się trochę uczę... czy już czas na złożenie CV? - jak nie spróbuje to się nie dowie, a jak spróbuje i się nie uda to i tak mu da to dużo wiedzy
  • A co z wymogiem wykształcenia informatycznego? - Nie wydaje się to ani trochę istotne
  • Jak sobie radziłeś ze swoim wiekiem? Czy nie jesteśmy skreślani na starcie? - Chyba jednak nie. Ale postanowiłem ukryć datę urodzenia w CV :)
  • Ile wysłałeś CV? - Miałem 1 rozmowę na testera, 2 na programistę. Na 3 się udało.
  • Czy próbowałeś np w mailu napisać krótki LM? - miałem w swoim CV zakładkę "Cel" w którym opisałem co chcę osiągnąć
  • Czy podczas swojej aplikacji wpisywałeś w CV swoje projekty i potem opowiadałeś o nich na rozmowie? - Niet
  • Pisałeś, że uważasz, że niewiele umiesz. Jak to w takim razie zrobiłeś, że Twoje CV wyglądało dobrze?- Poradziłem się doradcy zawodowego rekrutującego na rynku IT
  • Czy wysyłałeś CV do firm stricte pracujących w Javie/Spring/Hibernete etc, etc? - Szukałem pracy w Java
  • Czy warto iść na studia informatyczne? - Na pewno coś dają, obecnie raczej nie czuję kompleksów wobec ludzi co skończyli studia
  • Jak u Ciebie ze znajomością angielskiego? - ponoć jest na tyle ok, że klient chwalił ze mną komunikację
  • Ludzie często nie wiedzą jaki projekt zrobić dla nauki, to jest całkiem fajny zbiór dla początkujących: http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/
Pytania o początek kariery:
  • Płaca blisko średniej krajowej? - Mniej na początku, ale szybko się odbiłem, moje miasto to też nie Wawa, Krak czy Wroc, gdzie są lepsze stawki
  • Jak wyglądała praca na początku?- od razu na szeroką wode, rób taski, ucz się TDD itp.
  • A ile czasu obecnie poświęcasz na douczanie poza pracą? - mysle, że łącznie 1h dziennie
  • Jak można pracować z rzeczami których się nie zna? frameworki. itp. ? - taka natura tego zawodu