admin 4Comment

Zaprezentuję wam dziś bardzo wartościowy artykuł, na który natknąłem się w sieci kilka dni temu. Zainteresuje on szczególnie te osoby, które już od jakiegoś czasu uczą się programowania i wyszły, a raczej próbują wyjść, poza absolutne podstawy. Artykuł w świetny sposób odpowiada na pytanie dlaczego na tym etapie nasza nauka gwałtownie staje się coraz trudniejsza.

Jeżeli masz ochotę przeczytać go w oryginale (jest napisany w języku angielskim), bardzo polecam. Autorem jest Erik Trautman, tytuł brzmi „Why Learning to Code is So Damn Hard”, a oto link do niego:

https://www.vikingcodeschool.com/posts/why-learning-to-code-is-so-damn-hard

Z racji tego, że artykuł nie jest krótki, a także język, w jakim został napisany, może być przeszkodą dla części zainteresowanych, w telegraficznym skrócie przedstawię tutaj jego clou.

Autor dzieli proces samodzielnej nauki programowania na kilka etapów. Początkowym jest ten, w którym poznajemy absolutne podstawy, bardzo podobne w większości popularnych języków programowania. Jest to etap, w trakcie którego, z jednej strony możemy korzystać z ogromnej ilości pomocnych źródeł (w internecie i poza nim) o których szerzej pisałem gdzie indziej, a z drugiej strony zakres wiedzy jaki musimy przyswoić (elementy, które wymieniłem jako absolutne podstawy w moim wpisie o niezbędniku juniora) nie jest szczególnie szeroki. Oczywiście ten etap subiektywnie może wydawać się dość trudnym, bo takie z definicji są początki w nauce każdego nowego zagadnienia czy umiejętności, jednak wspomniane dwie kwestie (bogactwo źródeł nauki oraz relatywnie niewielki zakres wiedzy) bardzo pomagają się w nim odnaleźć.

Kolejny etap jest zupełnie odmienny. Artykuł zainteresował mnie z tego powodu, że sam znajduję się w tej fazie mojej nauki, i odczuwam konsekwencje opisywane przez autora. Jest to etap krytyczny, ponieważ:

 

Gwałtownie rośnie ilość wiedzy, jaką musimy przyswoić

 

Po opanowaniu podstaw takich jak składnia czy semantyka języka, działania na zmiennych i flow control przychodzi nam zmierzyć się ze znacznie większą ilością zagadnień. Sytuacji nie poprawia fakt, że na tym etapie zdecydowanie jesteśmy już zmuszeni do postawienia na praktykę i pisanie własnych programów, co bardzo wyraźnie odsłania niedostatki i braki w naszej wiedzy.

Źródło

 

To moment, w którym musimy zmierzyć się z tworzeniem aplikacji poprzez projektowanie zorientowane obiektowo, gdzie nie liczy się już tylko to, że program w ogóle działa, ale też czy działa wydajnie i czy osiągnęliśmy cel w optymalny sposób. Kod powinien już stawać się czytelny i być pisany zgodnie z dobrymi praktykami, SOLIDem etc. Wychodzimy poza proste skrypty pisane w podstawowym IDE i mierzymy się z frameworkami, które z kolei zmuszają nas do poznania przynajmniej podstaw innych języków programowania etc. etc. Równocześnie wypadałoby poznać takie zagadnienia jak testy jednostkowe czy praca na bazach danych. Gwałtownie rośnie też potrzeba uzyskania zewnętrznej oceny naszego sposobu pisania programów, ponieważ kryterium poprawności przestaje już być to, czy kod działa czy nie. Ale to dopiero jedna trudność, z którą związany jest ten etap naszej edukacji. Drugi problem polega na tym, że:

 

Równie gwałtownie maleje ilość źródeł, z których możemy korzystać

 

