Programowanie jest trudne? To Bzdura!

Istnieje przekonanie, że programowanie jest trudne. Nic w tym dziwnego, w końcu bardzo często kojarzy się programistów z ludźmi w koszulach w kratę, którzy układają Kostkę Rubika z zamkniętymi oczami oraz

włamują się do pentagonu;

obliczają trajektorie statków kosmicznych;

tworzą zaawansowane mechanizmy sztucznej inteligencji.

Mam nadzieję, że uda mi się dziś Ciebie przekonać, że programowanie jest równie proste jak parzenie herbaty, a parzenie herbaty może być równie skomplikowane jak programowanie:)

W tym artykule dowiesz się

  • Czy programowanie jest naprawdę trudne?
  • Co sprawia największy kłopot
  • Jak inaczej można się tego nauczyć
  • Czego się spodziewać, jeżeli zechcesz programować

Zastrzeżenie
Na potrzeby tego artykułu programowaniem będę nazywał większość technicznych czynności, które prowadzą do finalnego powstania i działania cyfrowego produktu. Zdaje sobie sprawę, że jest spora część osób, która nie nazwałaby programowaniem, zmiany wyglądu strony internetowej, albo zainstalowania i prawidłowego skonfigurowania Windowsa. Jest to temat na oddzielny artykuł.

Pewna pani zarządza serwerem

Na wstępie warto przyznać, że często za wyobrażenie o programowaniu odpowiadamy my – starsi stażem programiści. Lubimy czuć się potrzebni, ważni i wyjątkowi, a tajemnica programowania tylko potęguje to uczucie. Chcemy wierzyć, że sekretna sztuka kodowania wymaga niesamowitych zdolności i inteligencji.

Jakiś czas temu wewnątrz jednego z zespołów, z którymi współpracowałem, rozgorzała dyskusja. System nie był dostosowany do częstych zmian, które wymagały ręcznych modyfikacji i sprawdzania czy wszystko działa.

Programiści jak zwykle narzekali na nadmiar pracy, związany z kolejnymi prośbami i potrzebami klienta. Jednak, gdy zaproponowałem, aby klient sam mógł zmieniać wygląd strony, niemal jednomyślnie padły głosy

– To za trudne!
– Na pewno nie da sobie z tym rady!
– Jeszcze coś zepsuje.

W ich mniemaniu najlepszym rozwiązaniem problemu byłoby, gdyby klient przestał zgłaszać tak często zmiany. Niektórzy nawet obawiali się, że sami mogą stracić posadę, skoro nie będą już potrzebni klientowi. Mimo wszystko za moją namową, udało się przekonać zespół. Warunek był taki, że to nie oni będą wdrażać klienta.

Tym klientem była kobieta po trzydziestce, która używała komputera raczej do zadań biurowych.

Kilka tygodni później, gdy chciałem sprawdzić, w jaki sposób sobie radzi, mało nie spadłem z krzesła.

Na własne oczy widziałem jak przy pomocy Visual Studio Code, edytuje pliki konfiguracyjne JSON, dodaje je do systemu kontroli wersji, a następnie restartuje serwer IIS, aby zobaczyć zmiany!

Zdarzały się jej drobne potknięcia, wykonywała te operacje bardziej na pamięć niż ze zrozumieniem, ale czy dawała radę? Oczywiście. Czy zmniejszyła ilość pracy zespołu – jak najbardziej.

Potrzeba było tylko trochę chęci i wyrozumiałości, aby przynajmniej częściowo, rozwiązywała techniczne trudności, z których teraz my byliśmy odciążeni.

Pierwsze zetknięcie z programowaniem

Czy zdarzyło się Wam czytać książkę o programowaniu albo uczyć z kursu, a godzinę później być znudzonym, zmęczonym i mieć zwyczajnie dość? Wystarczy naprawdę niewiele, aby pomyśleć: to nie dla mnie!

Czy chcieliście stworzyć stronę internetową ale pierwsze, czego nauczano, to trzyliterowe skróty?

Niejeden raz zaczynałem naukę w celu napisania świetnej gry (w mojej wyobraźni wszystko jest świetne 🙂 ), a zamiast tego musiałem przekopać się przez stos nieinteresujących tematów.

Ja po prostu chciałem zrobić coś konkretnego! Zamiast tego zajmowałem się zupełnie nieistotnymi szczegółami.

Wtedy łatwo było pomyśleć, że po prostu nie rozumiem tego i dać sobie spokój. W końcu skoro te wszystkie informacje były na pierwszych stronach książek, a ja nie mogłem się przez nie przebić, to, po co iść dalej, prawda?

Dziś po wielu latach wiem, że znaczna część informacji w takich publikacjach jest nie tylko zbędna na początku, ale wręcz zakłóca proces nauki. Na cały ten ogrom wiedzy jest czas i wierzę, że można dobrze sobie radzić bez niego, gdy się zaczyna.

