Jak zacząć programować?

Paweł Dedio Programowanie 2018-09-08

Witajcie w kolejnym tygodniu. Dzisiaj podpowiem wam, jak zacząć programować. Świetnym uzupełnieniem tego tekstu będzie poprzedni artykuł o motywacjach: Motywacje – w jaki sposób nie stracić zapału do programowania? Większość porad, które tutaj zobaczysz, przerabiałem na własnym przykładzie i mogę powiedzieć, że faktycznie działają, więc przejdźmy do konkretów!

Jak mi się udało?

Może zacznę od tego, w jaki sposób mi udało się zostać zawodowym programistą. Mimo nauki w dość dobrym technikum informatycznym, byłem bardzo słaby z programowania, nie przesadzę jeśli powiem, że nauczyciele dość mocno mi je obrzydzili. Jakoś w okolicach grudnia, będąc w 4 klasie technikum pomyślałem sobie, że muszę zadbać o swoją przyszłość, bo po maturze nie będę miał żadnego zajęcia. Co prawda dorabiałem sobie w pewnej pracy, jednak nie było to nic przyszłościowego. Stwierdziłem, że chcę zostać programistą – w poprzednich latach kilkukrotnie podchodziłem do nauki programowania na Androida, jednak szybko traciłem zapał. Obiecałem sobie, że tym razem będzie inaczej. Wyznaczyłem sobie cele dzienne – na początek godzinę nauki w każdy dzień, później stopniowo podwyższałem poprzeczkę. Dodatkowo w trakcie nauki wymyślałem sobie różne programy do zrobienia i je robiłem. Takie podejście wystarczyło, abym w wakacje został przyjęty na praktyki w firmie programistycznej. Potem wszystko potoczyło się bardzo szybko i dzisiaj jestem tu, gdzie jestem. Miałem sporo szczęścia, jednak szczęście by mi nie pomogło, gdyby nie determinacja i ciężka praca. Jest to oczywiście skrót – mógłbym pisać o sobie o wiele więcej, jednak skupmy się na metodach, które pomogły mi osiągnąć cel.

Cele dzienne

Pisałem już trochę o nich w artykule o motywacjach. Ważne, żebyś miał jakiś motywator, który pomoże Ci być systematycznym. Ja traktowałem to mega poważnie – przykładowo, gdy w jeden dzień nie mogłem się uczyć, to w następnym dniu musiałem się uczyć dwa razy dłużej. Niestety nie zawsze cel był wystarczającą motywacją – czasami nie mogłem się skupić i mój mózg robił wszystko, byle tylko się nie uczyć. Tutaj bardzo pomogła mi metoda pomidora (nazwa pochodzi od minutnika w kształcie pomidora) – została ona wymyślona przez włoskiego studenta. Polega ona na wyznaczaniu sobie ściśle określonych ram czasowych na pracę oraz odpoczynek. Podczas czasu pracy, nie możesz robić nic innego, skupiasz się maksymalnie na swoich zadaniach. Typowy interwał pracy wynosi 25 minut – jest to dość krótki czas, z łatwością uda Ci się utrzymać skupienie. Dzięki regularnym przerwom, mózg nie męczy się zbyt szybko. Zachęcam do zainstalowania jakiejś darmowej aplikacji, która pomoże Wam tym zarządzać (wystarczy wpisać pomodoro app w wyszukiwarce). Jako ciekawostkę dodam, że sam nadal często korzystam z tej metody, również podczas pisania tych artykułów.

Kamienie milowe

kamienie milowe

Kolejnym ważnym elementem są tak zwane kamienie milowe. W moim przypadku polegało to na wymyślaniu sobie jakiś programów do zrobienia (konieczne takich, których nie byłem wstanie zrobić z aktualną wiedzą). Taki program to musi być coś, co Cię interesuje lub ułatwi Ci życie. Dzięki takiemu podejściu nauka stanie się zabawą – będziesz robił wszystko, aby zrealizować swój cel. Ważne, żeby nie były to jakieś bardzo duże programy, bo możesz stracić zapał, zanim dojdziesz do końca. U mnie pierwszym celem było wykonanie aplikacji androidowej do wysyłania smsów do osób ze zdefiniowanej wcześniej listy (w tej pracy dorywczej wysyłałem ręcznie sporo smsów). Na początku program był dość prosty, nazwy kontaktów i ich numery były zaszyte w kodzie, treść SMSa zmieniała się na podstawie kilku parametrów, które podawaliśmy w aplikacji. Oczywiście ta aplikacja sprawiła mi ogromne problemy, przeszukałem sporo Internetu i spędziłem wiele godzin na rozwiązywaniu dziwnych błędów. Jednak, gdy udało mi się wysłać pierwszego SMSa przez nią, to byłem niesamowicie szczęśliwy. W końcu spełniło się moje marzenie. W późniejszych etapach kamieniami milowymi był rozwój aplikacji – na przykład dodanie bazy danych z możliwością dynamicznego dodawania kontaktów. Jedną z większych trudności było to, że nie znałem żadnego programisty Androida i nie miał mi kto pomóc, ale dzięki temu stałem się bardzo samodzielny. Zrozumiałem też, że im więcej problemów masz, tym więcej się uczysz. Nie tylko uczysz się samego programowania, ale również szukania pomocy w Internecie.