Internet pęka w szwach od tutoriali, książek i ofert bootcampów, uczących w lepszy lub gorszy sposób jak opanować absolutne podstawy programowania. Ilość tych źródeł zmniejsza się jednak gwałtownie, kiedy chcemy sięgnąć po, wspomniane wyżej, bardziej skomplikowane zagadnienia. Dodatkowo, są one już na tyle skomplikowane, że w większości przypadków nieskuteczne jest przeprowadzenie ‚za rączkę’ po danym kursie, by nabyć umiejętności posługiwania się narzędziem. Wspomnianej zewnętrznej oceny naszego kodu także nie da się zastąpić w żaden sposób, a przynajmniej nie do końca skutecznie.

Źródło

 

Kumulacja tych dwóch zjawisk sprawia, że jest to krytyczny moment w nauce programowania i pewnie wiele osób rezygnuje, stwierdzając, że ‚nie nadają się do tego’ – nie rozumiejąc, że to, czego na tym etapie doświadczają jest naturalne i niezbędne w procesie samodzielnej nauki.  To w tym momencie szczególnie przekonujemy się, że nie, programowanie wcale nie jest łatwe, za to pokonywanie każdej kolejnej przeszkody na drodze do naszego rozwoju potrafi być bardzo satysfakcjonujące. Zależnie od sytuacji, ten etap może potrwać dłużej lub krócej, ale końcowo przechodzimy do kolejnego, który autor artykułu przedstawia, jako fazę, w której wzrasta nasza pewność co do posiadanych kompetencji i obranej ścieżki. Przejście do tej fazy oznacza, że jesteśmy na dobrej drodze.

Oprócz opisu drogi, jaką przyjdzie nam przejść, Erik Trautman daje nam też kilka rad, jak uczyć się by miało to sens i by zminimalizować skutki nieuniknionego wejścia w drugą, krytyczną, fazę naszego rozwoju. Na początku naszej nauki warto wypróbować kilka kierunków (zarówno programowania jak i potem, sposobów zdobywania wiedzy), sprawdzając, w których czujemy się najlepiej, po czym wybrać jeden i trzymać się go konsekwentnie. Powinniśmy też spróbować uczyć się z kimś jeszcze, czytać (i zrozumieć!) cudzy kod a także mieć świadomość naszego celu, jaki chcemy osiągnąć oraz plan, jak do tego doprowadzić.  I, przede wszystkim – być wytrwałym i skupionym na tym, co robimy.

 

Muszę powiedzieć, że trafiłem na artykuł w idealnym momencie – jestem w fazie, kiedy postępy nie przychodzą już łatwo i odczuwam związane z tym negatywne konsekwencje, dobrze więc utwierdzić się w przekonaniu, że jest to naturalny etap samodzielnej nauki.

4 thoughts on “Niełatwa nauka programowania czyli artykuł, który powinieneś przeczytać

    1. admin napisał(a):

      Cześć! To samo pomyślałem czytając artykuł, a, że chciałbym na blogu dzielić się wiedzą przydatną dla osób uczących się samodzielnie programowania, nie mogłem o tym nie napisać 😉 Cieszę się, że Ci się przyda, powodzenia!

  1. Piotr napisał(a):

    Fajny artykuł zarówno dla mnie jak i zapewne dla wszystkich self-learnerów. Dobrze jest stać na w miarę sztywnych nogach wiedząc gdzie się obecnie jest. Ja osobiście od samego początku nauki coś piszę. Czasem wyjdzie od razu, czasem trzeba się namordować z googlami, stackiem czy forami, ale koniec końców dochodzę do momentu w którym mogę stwierdzić: OK .. działa tak jak chciałem … czas wymyślić coś nowego.

    1. admin napisał(a):

      Dokładnie, jako osoby uczące się samodzielnie musimy pamiętać, że ten cały proces męczenia się z googlami, stackoverflow i innymi zakątkami internetu to właśnie nasz nauczyciel 🙂

Dodaj komentarz