Popularnym mitem jest twierdzenie, że programista musi być dobry matematycznie. W całej mojej karierze programisty najczęściej z matematyką miałem do czynienia zaliczając kolokwia na studiach i wykonując testy rekrutacyjne 🙂 Jeżeli nie planujesz programować grafiki 3D lub satelity, to zetkniesz się z matematyką na poziomie podstawówki.

Naucz się robić herbatę jak programista

Wyobraźmy sobie na chwilę książkę Parzenie herbaty dla początkujących w stylu książek dla programistów. Musimy jednak zacząć od zmiany tytułu. Z pewnością byłoby to coś bardziej w stylu

Parzenie Herbaty 2.0 systemem gorącej wody

kompletny przewodnik dla początkujących

Spis treści takiej książki prezentowałby się mniej więcej tak:

  1. Historia herbaty
  2. Podgrzewacze wody i niezbędne akcesoria
  3. Rodzaje herbat
  4. Chemiczna budowa herbaty i jej atrybuty
  5. Liczenie ziaren
  6. Działanie herbaty na poziomie komórkowym
  7. Naczynia i zestawy do herbat
  8. Sposoby wyjmowania i sypania ziaren
  9. Umiejscowienie torebek w herbatach ekspresowych
  10. Twoja pierwsza herbata
  11. Prawidłowe próbowanie herbaty
  12. Sypanie herbaty przy pomocy łyżeczki (dla zaawansowanych)
  13. Zaparzanie dwóch herbat naraz
  14. Zestaw ćwiczeń i rozwiązań

 

Przyznam szczerze, większość kursów programistycznych, z jakimi się zetknąłem właśnie tak podchodzi do sprawy. Gdybym miał prowadzić kurs parzenia herbaty w duchu nauczania informatyki, koniecznie musiałbym podać Tobie dokładną temperaturę parzenia (w każdej skali), a także kazał przygotować odpowiednią wagę, aby odliczyć bardzo konkretną ilość liści.

Tak samo jak nie potrzebujemy znać najważniejszych herbacianych wydarzeń, aby zaspokoić pragnienie, tak samo nie potrzebujemy całej gamy akronimów, informacji i wiedzy, aby zacząć programować.

Oczywiście, że ta wiedza jest ważna. Oczywiście, że chcąc być profesjonalistą w swojej pracy, trzeba znać podstawy i rozumieć jak wszystko ze sobą działa. Mam jednak wrażenie, że obecne drogi do specjalistycznej wiedzy, nie sprzyjają jej zrozumieniu.

W takim przypadku, warto czasem ominąć trudny temat, aby się nie zatrzymać. Zawsze można do niego wrócić później.

Wszyscy jesteśmy programistami

No dobrze, prawie wszyscy 🙂

Zapomnijmy na chwilę o wszystkich standardowych definicjach i naszych wyobrażeniach. Jeżeli sięgniemy do istoty sprawy, możemy powiedzieć, że programowanie to tak naprawdę rozmowa. Jest to, co prawda specyficzna rozmowa, bo miedzy człowiekiem, a komputerem, tym nie mniej jak każda rozmowa rządzi się podobnymi prawami.

Odbywa się ona w konkretnym języku, ma swoje znaki zapytania i wykrzykniki, odmienia się przez przypadki, a także jak każda rozmowa, może być zupełnie opacznie zrozumiana 🙂

Jeżeli kiedykolwiek mówiłeś komuś jak coś zrobić – na przykład przygotować kotlet schabowy albo zawiązać buty, to spotkałeś się tak naprawdę z tym samym rodzajem problemów, z jakimi, na co dzień zmagają się programiści. Komendy należało powtarzać, słowa uważnie dobierać, nie wspominając o próbach wyjaśnienia takich spraw jak to, czym jest „szczypta soli”. To, co było oczywiste dla Ciebie, wcale nie było tak zrozumiałe dla innych. To tu właśnie leży istota problemu.

To przechodzenie od listy pojedynczych czynności, które ktoś musi zrobić, do zdania „zrób proszę obiad” jest tak naprawdę pewnego rodzaju programowaniem.

Potrzebujemy kontekstu, aby rozumieć nowe rzeczy

Problem z nauką programowania jest taki, że dostajemy informacje, które są ze sobą powiązane, ale nie odnoszą się do kontekstu, w jakim my jesteśmy.

Ten kontekst możemy zdobyć poprzez naukę i wytrwałość. W końcu elementy układanki zaczną do siebie pasować. Jednak z efektywnością takiej nauki jest różnie. Dlatego wydaje się, że programowanie jest dla wybranych.