Musisz odpowiedzieć sobie na ważne pytanie

Osoby znające Pana ze zdjęcia powyżej będą wiedzieć o co chodzi. Musisz się dowiedzieć, co chcesz w życiu robić. W naszym kontekście powinieneś znaleźć sobie dziedzinę, która Cię interesuje. Ja wybrałem Androida, Ty możesz wybrać coś innego, na przykład strony internetowe, gry mobile i tak dalej – dróg jest wiele. Najważniejsze jest to, żeby programowanie w danej technologii sprawiało Ci przyjemność. Inaczej szybko stracisz motywację. Jeśli nie możesz się zdecydować na żadną z technologii, to być może pomoże Ci odcinek, który wyjdzie za dwa tygodnie. Opiszę w nim najpopularniejsze technologie oraz ich plusy i minusy.

Czy szkoła programowania to dobry pomysł?

Szkoły programowania to obecnie najszybszy sposób na wejście do świata IT.
Kursy trwają od kilku tygodni do kilku miesięcy – w zależności od trybu i intensywności nauki. Osoby, które obecnie pracują, ale chcą się przebranżowić, mogą wziąć udział w kursie weekendowym i w około pół roku opanować praktyczną wiedzę potrzebną do zostania junior developerem. Część kursów jest też dostępna w trybie online.
Kurs programowania to wydatek rzędu kilku tysięcy złotych, lecz koszty zwracają się już po kilku miesiącach pracy, możliwe jest też dofinansowanie do kursu. Zdecydowaną zaletą takiej formy nauki jest opieka mentora oraz praca w grupie, która przydaje się później, podczas wspólnych projektów w pracy (jak chociażby Scrum Lab – projekt grupowy symulujący codzienną pracę programisty) oraz pomoc w budowaniu profesjonalnego portfolio programisty.

Poszukaj praktyk

Jeśli już będziesz czuł, że znasz podstawy i potrafisz samodzielnie napisać prostą aplikację, warto rozglądnąć się za jakimiś praktykami. Nigdzie nie nauczysz się tyle, co w normalnej pracy. Czasami warto nawet poświęcić się i iść na darmowe praktyki, bo dzięki temu szybko załapiesz się do normalnej pracy. Przeważnie wygląda to tak, że początkowo jesteś na miesięcznych darmowych praktykach, później zostajesz stażystą, gdzie otrzymujesz wynagrodzenie i po odbyciu stażu (przeważnie 3 miesiące) zostajesz już pełnoprawnym juniorem, czyli młodszym programistą. Jeśli podczas stażu i praktyk będziesz się starał, to możesz być pewien, że firma będzie chciała Cię zatrzymać!

To już koniec na dziś. Tradycyjnie dziękuję za przeczytanie i zapraszam za tydzień. Tak jak wspominałem, podpowiem skąd czerpać wiedzę o programowaniu. Do zobaczenia! Zapraszam również na największe w Polsce forum dla programistów Android. Jeśli macie pytania odnośnie kariery jako programista – zapraszam do działu Kariera programowanie. Zachęcam również do przejrzenia działu Praca oraz zlecenia dla programistów – być może to właśnie tam znajdziesz swoją pierwszą pracę 😉

