Menu Górne

Jak zacząć programować?

W dzisiejszym wpisie odrobinę o … programowaniu. Postaram się podzielić w nim swoją wiedzą na temat nauki programowania, z jakich materiałów i platform online korzystać, generalnie jak zacząć 🙂

Jak to często u mnie bywa, i w tym temacie nie jestem jakimś specjalnym ekspertem, ale mam pewną wiedzę, którą chcę się podzielić.

Jak zacząć programować?

W ostatnich latach pojawiło się w sieci sporo głosów mówiących o programowaniu. Wiele osób twierdzi, że programowanie jest bardzo ważne i że jest dużo pracy dla programistów. Twierdzi się też, że programowanie jest łatwe i przyjemne i że właściwie niemal każdy może programować.

Nie do końca zgadzam się z tymi ostatnimi tezami, mi nauka sprawia wiele trudności, często to droga przez mękę 🙂 Tak jak przy nauce innych umiejętności (języki obce, gra na instrumencie muzycznym) i tutaj trzeba włożyć masę pracy, aby osiągnąć dobre rezultaty. Postanowiłem wiec napisać artykuł na ten temat w nadziei, że choć trochę pomoże on naszym czytelnikom, którzy interesują się tym tematem.

Ale może zacznę od szybkiego przytoczenia ‘mojej historii’ tak, aby było wiadomo skąd to nagłe zainteresowanie programowaniem. Tak jakoś się złożyło w moim życiu, że choć udało mi się poznać wiele różnych rzeczy, to nigdy nie byłem ekspertem w żadnej z nich. Jestem w stanie sklecić jakąś stronę internetową, nagrać podcast, stworzyć i opublikować jakiś film na YouTube. Znam też obsługę kilku programów, np. Photoshop czy Adobe Premiere Pro, ale, jak powiadam, nigdy nie udało mi się wznieść w żadnej z tych ‘dziedzin’ na wysoki poziom.

W sumie takie różne umiejętności się przydają, bo można bez pomocy osób trzecich szybko i tanio załatwić wiele spraw. Jednak zawsze przychodzi pewien moment, gdy okazuje się, że umiemy za mało.

U mnie ten moment pojawił się, gdy chciałem rozwinąć firmę. Pisałem niedawno o swoich różnych projektach internetowych (klik!). Wszystkie z nich bazują właściwie na polecaniu usług innych firm. Na pewno te informacje się przydadzą, bo oszczędzają ludziom czas i pieniądze (można np. szybko porównać oferty internetu w UK w jednym miejscu), ale budowanie na dłuższą metę kariery wyłącznie na polecaniu innych firm, nie jest zbyt rozsądne. Moim zdaniem lepiej mieć jakiś swój produkt lub usługę, za którą jesteśmy odpowiedzialni i nad którą mamy pełną kontrolę.

Ale jak stworzyć coś, nie mając potrzebnej wiedzy? Można oczywiście zlecić wykonanie pracy specjalistom, ale jest to rozwiązanie kosztowne i nie zawsze wolne od problemów.

Innym wyjściem jest zwyczajna nauka i zrobienie tych rzeczy samemu. Na pewno jest to czasochłonne i też może być drogie, ale na końcu drogi zdobywamy jakąś nową kompetencję, którą możemy w przyszłości wiele razy wykorzystać. Wszystkie te przemyślenia skłoniły mnie do tego, że zacząłem naukę programowania i po tym przydługim wstępnie, kilka informacji czego się uczę i gdzie.

Czego się uczyć?

Osobiście interesuję się aplikacjami webowymi. Chciałbym stworzyć jakiś program do nauki języków obcych i postanowiłem nauczyć się Ruby on rails. Rails to tzw. framework (szkielet czy ‚konstrukcja programistyczna’) do szybkiego programowania zaawansowanych aplikacji webowych. Jest to niemłode już rozwiązanie i jego popularność stopniowo maleje, ale z kilku powodów zdecydowałem się na naukę właśnie rails. Framework korzysta z języka programowania Ruby, a ten uważany jest za relatywnie łatwy do nauki. Znając Rails możemy stworzyć w pełni funkcjonalny, zaawansowany serwis internetowy, nawet w jeden dzień. Ostatnia niebanalna sprawa, znam osobiście kogoś, kto świetnie zna Rails, więc w razie poważniejszych problemów mogę zwrócić się o pomoc do profesjonalisty 🙂

Gdybym mógł podpowiedzieć komuś czego się uczyć… Sądzę, że na początku warto odpowiedzieć sobie na pytanie ‚Co chcę osiągnąć?’ albo ‚Do czego mi się przyda programowanie?’. Osoby, które szukają dobrze płatnej pracy jako programiści, powinni np. sprawdzić jacy pracownicy są aktualnie poszukiwani i jakie muszą spełniać warunki. Zapoznając się z warunkami szybko odkryją, znajomość jakich technologii jest wymagana i będą mogli uczyć się tych właśnie rzeczy.