Owi wybrańcy, to osoby, dla których ten sposób przyswajania wiedzy jest bardziej optymalny. Ja jednak nigdy nie byłem taką osobą. Jeżeli tylko czytam informację, aby ją zapamiętać – na pewno ją zapomnę. Tak samo z wiedzą, która aktualnie nie służy rozwiązaniu mojego problemu.

Typowe kursy programowania często najpierw uczą gramatyki, dialektów, akcentów, dopiero potem mówienia. Może, dlatego, że język programowania zdaje się być bardziej pisany niż mówiony 🙂

Jeżeli tylko zauważymy, że informatyka jest odzwierciedleniem naszego codziennego życia i znajdziemy odpowiednie przykłady, nauka będzie znacznie prostsza.

Kiedy programowanie jest naprawdę trudne?

Zaryzykuję stwierdzenie, że programowanie jest znacznie trudniejsze na końcu, niż na początku. Na początku wystarczy robić rzeczy tylko na tyle, aby po prostu działały. Jest to niestety etap, na którym wielu programistów poprzestaje.

Tak naprawdę, to wtedy, gdy programowanie staje się zawodem, wkraczają trudności. To wtedy musimy zadbać o prawidłowy proces wytwarzana, potwierdzenie wymagań i przetestowanie produktu.

Wracając do analogi kulinarnej, jest to jak przejście od smażenia kotletów w domu, do posiadania restauracji z polską kuchnią. Restauracja to może za duże słowo – powiedzmy FoodTruck. Nie wystarczy już wtedy po prostu usmażyć nieco więcej schabowych. Należy zebrać zamówienia, rozliczyć pieniądze, czy zadbać o higienę.

Oczywiście na początku też są pewne trudności. Warto być osobą, która jest cierpliwa, zorganizowana oraz nastawiona na rozwiązanie problemu.

Jeżeli książka albo poradnik, z którego się uczymy jest trudny, spróbujmy znaleźć inny. Aktualnie jest naprawdę duży wybór kursów, warto spróbować zaznajomić się z, kilkoma aby wybrać taki, który pasuje nam tempem i sposobem prezentowania wiedzy.

Jak podejść do nauki programowania

To, co najlepiej sprawdziło się w moim przypadku, to podejście projektowe. Lubię o sobie mówić, że rozpoznaję problemy w boju. W swojej karierze próbowałem się uczyć wielu technicznych aspektów tworzenia oprogramowania, ale nigdy nie było to tak skuteczne, jak wtedy, gdy miałem konkretny projekt do stworzenia.

Trzeba też pójść na pewien kompromis. Zacznij prosto. Jeżeli marzy się Tobie nowoczesna gra komputerowa, spróbuj najpierw zrobić PONG’a. Jeżeli korcą Cię strony internetowe, może jest ktoś, kto potrzebuje bardzo prostej strony wizytówkowej.

Mając zadanie przed sobą, skupiamy się na jego rozwiązaniu, a nie na nauce. To sprawia, że nauka dzieje się niejako obok. Zdobywamy wiedzę i umiejętności praktyczne. Tutaj naprawdę wystarczy trochę zaangażowania i cierpliwości.

Dopiero później proponowałbym sięgnąć do książek. Są one niezbędne, aby uzupełnić braki w stosunku do poradników i samouczków.

Poradniki pomagają bardzo szybko rozwiązać bardzo konkrety problem, ale wiadomości w nich są fragmentaryczne i często łączą różne obszary wiedzy o zróżnicowanym stopniu skomplikowania. Jest to tym bardziej ważne, jeżeli myślisz o programowaniu jak o potencjalnym zawodzie.

Nie panikuj, gdy coś nie działa

Zupełnie na koniec, wydawałoby się oczywista wskazówka. Jednak, gdy jesteśmy zaangażowani, a sprawy nie idą po naszej myśli łatwo wpaść w panikę. Ta panika objawia się czasem chaotyczną próbą naprawienia problemu poprzez przypadkowe zmiany.

Jest to działanie typowe nie tylko dla początkujących, ale również u doświadczonych programistów 🙂

Warto wziąć głęboki oddech. Metodycznie i skrupulatnie sprawdzić wszystko po kolei. W końcu się uda.

Pamiętam, gdy sam realizowałem projekt, który mnie przerastał. Zupełnie nie rozumiałem języka programowania i technologii, w której miałem pracować. Działałem po omacku. Wydawało mi się, że tracę grunt pod nogami. To była pierwsza moja praca, a ja byłem odpowiedzialny za projekt i kompletnie nie wiedziałem gdzie zacząć.

Wówczas starszy kolega z działu podszedł i bardzo wyrozumiale podtrzymał mnie na duchu mówiąc: Każda godzina włożonego wysiłku, w końcu zaprocentuje.

Dwa tygodnie później okazało się, że miał rację.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

This site uses Akismet to reduce spam. Learn how your comment data is processed.