Jak zacząć naukę programowania w C# (i nie tylko)?

By | May 30, 2016

Bardzo często spotykam się z pytaniem “jak rozpocząć naukę programowania”. Jako, że jestem samoukiem i jeszcze pamiętam swoje początki, a w podsumowaniu konkursu gorąco zachęcałem do brania udziału w inicjatywach takich jak Daj Się Poznać nawet jeśli ktoś dopiero zaczyna swoją przygodę z programowaniem, to postanowiłem podsumować swoje przemyślenia na temat rozpoczęcia samego procesu nauki, od samego początku, bo ten jest moim zdaniem najtrudniejszy.

Gdy podjąłem decyzję o tym, że chcę wziąć się za programowanie znałem już podstawową terminologię, tego posta jednak chciałbym zadedykować osobom, które wiedzą, że coś takiego jak programowanie istnieje, ale gdy usłyszą o programowaniu obiektowym lub funkcyjnym, to nie do końca wiedzą o czym mowa. Zacznijmy więc od samego początku?

Po co?

Dlaczego właściwie ktoś miałby się uczyć programowania? Motywacje są różne. Ja się po prostu nudziłem i chciałem nauczyć czegoś ciekawego, a potem już wsiąkłem, po prostu lubię się rozwijać i chciałbym cały czas uczyć się czegoś nowego (a moim zdaniem nauka programowania nie kończy się tak naprawdę nigdy). Innych mogą przyciągać zarobki i bardzo chłonny rynek pracy w tej branży. Jeszcze ktoś inny ma genialny pomysł na stronę/aplikację, lubi majsterkować i chciałby pobawić się w IoT. Powód i motywacja tak naprawdę nie ma znaczenia.

Czego potrzebuję?

Co właściwie jest potrzebne do nauki programowania? Tak na dobrą sprawę, to jest to dziedzina, która nie ma jakichś wielkich wymagań na wejściu. Materiałów jest mnóstwo i spora część jest dostępna za darmo. Jeśli miałbym wymienić kilka wymagań to będą to:

  • Język angielski – bezwarunkowo. Większość materiałów jest dostępna w języku angielskim, spotkamy się też z nim w oficjalnych dokumentacjach.
  • Samozaparcie i dyscyplina – czasem naprawdę można na czymś utknąć. Rozwiązanie łatwo jest znaleźć w Google, ale o wiele więcej można się nauczyć rozwiązując go samodzielnie.
  • Czas – o ile programowania z powodzeniem nauczyć się można w domu, to będzie to wymagać czasu. Dużej ilości czasu, który będzie trzeba poświęcać na naukę regularnie. Godzina dziennie to stanowczo zbyt mało na poznanie nowego zagadnienia i wypróbowanie go w praktyce.
  • Analityczny umysł – programowanie wymaga pewnego określonego sposobu myślenia. Da się go wyuczyć i sobie wyrobić, ale o wiele łatwiej jest zacząć jeśli już potrafimy analizować problem, rozłożyć go na mniejsze problemy etc.

Jaki język wybrać?

Wybór języków jest stosunkowo duży i tak naprawdę bardzo wiele zależy od tego co dokładnie chcemy robić. Mógłbym zrobić tu rozpiskę z listą języków, technologii i ich zastosowań, ale to byłaby naprawdę długa lista. Ograniczę się więc do języków, które ja osobiście uważam za dobre na początek, ich zastosowanie pominę, bo są w zasadzie “do wszystkiego” i z odpowiednią wiedzą na chyba każdej z tych technologii można oprzeć aplikację desktopową, webową czy wykorzystać do jakiegoś IoT. Zachęcam jednak do poczytania trochę więcej na ich temat, ze szczególnym uwzględnieniem najpopularniejszych zastosowań.

  • Python
  • Ruby
  • C#
  • Java

Zdecydowanie wybierałbym jeden z tych czterech języków na start. Ich nauka jest przyjemna, stosunkowo szybko można osiągnąć jakieś efekty oraz dosyć często pojawiają się w ofertach pracy. Oczywiście na poznaniu jednego języka się nie kończy bo czekają nas jeszcze różnego rodzaju frameworki, oprogramowanie czy wręcz inne języki, które będziemy musieli poznać jako uzupełnienie głównego. Dobrym przykładem jest tutaj Java Script. Niezależnie od tego od jakiej technologii byśmy zaczynali, jeśli planujemy robić cokolwiek co związane jest z aplikacjami webowymi, będziemy musieli się z nim zaprzyjaźnić (a przynajmniej zapoznać i tolerować 😉 ).

