Miért olyan nehéz a kódolás? | 1. rész

Ez a bejegyzés egy technikai témáról szól: a kódolásról. De hogy tisztázzuk, nem rendelkezem műszaki háttérrel.

Egy művész büszke fia vagyok, aki megtanított arra, hogyan használjam az érzelmeimet iránytűként az életben való navigáláshoz, nem pedig a logikát. Agyag, grafit, tinta, festék, vászon, papír és ragasztó folyik az ereimben.

Az iskolában sok okból küzdöttem – ezek között volt két tanulási nehézségem is: a születésemkor fellépő komplikációkból eredő agyi idegkárosodás és a diszlexia, ami egészen a húszas éveim végéig diagnosztizálatlan maradt. A legjobb teszteredményeim annyira rosszak voltak, hogy majdnem be sem kerültem a főiskolára.

Politológiát tanultam az iskolában, és az első sikertelen karrierpróbálkozásaim a film és a grafika területén voltak.

Megtanítottam magam kódolni – ez az egyik legnehezebb dolog, amit valaha csináltam. Emellett körülbelül 5 éve tanítok kódot egy bootcampben itt D.C.-ben, és mentorálom a barátaimat néha-néha.

Noha nehéz, de nem lehetetlen. Ha autodidakta módon tanulsz, akkor apránként tanulsz. Néha valaminek azonnal van értelme, míg mások csak évek múlva fognak kattanni. A magyarázat útja kitaposott, de úgy tapasztaltam, hogy az élettapasztalatod, a hajlamod és az iskolázottságod azt jelenti, hogy a harc fele a megfelelő tanulási források megtalálása.

Két dolog, mielőtt elkezdjük:

  1. Ha én meg tudom csinálni, te is meg tudod csinálni.
  2. Nem vagy egyedül.

Új szókincs, új fogalmak, új… minden

A kódolás megtanulásának egyik trükkös akadálya, hogy a “kódnyelvben” valaminek a leírására használt kifejezések gyakran teljesen mást jelentenek a hétköznapi angolban. A kedvenc példám a “Class” szó.

Az általunk megszokott akadémiai vagy szociológiai jelentéssel ellentétben a Class a programozási nyelvben mást jelent attól függően, hogy milyen programozási nyelvet használunk. Még zavaróbb ezekben a különböző programozási nyelvekben, egy Class mindkettő eléggé rokon fogalmilag ahhoz, hogy párhuzamot vonjon a hasonlóságról, hogy az eredeti szerzők miért választották, hogy Classnak nevezzék, de a tényleges használat eléggé különbözik ahhoz, hogy tényleg valami egészen más legyen. (Konkrétan a CSS osztályok vs. objektumorientált osztályok)

A kód beszélése majdnem olyan, mint a szleng, ami, mint minden szülő tudja, frusztráló. Eleinte nehéz lehet megjelölni, hogy mi a normális angol szó és mi a “kód” kifejezés.

Márpedig gyakran gyors egymásutánban hallod őket, így egy teljes code-speak mondat nyelvtanilag helyes lesz, és minden egyes szót külön-külön is ismerni fogsz, de nem így elrendezve.

“Miután kiürítettem mind a helyi böngésző gyorsítótárát, mind pedig megkértem Johnt, hogy törölje a szerver gyorsítótárát a stagingben, azt gondolván, hogy valamilyen tartós memória- vagy állapotprobléma lehet, kiderült, hogy egy névütközés írta felül a korábban a gyökérben definiált meghívásokat. Készítek egy jegyet, hogy adjunk hozzá forrástérképeket, hogy könnyebben nyomon követhessük az instanciákat a repo kigyűjtése helyett.” -A tényleges mondatot a főnökömnek mondtam, aki helyeslően bólintott.

Nem csak a semmiből kezdeni, hanem meghatározni, hogy mi a semmiből

Ezeken felül vannak olyan fogalmak, amelyekkel még soha nem kellett találkoznod, nemhogy küzdened velük.

Egy példát szeretek használni a diákjaimmal:
Tegyük fel, hogy be akarod programozni a számítógépedet, hogy készítsen neked egy csésze kávét. Egyszerű, ugye?

Te: Hé, számítógép: csinálj nekem egy csésze kávét.

Számítógép: Készíts nekem egy csésze kávét: BEEP BOOP: PERSZE PAT. MI A KÁVÉ ÉS MI A KÉSZÍTÉS?

