Nie ma tygodnia, byśmy nie dostali maila od osób początkujących z pytaniami o wskazówki na start swojej nauki programowania. Wiemy, że to dopiero czubek głowy lodowej, z resztą, Ania dobrze pamięta ile miała rozterek na początku. Zebraliśmy te wszystkie pytania w FAQ- chcę zacząc programować. Mamy nadzieję, że okaże się ono pomocne.
Czy powinnam zacząć programować?
Nie wiem, to powinna być Twoja decyzja. Jednak są pewne korzyści, które może przynieść Ci nauka programowania:
- kod jest wszędzie — używasz go w bardziej skomplikowanych operacjach excela, edytując swojego bloga czy korporacyjny newsletter. Podstawy programowania wkraczają do różnych branż, umiejętność prostych zmian w kodzie okazuje się pożądaną wiedzą.
- programowanie to sposób myślenia. Już kilkanaście godzin spędzonych z kodem pokaże Ci jak ważne jest uporządkowanie swoich myśli, ułożenie ich w logiczny ciąg, pewna kondensacja treści i wybranie tych najważniejszych. Programowanie uczy bardzo jasnego i konkretnego podejścia do rozwiązywania problemów.
- programowanie pozwala na kreatywność. Dzięki niemu, możesz zamienić swój pomysł w coś namacalnego. Bawić się, testować.
- tak, popyt na programistów rośnie i jeśli przyłożysz się do nauki i rozwoju to będziesz mogła pracować jako programista, w branży, która naprawdę dba o swoich pracowników.
- Programowanie jest fajne.
Zamiast zastanawiać się czy programowanie to coś dla Ciebie, poświęć najbliższy weekend na spróbowanie swoich sił z kodem.
Czy nie jestem za stary na programowanie?
Tak, w branży są osoby, które zaczynały naukę programowania w podstawówce.
Wiek nie jest jednak czymś, co powinno Cię ograniczać — nigdy nie jest za późno na zmianę branży. Musisz jednak zdawać sobie sprawę, że jeśli tak jak ja zmieniasz branżę, w drodze o pierwszą pracę będziesz konkurował ze studentami i absolwentami Informatyki/zdolnymi licealistami, a poprzednie doświadczenie stanie się tylko miłym dodatkiem.
Wszystko tak naprawdę zależy od Twojej motywacji i samozaparcia (nauka po pracy bywa trudna, bo człowiek zwyczajnie jest zmęczony, zbudowanie doświadczenia wystarczającego do podjęcia pierwszej pracy może zająć więcej niż myślisz, bo trzeba jakoś pokazać swoje umiejętności).
Jaki język wybrać?
Do pierwszych kroków z kodem świetnie sprawdzi się Python, który jest dość łatwy składniowo i dzięki niemu łatwo przyswoisz podstawowe koncepty związane z programowaniem.
Późniejsza decyzja, w jakim języku programować powinna zależeć od 3 czynników:
- tego, czy chcesz zajmować się aplikacjami webowymi (i wtedy także czy planujesz robić backend czy frontend), czy może aplikacjami mobilnymi (i na jaką platformę), aplikacjami okienkowymi but też tworzyć i rozwijać narzędzia systemowe,
- tego, czy wokół Ciebie są jakieś organizacje, grupy, znajomi, przyjaciele, rodzina, przystępne kursy online itp, które mogą wspierać Cię w nauce,
-tego, czy język Ci leży (jednak do oceny tego potrzeba trochę praktyki z kodem, jeśli nigdy nie programowałaś prawdopodobnie składnia nie będzie aż taką przeszkodą).
Z czego możesz wybierać? O tym pisaliśmy więcej w tym tekście, o językach programowania.
Jakiego sprzętu potrzebuję?
Na samym początku będzie wystarczał Ci ten, z którego korzystasz teraz. Jeśli jednak poważnie myślisz o programowaniu, to warto zainwestować w komputer o optymalnych parametrach, o wyborze tego odpowiedniego w zależności od budżetu pisaliśmy w tym wpisie.
Czego warto i czego nie warto się uczyć?
Przede wszystkim miej świadomość, że IT jako obszar kompetencji / potencjalnych rzeczy do nauki jest ogromny i nie da się nauczyć ich wszystkich.
Na początku swojej przygody zdecydowanie skup się na praktyce i efektach — zacznij pisac prostą aplikację, która może nie być najbardziej skomplikowana, ale ważne, żebyś zrobiła ją od początku do końca. Przy odrobinie szczęścia dowiesz się, co Ci się podoba a co nie oraz w jakich obszarach masz najmniejszą wiedzę.
Na pewno nie warto podążać ścieżką ‘akademicką’ na samym początku — teoria i szczegółowe aspekty różnych rzeczy są ważne, ale nie kluczowe na początku. Do teorii warto wrócić po nabyciu odrobiny praktyki także z innego powodu — dzięki temu będziesz miała wiedzę z pierwszej ręki, jaka wiedza przyda Ci się od razu, a jaka jest potrzebna tylko w specyficznych zastosowaniach.
Od czego zacząć?
Jeśli nigdy nie miałeś doczynienia z programowaniem — sprawdź czy to dla Ciebie. Pomysłów na to jest wiele, możesz np.
- wziąć udział w weekendowych warsztatach programowania,
- skorzystać z kursu programowania dostępnego online,
- poprosić programistycznego znajomego o pomoc…
Ważna uwaga! W przypadku takiej pierwszej próby z programowaniem nie musisz długo myśleć o tym, czy jest to Twój język programowania. Chodzi o to, byś mógł spędzić te 10–20 godzin z kodem i poznać podstawy, które mimo innej składni działają w różnych językach programowania podobnie.
Jeśli masz to za sobą i wiesz, że chcesz kontynuować swój programistyczny rozwój, zdecyduj się na język programowania i zacznij działać. Pamiętaj, że podstawy teoretyczne są ważne, jednak na początku ważniejsza jest praktyka — poszukaj więc takiej formy nauki, która będzie motywować Cię do codziennej pracy z kodem. Po poznaniu podstaw zacznij pracę z konkretnym frameworkiem nad projektem, którym będziesz mógł się pochwalić.
Nie zrażaj się! Sama wiem, jak ciężko jest na początku, gdy kod się nie kompiluje i z trudem przychodzi zrozumienie dlaczego. Języki programowania tak jak języki obce mają specyficzną składnie i jej poznanie i zrozumienie wymaga czasu. Daj go sobie, a zobaczysz jak przyjemna potrafi być praca z kodem.
Wyszukuj! Prędzej czy później sam się przekonasz, że w google jest większość odpowiedzi na męczące Cię problemy. Umiejętność szukania rozwiązań w internecie jest jedną z kluczowych, które musisz nabyć na początku Twojej kariery.
Nie wstydź się prosić o pomoc, zadawać pytań na kursie online czy forach — IT to naprawdę branża, w której ludzie dzielą się wiedzą.
Nie katuj się! Nie ma nic gorszego niż zmuszanie się do nauki. Dzień czy dwa przerwy naprawdę potrafią pomóc i przywrócić chęci.
Dbaj o swoją motywacje. Poznaj ludzi, którzy tak jak ty dopiero zaczęli naukę i takich, którzy przeszli tą drogę. Dziel się swoimi wątpliwościami i sukcesami. Ustal sobie cel i śmiało go realizuj, wiedz po co to wszystko robisz.
Studia, kursy, e‑learning czy samodzielna nauka?
Nie ma prostej odpowiedzi — najlepiej korzystać ze wszystkich materiałów, jakie masz dostępne. Kwestia oczywiście kosztów, czasu, który musisz na to poświęcić, okoliczności oraz tego, jak efektywnie się uczysz z danego źródła.
Przykładowo w moim przypadku studia w sensie merytorycznym okazały się stratą czasu — nie nauczyłem się na nich zbyt wiele i właściwie od drugiego roku były tłem dla normalnego rozwoju na codzień.
W przypadku kursów, czy to w formie elearningu, videotutoriali czy książki, najważniejszy jest efekt — upewnij się, że taki kurs uczy wszystkiego, co chciałabyś wiedzieć, przede wszystkim od strony praktycznej. Podstawy są ważne, ale szczegółowa znajomość Collection API i wszystkich metod każdego z interfejsu nie przybliży Cię do pracy jako programista. Zachęcamy do zapoznania się z naszym kursem Javy — w którym krok po kroku budujemy razem gotową aplikację webową, poznając jedynie niezbędne minimum i jednocześnie odsyłając do źródeł w których można znaleźć więcej informacji oraz uzupełniając wiedzę w serii Niezbędnik Juniora.
Jedyną radą, jaką możemy udzielić w tym zakresie na 100% to praktyka — czy to w firmie czy też pisząc własną aplikację albo uczestnicząc w warsztatach i spotkaniach, jakich niemało na pewno w Twojej okolicy. To najefektywniejszy sposób nauki i nawet milion książek nie zastąpi Ci rocznego doświadczenia i praktyki!
Gdzie szukać pomocy?
Offline: Na spotkaniach programistów, oni naprawdę nie gryzą, co więcej z chęcią wysłuchają i pomogą ;) Może znajdzie się ktoś kto będzie w stanie mentorować Twoją naukę?
Online: Znowu możesz poszukać pomocy na grupach na facebooku, np. takiej dotyczącej HTMLa i CSSa. Jeśli pracujesz wg jakiegoś internetowego kursu nie bój się napisać bezpośrednio do jego autora. Poszukaj też innych materiałów na ten temat, może w tym wypadku inny kurs czy strona (albo oficjalna dokumentacja) będzie bardziej zrozumiała. Jeśli nadal nie potrafisz sobie poradzić, spróbuj wpisać w google swój problem, istnieje duża szansa, że ktoś już zadał Twoje pytanie. Jeśli jednak nie, to polecamy Stack Overflow, czyli największe forum rozwiązywania programistycznych problemów. Jeśli uczysz się Javy to dodatkowo możemy polecić to forum, gdzie również często można znaleźć skuteczne wskazówki.
We wpisie “co robić, gdy kod się nie kompiluje” opisaliśmy kroki jakie powinnaś podjąć by rozwiązać problem ze swoim kodem.
Jakie książki i materiały polecacie?
Wybór materiałów do nauki i książek może nie być tak prosty jak się wydaje — przede wszystkim dlatego, że każdy z nas preferuje inny styl pisania i w różny sposób jest w stanie uczyć się z danej książki. Poniższe zestawienie to kilka źródeł w których prawie na pewno znajdziesz coś pomocnego w nauce na początku lub trochę dalej, ale z pewnością nie jest to lista wyczerpująca.
- The Java Tutorial (Oracle) — bardzo kompleksowe i szczegółowe materiały o wszystkich aspektach języka Java — w pewnym sensie należy traktować je jako ‘biblię’ i odniesienie. Niestety są napisane mało przystępnym dla początkujących językiem, a przykłady są czysto teoretyczne
- Clean Code/Clean Coder — książka bardziej o samej sztuce programowania niż o programowaniu w konkretnym języku jako takim; opisuje najlepsze praktyki jak pisać czytelny kod, którego nie będziemy się wstydzić za jakiś czas i przede wszystkim — który działa tak, jak zamierzono. Nie każdemu się ona sposoba, często będziesz czytać o oczywistościach, ale w naszym przekonaniu warto by one wybrzmiały. Clean Coder mówi skolei o pracy w projekcie i zespole i w naszym przekonaniu, jest to bardzo przydatna książka, w szczególności jeśli nie miałeś dużo doświadczenia z taką pracą.
- Head First Java — dobra książka dla początkujących, swego rodzaju ‘crash course’, ogólnie książki z tej serii są bardzo przystępnie napisane
- Blog Yong Mook Kim — blog na temat Javy i Springa z dużą ilością tutoriali ‘jak zrobić X’. Bardzo przystępnie napisany, niestety artykuły skupiają się na pojedynczych aspektach i nie zawsze podążają tą samą konwencją, przez co jest bardziej użyteczny do rozwiązywania problemów niż nauki
Nie zapomnij zajrzeć do wpisu z cyklu Niezbędnik Juniora, w którym bardziej szczegółowo opisujemy pomocne źródła wiedzy :)
Ile czasu zajmuje nauka programowania?
Najprawdziwszą odpowiedzią jest oczywiście — to zależy.
Przede wszystkim od tego, czy miałaś już jakąkolwiek styczność z programowaniem — niekoniecznie musi to być C++, ale nawet używanie VBA w excelu czy tworzenie stron internetowych często ułatwia zrozumienie konceptów ‘obiekt’, ‘klasa’, ‘metoda’, ‘zmienna’ itp i praktyczne korzystanie z nich.
Drugi ważny czynnik to ilość czasu, którym dysponujesz — przeczytanie wszystkich lekcji zajmie Ci w sumie parę godzin, ale robienie zadań, ćwiczenie na własną rękę i szukanie rozwiązań — znacznie dłużej. Jeśli obecnie studiujesz / nie pracujesz na cały etat, po kilku miesiącach intensywnej pracy być może będziesz mogła szukać pierwszego pracodawcy. Jeśli jednak jednocześnie pracujesz, najprawdopodobniej zajmie to trochę dłużej.
Trzecia rzecz to systematyczność — jeśli potrafisz się zmobilizować do nauki każdego dnia, będzie rewelacyjnie. Z drugiej strony — nie bój się dać sobie trochę odpoczynku, często fizycznie nie da się uczyć każdego dnia tak, żeby było efektywnie.
Ostatecznie — każdy z nas uczy się w innym tempie i nie sposób tego przewidzieć. Ogólnie musisz liczyć się z tym, że zanim podejmiesz pierwszą pracę miną raczej miesiące niż tygodnie. Jeśli podejdziesz do tego poważnie i uda Ci się wygospodarować trochę czasu — nie powinno to trwać dłużej niż półtorej roku (ale to bezpieczna estymata, bo Ani wystarczyło pół roku).
Co jeśli nie programowanie?
IT to bardzo szeroka branża i z pewnością znajdziesz coś dla siebie :) Na początku zapoznaj się z serią Kulisy Branży IT na naszym blogu — znajdziesz tam wywiady z praktykami, osobami, które pełnią najróżniejsze role i przeczytasz, na czym polega ich codzienna praca.
Zachęcamy też do zapoznania się z opisami stanowisk, które przygotowaliśmy wcześniej — znajdziesz tam opisane obowiązki kilku ról, z jakimi możesz się spotkać w branży IT.
Warto też zapytać znajomych, którzy pracują w firmach IT — powiedzą Ci więcej o tym, jak działają ich firmy, jakich osób szukają w projektach i w jakie kompetencje są skłonni inwestować.
Nie zapomnij też przyjrzeć się dokładniej stanowisku programisty — być może jednak odnajdziesz się w tej roli.
Jak sama zobaczysz, programowanie to tylko wycinek tego, co nazywamy branżą IT :)
Co sądzicie o certyfikacji?
To zależy od tego, jakie stawiasz sobie cele w karierze. Certyfikat dla samego certyfikatu nie ma sensu. Jeśli rozważasz certyfikowanie się, zastanów się nad poniższymi pytaniami:
- czy zdanie tego certyfikatu pomoże Ci rozwinąć karierę w kierunku, jaki sobie obrałaś?
- czy pozwoli Ci rozwinąć swoje kompetencje w sposób pomocny dla (przyszłej) pracy zawodowej?
- czy robisz go bardziej dla siebie niż dla wpisu w CV?
- czy jest on potrzebny do tego, aby uzyskać inny, ważniejszy dla Ciebie certyfikat?
Powodów, dla których możesz chcieć się certyfikować jest mnóstwo — najważniejsze to usiąść i szczerze je przed samym sobą przemyśleć. A następnie zweryfikować — jeśli certyfikat pomoże Ci w rozwoju Twojej kariery, poszerzy Twoje umiejętności i pomoże wypełnić luki w wiedzy, to jak najbardziej warto. W przeciwnym wypadku — jeśli zależy Ci głównie na wpisie w CV, możesz spokojnie sobie odpuścić.
Kiedy można iść do pracy?
Jak tylko poczujesz się pewnie z kodem i jesteś w stanie samodzielnie pracować, szukając rozwiązań na problemy, a nie gotowego kodu do przeklejenia — możesz zacząć planować pierwszą pracę :)
Jeśli chodzi o kompetencje, to różne firmy mają różne oczekiwania — ale większość z nich jest w stanie zaakceptować braki w wiedzy jeśli widzą chęć rozwijania się i zaangażowanie w to, co robisz.
Dlatego najwazniejszym kryterium jest wspomniana pewność siebie — przekonanie, że jesteś w stanie za pomocą narzędzi zamienić opis słowny rozwiązania na kod.
Jak nie stracić motywacji?
Jasno określ swój cel i rozbij go na małe kroczki. Ja na początku wyznaczyłam sobie naprawdę drobne cele — ukończenie kursu na codecademy, potem napisanie pierwszego kodu w Javie, potem kończenie poszczególnych lekcji, napisanie pierwszej aplikacji. Jak zaczęłam pracę, przez pierwsze tygodnie “tylko pracowałam” nie było czasu na dodatkową naukę, skupiałam się na nauce na bieżąco niezbędnej do zadań. Jak zrobiło się luźniej wróciłam do uzupełniania wiedzy.
W miarę szybko wymyśl sobie jakiś mały projekt i nad nim pracuj. Chodzi o to, by chciało Ci się pracować, by Ciebie to interesowało. Książkowe przykłady szybko nudzą.
Nie bierz za dużo na siebie. Wiemy, że przyszły pracodawca będzie oczekiwał od Ciebie poza znajomości “głównego” języka również podstaw z HTML5, CSS3, JS,SQL… w ogłoszeniach pojawia się też znajomość różnych narzędzi — nie da się tego nauczyć jednocześnie. Lepiej skupić się na jednym temacie i potem uzupełnić swoją wiedzę. Dzięki temu będziesz mieć mocną bazę, którą będziesz uzupełniać.
Doceniaj swoje postępy i celebruj sukcesy. Wiemy, że na początku może być trudno dojrzeć w tych małych kroczkach konkretną wartość, ale naprawdę WARTO.
Gdzie szukać informacji o rynku pracy / pracodawcach?
Najlepszym źródłem informacji są osoby, które na tym rynku pracują — jeśli masz znajomego programistę, testera, managera czy grafika, po prostu zapytaj. Z pewnością ma własne doświadcznia lub też słyszał opinie o różnych pracodawcach.
Jeśli jednak nie znasz nikogo, kto by pracował w branży IT, możesz poszukać w internecie — serwisy takie jak glassdoor.com pozwalają ‘opiniować’ pracodawców, choć należy się liczyć, że opinie takie mogą być pisane przez niereprezentatywną grupkę pracowników. Warto zerknąć także na profil LinkedIn firmy oraz stronę na FB (oczywiście jeśli prowadzą, nie wszystkie firmy to robią) — czasem znajdziesz tam zdjęcia z biura, często na podstawie postów czy zdjęć można wywnioskować ‘atmosferę’, jaką stara się budować firma.
Możesz także poszukać wydarzeń współorganizowanych przez daną firmę lub takich, w których ona uczestniczy — będziesz miał okazję porozmawiać z pracownikami lub rekruterami.
No i zawsze możesz aplikować do firmy, która Cię szczególnie interesuje — rozmowa kwalifikacyjna to nie tylko test dla kandydata, ale także dla samej firmy. Upewnij się, że zapytasz o wszystko, co warto wiedzieć.
Gdzie szukac informacji o eventach / konferencjach / spotkaniach?
Co pewnie Cię nie zdziwi — głównie w internecie ;) Warto śledzić programistyczne blogi, bo często są one patronami wydarzeń. Warto też śledzić grupy programistów danego języka (np. Java User Group, ale idą tym tropem nazewnictwa, znajdziesz też grupy innych języków programowania), zazwyczaj takie grupy spotkają się raz w miesiącu i wymieniają wiedzą.
Drugim źródłem informacji są społeczności w mediach społecznościowych — często są one współorganizatorami większych wydarzeń, uczestniczą w nich lub wręcz całkowicie organizują. Geek Girls Carrots, Women in Technology, WebMuses, Girls Code Fun, Django Girls, ale też Czwartki Social Media.
Warto śledzić grupy związane z IT czy programowaniem np. Female Friendly IT events in Poland
Kolejnym źródłem informacji są też strony, które zbierają różne wydarzenia — tutaj warto wymienić np. crossweb.pl, spotkania-it.pl, czy meetup.com.
Z większych wydarzeń, które odbywają się w Polsce warto śledzić:
Czego wymaga się od Junior Developera, jakich zadań mogę się spodziewać na tym stanowisku?
Do głównych zadań Junior Developera należy tak naprawdę uczenie się ;) Ogólnie zadania są podobne jak na stanowisku programisty — tworzenie kodu na podstawie dokumentacji, szukanie i naprawianie błędów, wspieranie projektowania oprogramowania, testy jednostkowe oraz utrzymanie dokumentacji, czastem także wspieranie klientów, którzy mają problemy techniczne z danym systemem.
Różnica polega na tym, że zadania junior developera są często mniej samodzielne i lepiej opisane w dokumentacji lub pozwalające wzorować się na już istniejących modułach. Osoba taka także może liczyć na wsparcie osób bardziej doświadczonych i najczęściej nie ponosi odpowiedzialności za kształt modułu, przy którym pracuje.
Z drugiej strony musisz nastawić się, że wiele rzeczy będzie dla Ciebie nowe i trudne do odniesienia do innych doświadczeń, o wiele rzeczy będziesz musiała dopytywać, często też będziesz otrzymywać wiele uwag w postaci Code Review — wszystko to jest związane z tym, że na tym stanowisku oczekuje się od Ciebie, że będziesz rozwijać swoją wiedzę równolegle do programowania i tworzenia kodu.
No i ostatecznie — każda praca jest inna, nie ma jednego ‘standardu’ czym jest to stanowisko. Zapoznaj się z wywiadami w cyklu Kulisy Branży IT, a w szczególności z wywiadem z Anią.
Jak przebić szklany sufit, że kobieta / humanista z wykształcenia może podołać?
Po pierwsze, po prostu działaj. Miej świadomość, że czasem na ten sufit trafisz, że ktoś oceni Cię przez pryzmat braku wykształcenia technicznego, płci, urody, wieku, a nie faktycznych umiejętności. Taka już ludzka natura, że łatwiej użyć znanego/utrwalonego schematu niż pomyśleć, poświęcić czas poznać. Rób więc swoje i miej świadomość, że z każdym projektem,certyfikatem, kolejnym stanowiskiem czy rozmową jesteś bogatsza o te doświadczenia. Każdy kiedyś zaczynał i początkującemu łatwo dodać niewiedzy czy wytknąć braki, ale uwierz, bardzo, bardzo szybko to zmienisz. Pracuj więc nad swoją świadomością tych zmian i nie bój się być pewną swoich umiejętności.
Po drugie, daruj sobie dyskusje. Jeśli ktoś zaczepia Cię i szuka dziury w całym, mówiąc, że IT nie jest dla dziewczyn na 99,99% nie wysłucha nawet tego co masz do powiedzenia. Będzie wiedział lepiej. Wracając do poprzedniego punktu, po prostu pokaż mu swoim przykładem, że nie ma racji. To może być trudne, np. jeśli zawsze będzie Cię pytał o zdanie, a potem podchodził do kolegi z zespołu by to zweryfikować, bo skąd Ty to możesz wiedzieć, prawdopodobnie będzie Ci przykro. Ale długoterminowo, przykro będzie jemu, kiedy po raz kolejny, ktoś potwierdzi Twoją odpowiedź, co trochę odbierze mu argumenty do jego tezy.
Po trzecie, nie daj się. Kiedyś czytaliśmy artykuł o tym, że czasami dziewczyny starają się być “męskie” w swoim zachowaniu, by pasować do zespołu. Nie ma to sensu, udawanie kogoś innego zawsze jest niefajnym wyjściem. Zmienienianie siebie aby wpasować się w oczekiwania innych w najgorszym wypadku pogłębi problem, w najlepszym — nic nie zmieni.
Najważniejsze, żebyś sama była świadoma i przekonana o swoich kompetencjach — jakkolwiek ktoś by się nie starał Ci wmówić, nie daj się przekonać że jesteś gorsza od drugiej osoby przez to, że jesteś innej płci, wyznania, ukończyłaś inne studia. Oczywiście w danym momencie być może masz mniejsze doświadczenie od drugiej osoby, ale z dużym prawdopodobieństwem masz większy zapał i determinacje i za kilka lat sytuacja będzie odwrotna.
Wiele osób, które głosi takie tezy po prostu nie zauważa że to, czego oni uczyli się na studiach przez 5+ lat, Ty zdobyłaś w rok czy dwa. Że wiedzą należy się dzielić, a nie wykorzystywać do dzielenia i szufladkowania ludzi. Że doświadczenie jest ważne, ale jeszcze ważniejsza jest chęć nauki i rozwijania siebie — także poprzez wpieranie rozwoju innych.