Co dalej?

O ile Twój wybór był właściwy i zdecydowałeś się na naukę C# i platformy .NET, to w dalszej części posta znajdziesz o wiele przydatniejsze informacje na początek niż bluźniercy, którzy nie kochają Microsoftu. Niemniej jednak myślę, że i oni mogą trafić na coś interesującego.

Na samym początku polecam bardzo dobrze zastanowić się nad tym, w jaki sposób najłatwiej jest mi się uczyć. W moim przypadku były to książki, które towarzyszyły mi na samym początku. Bardzo przyjemnie i przystępnie napisaną książką, która przedstawia wszystkie zagadnienia od absolutnych podstaw jest “C# Rusz Głową”, ale nie poleciłbym jej osobom, które znają już jakieś podstawy, bo przez pierwszą połowę będą się trochę nudzić. Jednak mogę śmiało powiedzieć, że po jej zakończeniu byłem na etapie, gdzie mogłem wybrać jedną z dalszych ścieżek rozwoju i być świadomym na co właściwie się decyduję. A po przebrnięciu przez podstawy jest już tylko ciekawiej.

Jeśli ktoś lubi uczyć się z internetowych tutoriali, to niestety musi skorzystać z Google. Nie przepadam za taką formą, więc takich materiałów po prostu nie znam.

Polecam jednak inną metodę, która jest dostępna za pośrednictwem przeglądarki internetowej. Chodzi mianowicie o kursy na stronie Plurasight. Zawiera ona mnóstwo szkoleń z wielu dziedzin, bez problemu da się tam znaleźć materiały, które mają uczyć od zera. Sęk w tym, że dostęp do materiałów jest płatny i mimo możliwości łatwego uzyskania półrocznego dostępu za free, proponuję skorzystać z tej formy dopiero po załapaniu podstaw. Dzięki temu można o wiele lepiej wykorzystać czas podczas którego będziemy mieli dostęp do materiałów. Pół roku darmowego dostępu do platformy Pluralsight (i kilka innych benefitów) można wykorzystać rejestrując się w programie Visual Studio Dev Essentials.

I jak?

Jak się uczyć? Najlepiej przez praktykę. W pewnym momencie osiągamy poziom, w którym jeśli mamy jakiś pomysł to jesteśmy w stanie zacząć go realizować posiłkując się dokumentacją i googlem. To moment, w którym warto odejść od książki/kursu i zacząć realizować pomysły, które przyjdą nam do głowy. Rozwiązując tego typu praktyczne problemy uczymy się najwięcej i najlepiej. Spotkamy się z problemami, na które nikt nas nie przygotował i nauczymy się sobie z nimi radzić. Bardzo ważne jest to, aby  ćwiczenia praktyczne robić systematycznie, by ciągle zdobywać nową wiedzę i ją utrwalać. Innego wyjścia po prostu nie ma. Nie da się nauczyć programowania siadając do jakiegoś projektu na godzinkę-dwie tygodniowo.

Dodatkowe wskazówki

  • Znaleźć działającą w pobliżu grupę programistyczną i uczęszczać na spotkania, po wszystkim zostać na piwo lub dwa. W ten sposób można dowiedzieć się naprawdę wiele rzeczy i nawet jeśli dziś ich nie rozumiesz, to za kilka miesięcy będziesz mieć w głowie to, że coś takiego istnieje i można to wykorzystać.
  • Poszukać blogów o interesującej nas tematyce. W niektórych postach można znaleźć świetne ciekawostki i tricki, których ze świecą szukać w innych miejscach.
  • Wychodzić ze strefy komfortu tak często jak to możliwe.
  • Nie nastawiać się na ogromne sukcesy na starcie. Przez podstawy trzeba się po prostu przeczołgać i nie zniechęcać. Potem jest już o wiele, wiele ciekawiej. Obiecuję.

Mam nadzieję, że powyższy post pomoże i ułatwi pierwsze kroki kilku osobom, które zastanawiają się nad rozpoczęciem nauki. Jeśli macie dodatkowe uwagi, sposoby na start czy cokolwiek innego czym chcecie się podzielić, to serdecznie zapraszam do komentowania. Zachęcam również do obserwowania mnie na Facebooku i Twitterze.