Jak zacząć programować?

Trwa migracja :/
Artykuł może wyświetlać się niepoprawnie
Przenoszę wpisy ze starego systemu. Niestety migracja wymaga ręcznych poprawek (czasu)

Docelowo artykuł podzielę na części.

Planuję rozszerzyć tą część.

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

 

 

Programowanie: Jaki język?

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.

Interaktywne kursy programowania

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

The Mental Game of Python – Raymond Hettinger
Zrozmienie problemu, analiza, większy na mniejsze.

Ciekawe? Newsletter?

Subscribe
Powiadom o
guest
0 komentarzy
Informacje zwrotne w treści
Wyświetl wszystkie komentarze