Z drugiej strony, ktoś kto chce hobbistycznie tworzyć aplikacje na telefony czy tablety albo gry komputerowe, powinie prawdopodobnie skupić się na językach programowania i technologiach, w których się je tworzy, etc. Na Google można odnaleźć naprawdę dużo materiałów o tym, czego w pierwszej kolejności się uczyć. Zobaczmy jeden z filmików na YT na ten temat:

OK, po ustaleniu podstawowego faktu czyli tego, czego chcemy się uczyć, pojawia się drugie pytanie, gdzie się uczyć.

Gdzie się uczyć?

Oczywiście jest cała masa dostępnych materiałów do nauki, problem polega na tym, które wybrać. Pominę tutaj sytuację, w której ktoś jest osobą młodą i chce z programowania zbudować całą karierę. W takim wypadku, najlepiej zwyczajnie studiować IT na jakiejś dobrej uczelni. Pozostali muszą znaleźć jakieś inne rozwiązanie.

Sądzę, że nauka programowania jest bardziej skuteczna, jeżeli jest zorganizowana i odbywa się przez dłuższy czas. Nauka z kursów dostępnych na platformach edukacyjnych spełnia te warunek. Za większość kursów musimy zapłacić jednak opłaty są niskie, zwłaszcza jeśli weźmiemy pod uwagę zarobki czy karierę, które umożliwi umiejętność programowania.

Drugim i tańszym rozwiązaniem jest zakup jakiejś dobrej książki i nauka na jej podstawie. Wydaje mi się, że wideo tutoriale są jednak z kilku powodów lepsze niż książki. Przekaz wideo jest dla większości osób bardziej atrakcyjny. Po drugie, chyba tak uczymy się nieco szybciej. Jesteśmy już przed ekranem komputera i możemy łatwo zastosować w praktyce to, czego się uczymy. Platforma, z której korzystam umożliwia pisanie własnego kodu w czasie rzeczywistym w trakcie nauki. Korzystanie w ten sposób z książki jest również możliwe ale wymaga większego nakładu pracy.

Forma wideo jest też bardziej ‚mobilna’ w tym sensie, że możemy obejrzeć sobie tutorial w telefonie jadąc np. do szkoły autobusem, natomiast noszenie ciężkiej książki nie jest zbyt praktyczne.

Nie wiem, czy kogoś przekonałem, ale napiszę kilka słów o platformach online, na których można się uczyć i o których coś wiem.

Moim zdaniem warto wziąć pod uwagę trzy główne platformy uczące programowania: codecademy.com, lynda.com i teamtreehouse.com* (musimy dobrze znać język angielski, aby z nich korzystać).

O pierwszej stronie nie mogę za wiele powiedzieć, ponieważ poza incydentalnym wejściu na stronę i sprawdzeniu kilku kursów, tak naprawdę nie uczyłem się tam. Strona jest jednak zawsze, zapewne nie bez przyczyny, wymieniana wśród najlepszych platform. Z tego co widziałem wynika, że w trakcie nauki korzystamy z kilku okien. W pierwszym znajdują się treści, których się uczymy. W drugim oknie możemy pisać swój kod. W trzecim natomiast widzimy, jakie są efekty naszej pracy, czyli jak ‚zachowuje się działający kod’.

Na codecademy jest wiele różnych kursów. Część z nich dostępnych jest za darmo. Możemy również otworzyć konto pro za $19.99 miesięcznie. Jest też konto pro intensive adresowane dla osób, które chcą szybko się nauczyć jakiejś konkretnej kompetencji (np. szukają pracy i muszą podszkolić się z jakiegoś języka, etc.)

O drugiej platformie, lynda.com, mogę powiedzieć nieco więcej ponieważ korzystałem tam z kilku kursów. Zaletą tej platformy jest duża rozpiętość prezentowanej treści i profesjonalizm z jakim treści te są przekazywane. Na lynda.com możemy uczyć się programowania ale nie tylko, jest tam masa kursów dla użytkowników jakiegoś programu (powiedzmy Photoshop, czy After Effects), jak również innych dziedzin, marketingu internetowego, grafiki komputerowej, Google Adwords, SEO, etc. Innymi słowy, obok samego programowania w tym samym miejscu możemy równocześnie rozwijać inne umiejętności. Same kursy są świetnie przygotowane, ale, o ile nic się nie zmieniło, musimy jakby niezależnie programować we własnym zakresie. W tym sensie, że oglądamy na początku tutoriale wideo i co jakiś czas nasz nauczyciel daje nam zadanie do wykonania, które już wykonujemy sami. Kolejne wideo prezentuje rozwiązanie zadania. Po kolejnych kilku filmikach pojawia się kolejne zadanie.

Zdaniem niektórych osób, platforma ta prezentuje wiele treści przydatnych dla osób, które już programują, dzięki kursom dostępnym na platformie osoby te mogą poszerzyć swoją wiedzę. Wydaje mi się jednak, że osoby początkujące z pewnością znajdą tam coś dla siebie, materiały edukacyjne są naprawdę bardzo, bardzo dobre i jeśli się tylko przyłożymy, nauka będzie skuteczna.

Lynda.com umożliwia bezpłatną naukę w ciągu miesiąca. Po tym okresie możemy kontynuować za $29.99 miesięcznie lub $300 rocznie (+ tax?)