Gondolj el minden módot, ahogyan kávét készíthetsz… aztán képzeld el azt a folyamatot, ahogyan a kávébabot a fáról, amin nőtt, olyan formába hozzák, amit felhasználhatsz ebben a folyamatban… jaj.

Gyakran a nulláról indulunk, és még a számunkra apró, egyszerű dolgok is valójában gyakran elképesztően bonyolultak ahhoz, hogy kóddal valósítsuk meg őket.

Nem csak programozni kell a dolgokat, hanem először is meg kell határozni, hogy mik azok. Aztán meg kell erősítened a kódodat, hogy kezelni tudd az összes lehetséges módot, ahogyan elromolhat. Az egyszerű feladatokból lenyűgöző katedrálisok lesznek, amelyek az explicit istenek előtt tisztelegnek.

“Csak guglizz rá”

Talán az a tanács, ami a legjobban feldühít a társaimtól az új fejlesztőknek, hogy “guglizz rá”.

Aki már volt mellkasig a sárban, az tudja, hogy ez mennyire nem hasznos.

A. Nem tudod, hogyan diagnosztizáld, mi a baj, így azt sem tudod, hol kezdd el. (Ha tudnád, nem kérdeznél).
B. Még ha tudná is, nem tudja, milyen kifejezések kapcsolódnak a problémához.
C. És még ha tudnád is, az eredmények gyakran olyan zavarba ejtőek, hogy akkor sem ismernéd fel, ha a szemedbe bámulna. (Vagy ahogy nagyapám mondta, akkor sem tudnál vizet önteni egy csizmából, ha az alján utasítás lenne.)

A kódolás olyan, mint egy idegen nyelv

A kódolás tanulása és az idegen nyelv tanulása között feltűnő párhuzamok vannak. Azt tapasztaltam, hogy a nyelvtanulók, legyen szó angolról vagy másról, hajlamosak gyorsabban elsajátítani a szintaxisokat.

Igen, a rendszereknek vannak mintái és logikája.

Igen, néhány dolog sajátos, és nem lehet tömören átadni az angol megfelelőjükkel.

Igen, a fenti 2 pont alól vannak kivételek, amelyek ellentmondanak vagy nem értelmesek, de ez van, tehát meg kell tanulni.

Félig lelkész / félig tudós

Talán a legőrjítőbb ellentmondás, amit egy programozónak teljesítenie kell, hogy egyszerre van rád bízva, hogy tudd, hogyan működik az egész, és hogy egészséges többségét a hitnek tulajdonítsd.

A programozáshoz logikát, értelmet és következtetést kell használnod. A hibakeresés egy deduktív folyamat. A jó kód jól strukturált, szándékosan logikus és jól szervezett.

Másrészt olyan köveket használunk, amelyeket gondolkodásra csaltunk (számítógépek). Keretrendszerekre, könyvtárakra és mások által írt snippetekre támaszkodunk, amiket vagy az idő miatt nem értünk, vagy pusztán a hitünkre hagyatkozunk. Minden egyes kódsorban annyi minden történik, hogy soha nem tudnánk befejezni a funkciót, ha meg kellene állnunk, és végiggondolni, hogy mit is csinál mindez.

Ahhoz, hogy programozó legyél, egyszerre kell részben hiten alapuló papnak/papnőnek és kőkemény Spock logikusnak lenned.

Kép a Paramount Pictures segítségével.

Következtetés

Amint láthatod, nem lesz könnyű dolgunk. De ahogy nem úgy jöttünk a világra, hogy tudtuk, hogyan kell beszélni, vagy írni, vagy elvégezni bármelyik feladatot, amit ma már rutinszerűnek találunk, de egykor küzdöttünk vele: meg tudjuk csinálni.

A kódolás mögött az a mély igazság, hogy az a termék, a szint legjobb erőfeszítések – a jó szándék – néhány nagyon okos ember őszinte ajándéka, hogy megkönnyítse az életet. Valami okos ember, valahol azt mondta: “Ez szar. Kell lennie ennél jobb megoldásnak is.”

És a kód vette az első lélegzetvételét.

A következő részben adok néhány stratégiát, amelyekkel elsimíthatod ezt a folyamatot, és elindulhatsz a céljaid felé. A kód azért van itt, hogy maradjon, azért van itt, hogy segítsen, és ha másért nem is, talán még egy kicsit jól is fogsz szórakozni.

Leave a Reply

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.