Docelowo artykuł podzielę na części.
Zanim zaczniesz programować musisz sobie odpowiedzieć na kilka pytań.
Dlaczego chcesz programować?
Musisz mieć prawdziwy powód dlaczego chcesz się nauczyć programować.
Nauka programowania to nie sprint, to niekończący się maraton!
Być może zauważyłeś, jak szybko zmienia się Informatyka.
Technologie, które wchodzą dziś, po kilku latach mogą już nie istnieć lub być przestarzałe.
To się dzieje cały czas.
Jedyną stałą jest ciągła zmiana. Musisz cały czas się rozwijać (uczyć się, podejmować decyzje).
Gdy się zatrzymujesz (zwalniasz), to tak jak byś się cofnął, ponieważ cały świat brnie do przodu!
Kiedyś zrozumiałem tą ideę, gdy po wielu latach trafiłem do luksusowego hotelu tętniącego życiem z mojego dzieciństwa.
Przeżyłem szok, hotel bardziej przypominał mi PRLowską umieralnię. Dlaczego? Przecież hotel nic nie zmienił.
A w tym czasie świat poszedł do przodu, zmieniły się oczekiwania, a bogate wyposażenie mogło zachwycać jedynie w latach 90.
W informatyce czas leci znacznie szybciej!
Programowanie, to nieustająca nauka, szukanie rozwiązań, …
W związku z tym, że IT rozwija się tak szybko i z każdą chwilą powstają nowe, kolejne możliwości.
Musisz nauczyć się podejmować decyzje, „w co warto pójść”, co ma przyszłość, a co nie.
Może się okazać, że po kilku latach, twoja specjalizacja w wybranej technologii jest całkowicie bezużyteczna.
Gdybyś kilka lat temu był fanem WPF’a/Silverlight’a to co byś robił dzisiaj?
Nauka języka programowania, to bardzo mały wycinek całości!
Na szczęście gdy nauczysz się jednego języka, wiele innych opanujesz w mgnieniu oka.
IT, to niekończąca się droga problemów, wypadków, .. Jednak gdy jesteś odpowiednio zmotywowany (masz cel, wiesz dlaczego) to zawsze znajdziesz sposób.
Mnie zawsze pasjonowała możliwość tworzenia, automatyzacji, ułatiwania życia. Czasem kilka linijek potrafi zaoszczędzić godziny pracy – magia.
Robisz coś raz i działa.
Zanim..
Zanim przejdziesz dalej, zobacz (jeśli nie czytałeś):
Zarobki
Dla wielu osób motywacją są zarobki (choć według mnie istnieją silniejsze powody, dla których warto programować).
Pamiętaj pracując w IT.
Twoim głównym narzędziem jest komputer.
Możesz znaleźć pracę, która pozwoli Ci pracować zdalnie (z domu, z Tajlandii, gdziekolwiek będziesz).
Warto zwrócić uwagę, że nie musisz wcale pracować dla polskiej firmy.
Możesz zarabiać np. „tyle samo”, tylko w euro, dolarach, funtach.
W ekonomii funkcjonuje prawo popytu i podaży.
Jeśli jest pracodawcy potrzebują programistów X,
- a programistów X jest mało (to zarabiasz więcej)
w końcu jakoś trzeba Cię zachęcić byś wybrał akurat tą firmę a nie inną (trudno będzie znaleźć kogoś na twoje miejsce). - a programistów X jest dużo (to zarabiasz mniej)
naturalnie stawki są niższe, bo zawsze ktoś się znajdzie na twoje miejsce.
Programista programiście nie równy.
Nieraz większe doświadczenie, potrafi skrócić czas produkcji o dni, tygodnie, miesiące.
Doświadczony programista zrobi coś w tydzień, a początkujący informatyk będzie potrzebował co najmniej miesiąca tworząc przy tym produkt gorszej jakości.
Dlatego doświadczenie jest tak bardzo pożądane!
Warto również wiedzieć, że stawki są negocjowane i często tajne.
Nieraz osoba dopiero co zatrudniona, może zarabiać znacznie więcej niż osoba która od dłuższego czasu pracuje w firmie – to jest IT.
Jak w każdej innej pracy w przypadku dużego popytu, niższej podaży – nieraz zdarza się, że nowo zatrudniona osoba bez większego zatrudnienia – zarabia znacznie więcej niż osoba doświadczona pracująca wiele lat w danej firmie – życie – biznes.
Wykres z: mamstartup.pl, dane z ChallengeRocket.com (dane na rok 2017).
Dane dotyczące polskiego rynku również znajdziesz w artykule na mamstartup.pl.
W zależności od celu – wybierasz język
Podobnie jak w życiu, wybór narzędzi zależy od tego co chcesz zrobić.
Siekierą można rąbać drewno, ale nie pomoże przy grabieniu!
Grabie pomagają wyrównać teren, ale są nieprzydatne gdy chcesz przygotować drewno do kominka.
Różne technologie – różne perspektywy
**Najpierw zastanów się:
– co chcesz robić?
– jak chcesz pracować?
– jakie masz oczekiwania? Dopiero potem jęzky, platformę, technologię!!**
Każdy język jest 'trochę inny’. Nawet parząc tylko na języki ogólnegoprzeznaczenia – jedne mogą być wygodniejsze/wydajniejsze/lepsze w danych zastoswaniach niż inne.
Wokół każdej technologii bardzo ważna jest tzw. społeczność. Samemu nigdy nie rozwiążesz wszystkich problemów. Zatem im więcej 'aktwynych’ ludzi w społeczności, tym łatwiej zrobić 'coś więcej’.
Jedne technologie będąc na czasie są niestabilne. To co napiszesz dziś, może sprawić wiele problemów z uruchomieniem np. za 3 lata.
Inne technologie są za to bardzo stabilne, kosztem współczesności.
Dlatego jedne są np. bardziej mile widziane w korporacjach niż inne.
Jeśli chcesz pracować w korporacji, prędzej przyda Ci się znajomość języka: Java niż np. Pythona.
Zastanów się gdzie chcesz być, za 2, 3, 5, 10, lat
W zależności od tego wybierz język (technologię).
Co można wybrać? Mapa informatyki
https://www.flickr.com/photos/95869671@N08/36231833334/
http://coin.wne.uw.edu.pl/dcelinska/en/pages/rogueviz-langs.html
Każdy język ma swoją specyfikę. Używa się ich do różnych zastosowań. Przy wyborze języka warto uwzględnić, co chcesz pisać. Jaka jest dostępnośc biblotek, wsparcie społeczności etc.
Jak się uczyć?
Metod nauki jest wiele. Jak zawsze najważniejsza jest praktyka.
Przede wszystkim musisz zadbać o środowisko, które pomoże Ci w nauce.
Będziesz popełniał błędy. To dobrze. Dzięki nim się nauczysz.
Jednak musisz zadbać o to byś jak najszybciej dowiedział się o popełnionym błędzie.
Niektóre języki wymagają kompilacji. Przez co musisz napisać pewną część kodu, dopiero potem możesz skompilować (czyli przetłumaczyć na język zrozumiały dla komputera). Dopiero wtedy może okazać, się że coś nie działa.
W językach skryptowych.
W chwili wpisywania linijki możesz zobaczyć jaki ma efekt. Jeśli efekt Ci się nie podoba – możesz zmienić.
Dużo szybciej możesz 'podłapać’ o co chodzi.
Dlatego zachęcam do języków skryptowych/interpretowanych przynajmniej na początek.
Istnieje wiele serwisów w których możesz uczyć programowania w sposób interaktywny.
Najlepiej uczyć się programowania ćwicząc – rozwiązując różne problemy. Czasem, przygotowanie środowiska pracy, by napiać pierwszą linijkę 'kodu’, może trwać godziny / dni (gdy dopiero zaczynasz). Na początek dobrym pomysłem są języki skryptowe i wszelkie interaktywne kursy (CodecAdemy, CodeWars, CheckIO, CodeFights, …).
Społeczność
Angielski!
Na bardzo elementarnym poziomie angielski nie jest wymagany.
Później jednak będzie niezbędny chociażby do czytania dokumentacji bibliotek/komponentów z których będziesz chciał skorzystać.
Błędy podczas nauki programowania
Słownik
Kompilacja
Język programowania
Framework
Aplikacja Natywna
Frontend/Backend
W informatyce wyróżnia się Frontend i Backend.
Przypomina to koncert.
W czasie koncertu widzisz scenę (frontend), jednak by odbył się koncert, ktoś musiał przygotować scenę, zamontować głośniki, oświetlenie, ktoś musi tym zarządzać. Ważne są też toalety, bezpieczeństwo, obsługa i sprzedaż biletów, reklama (dzięki której wiesz, że taki koncert będzie) i wiele wiele innych. To wszystko z tyłu to backend (w przypadku koncertów mówimy o backstage).
Frontend – to widoczna część projektu – zazwyczaj widoczna w przeglądarce.
Backend – to niewidoczna część projektu, dzięki której wszystko działa.
Mobile/Desktop
Mobile – telefon – często w kontekście aplikacji na telefon.
Desktop – komputer – często w kontekście aplikacje na komputer
Co chcesz robić – jaki język?
Statystyki z serwisu GitHub (https://octoverse.github.com/).
Statystyki z serwisu: StackOverflow (https://insights.stackoverflow.com/survey/2017#technology)
Sposób programowania