Ostatnia platforma, którą szybko omówię to teamtreehouse.com*. Sam osobiście korzystam z tej platformy i z czystym sumieniem mogę ją polecić. Generalnie jest tam dużo kursów adresowanych w większości dla początkujących. Kursy zostały podzielone na mniejsze cząstki. Nauka przebiega poprzez realizację poszczególnych etapów, które tworzą dłuższe ścieżki (Tracks).

W moim wypadku wybrałem sobie ścieżkę Rails developement, i muszę zrobić szereg różnych mini kursów czy bloków, aby zakończyć całą ścieżkę (np. w pierwszym etapie przerobiłem kurs Ruby, czyli nauczyłem się języka programowania, z którego korzysta Rails).

Myślę, że prezentowanie zagadnień w taki sposób jest świetnym rozwiązaniem i motywuje nas do nauki. W zależności od czasu, którym dysponujemy, możemy albo szybko biec do przodu, albo powoli posuwać się małymi kroczkami.

Przykładowy dzienny blok nauki wygląda w ten sposób, że oglądamy dobrej jakości tutorial wideo, by następnie rozwiązać zadanie pisząc własny kod. Każde nasze zadanie musi być zaliczone abyśmy mogli przejść dalej, więc teamtreehouse przymusza nas nieco do pisania własnego kodu, co chyba też jest dobrym pomysłem. Acha, za realizację kolejnych zadań jesteśmy nagradzani punktami, co pomaga odrobinę w motywacji (możemy porównywać się z innymi użytkownikami platformy i piąć się w górę w ogólnej klasyfikacji).

Myślę, że ten krótki opis wystarczy, aby was zachęcić przynajmniej do sprawdzenia teamtreahouse. Platforma oferuje 7-dniowy darmowy trial, a następnie płacimy $20 miesięcznie.

To tyle tak ogólnie o platformach edukacyjnych, właściwie każda z nich umożliwia rozpoczęcie nauki za darmo, więc zachęcam do sprawdzenia każdej z nich i podjęcia decyzji gdzie najlepiej się uczyć. Kolejne wideo z informacjami o dwóch platformach Lynda.com i TeamTreehouse.

Oczywiście są inne sposoby nauki. Możemy również uczyć się w sposób mniej zorganizowany, np. z różnych przypadkowych kursów, często bezpłatnych oraz tutoriali wideo na YouTube. Zaletą tego sposobu jest to, że nauka nie jest monotonna, wadą, że możemy pominąć jakieś ważne zagadnienia, albo nauczyć się ‚złych praktyk’, przejmując nawyki niezbyt profesjonalnych nauczycieli. Prawdopodobnie sam sposób nie jest najważniejszy, ważne jest, aby podjąć jakiś systematyczny wysiłek i stopniowo doskonalić swoje umiejętności.

Jak się uczyć?

Z moich doświadczeń wynika, że sama nauka na platformach edukacyjnych i oglądanie szkoleń nie wystarczą i nie spowodują, że staniemy się świetnymi programistami. Programowanie jest umiejętnością praktyczną i od samego początku powinniśmy wykorzystywać zdobywaną wiedzę, tworząc własne projekty. Obie te czynności będą się w pewnym sensie uzupełniać, ucząc się zdobywamy nową wiedzę, a tworząc projekty, stosujemy ją w praktyce. Po pewnym czasie zauważymy, że te dwie sfery wzajemnie sobie pomagają.

Unikniemy też sytuacji, w której uczymy się teorii, a zupełnie nie umiemy zastosować jej w praktyce. Albo praktykujemy, ale tracimy dużo czasu na szukanie informacji albo nasz kod jest nieefektywny, bo brakuje nam wiedzy. Oczywiście uczymy się również w ten sposób, ale nasza wiedza nie stanowi jakiegoś spójnego systemu i jest rozproszona.

Acha, jeżeli brakuje nam pomysłów na większe projekty, możemy rozwiązywać małe problemy. Na pewno jest wiele różnych stron internetowych, gdzie odnajdziemy różne, mniejsze zadania do rozwiązania. Jeną z ich jest Project Euler. Na stronie są różne zadania matematyczne o różnym stopniu trudności, które można rozwiązać w wielu językach programowania (więcej info w filmiku poniżej).

Tradycyjnie już, zamieszczę poniżej film na temat, jak można się uczyć:

Pomocne linki

Na koniec kilka linków do kanałów na YT, podejmujących tematykę programowania, które wydają mi się interesujące.

Okej, to właściwie wszystko na ten temat. Daj mi proszę znać w komentarzu, co o tym sądzisz. Być może sam masz jakieś wskazówki, którymi możesz się podzielić? Dzięki z góry!

*link partnerski

Jak zacząć programować?
5 (100%) 4 votes

2 odpowiedzi do Jak zacząć programować?

  1. FCE.pl 15 czerwca 2018 o 05:54 #

    Myślę, że na sam start można zerknąć na filmy instruktażowe online. Na youtube jest wiele takich, a na początek ciekawie wyglądają kursy Mirosława Zelenta z kanału „Pasja Informatyki”. Do tego książka i… czas.

Dodaj komentarz