Poprzednie odcinki:

  1. Typowy dzień pracy programisty
  2. Wady pracy programisty
  3. Zalety pracy programisty
  4. [FAQ] Wszystko, co powinieneś wiedzieć jeśli interesuje Cię praca programisty
  5. Co mnie zdziwiło w programowaniu?
  6. Motywacje – w jaki sposób nie stracić zapału do programowania?
  7. Jaką firmę wybrać na początku kariery programisty?
  8. Jak wygląda rozmowa o pracę na stanowisko programisty?


  • Karls

    Mam wrażenie, ze opisane tu podejście może zamiast przyjemności z programowania zrobić przykrą rutynę. Nie jestem zwolennikiem sztywnych ram w nauce nowych umiejętności. Zgodzę się natomiast, że programowania warto uczyć się na własną rękę. Wtedy sam masz kontrolę na tempem, i zakresem.

    No i przede wszystkim – uczyć się programowania a nie konkretnego języka. Oczywiście jakiś tam język musi być w tle, bo nie zawiesi się tego w abstrakcji. Ale nie ma sensu wykuwać na blachę komend i składni. Lepiej nauczyć się pewnych schematów myślowych, budowy pętli, instrukcji warunkowych, korzystania z tablic, prawidłowego używania typów zmiennych i tego typu elementów, które powtarzają się niemal w każdym współcześnie użytecznym języku programowania. Nauka samej składni ma mało sensu, ja zapomnisz komendy, to masz dokumentację albo googla pod ręką, więc szkoda na to tracić czas.

    • Paweł Dedio

      Z tym się zgodzę tylko trzeba uważać żeby nie wpaść w pułapkę wielu języków. Znałem wielu ludzi którzy potrafili napisać Hello World w wielu jezykach, ale w żadnym nie potrafili stworzyć nic konkretnego

      • Karls

        To prawda, trzeba znaleźć jakąś równowagę. Może kompromisem jest tu znajomość kilku języków o pokrewnej strukturze – np. python, c#, c++ – sam paradygmat jest zbliżony, nawet niektóre wyrazy składni będą się pokrywać. Oczywiście nie ma możliwości by przerzucać swobodnie kod między językami, ale po pewnych poprawkach i dostosowaniu, czasem wcale nie takim dużym, dany fragment ruszy. Choć i tu jest pułapka – to, że ruszy nie oznacza, że da identyczny efekt – chociażby dokładność poszczególnych typów zmiennych może się różnić, być inaczej interpretowana, i już wynik inny.

  • Hrater
  • cbaks1303

    O︁o︁a︁u︁︁h︁h D︁u︁d︁e︁︁s︁s ! T︁h︁e L︁i︁︁s︁t w︁i︁t︁h N︁a︁k︁e︁d︁-︁W︁o︁m︁e︁n︁s f︁r︁o︁m y︁o︁︁ur Ci︁︁ty ︁h︁︁as b︁ee︁n︁ p︁u︁b︁ll︁i︁︁s︁h︁e︁d
    H︁e︁r︁e︁e︁e ̩︁️︁o︁n : t︁u︁4︁a︁.︁m︁e︁/︁︁a︁l︁b︁u︁︁m︁︁-︁︁3︁7︁︁8︁1︁4︁2 🔞

    • ralexia9406

      ︁T︁h︁an︁k︁s︁s︁ B︁ro︁︁!︁! I’︁︁ve f︁o︁u︁n︁d th︁e︁r︁ee︁ m︁y T︁ea︁c︁︁he︁r N︁a︁k︁︁e︁d ! H︁aa︁ha︁a︁hh︁

      • cannet1980

        ︁H︁a︁h︁h︁a︁h︁ l︁u︁c︁k︁y ︁m︁an

  • Jakub

    Nie napisał Pan jak skąd zacząć programować, jakie są najlepsze poradniki itd. Po za tym świetny artykuł!

    • Rafal

      Imo nie ma sensu podawać źródeł ponieważ:
      Po pierwsze
      każdy się uczy inaczej, na jednego działają lepiej video z YouTube, dokumentacja, poradniki na www, książka, mentor i tak jeszcze dalej wymieniać.
      Po drugie
      materiały, których się uczył autor na początku drugi jak nie były aktualizowane to jest są przestarzałe.
      Po trzecie
      wyszukiwanie informacji zaraz obok języka angielskiego to chyba najważniejsza umiejętność programisty.
      Ja polecam darmowy kurs na javastart dla podstaw języka obiektowego, a później zdecydować czy może Kotlin i szukać info o androidzie

    • Paweł Dedio

      O źródłach nauki będę pisał za tydzień, jednak tak jak napisał Rafal – beda to raczej wskazówki gdzie szukać informacji a nie lista gotowych książek podanych na tacy