Proč je kódování tak těžké? | Část 1

Tento příspěvek je o technickém tématu: kódování. Ale aby bylo jasno, nemám technické vzdělání.

Jsem hrdým synem umělce, který mě naučil, jak používat emoce jako vodicí kompas pro orientaci v životě, spíše než logiku. V žilách mi koluje hlína, grafit, tuš, barvy, plátno, papír a lepidlo.

Ve škole jsem měl problémy z mnoha důvodů – mezi nimi byly i dvě poruchy učení: poškození mozkových nervů v důsledku komplikací při porodu a dyslexie, a ta by zůstala nediagnostikována až do mých dvaceti let. Moje nejlepší výsledky v testech byly tak špatné, že jsem se málem nedostal na vysokou školu.

Ve škole jsem studoval politologii a mé první neúspěšné pokusy o kariéru se týkaly filmu a grafického designu.

Sám jsem se naučil programovat – je to jedna z nejtěžších věcí, které jsem kdy dělal. Také jsem asi pět let učil kódování na bootcampu tady ve Washingtonu a příležitostně jsem mentoroval své přátele.

Je to sice těžké, ale není to nemožné. Když jsi samouk, učíš se po kouskách. Někdy ti něco dává smysl hned, zatímco jiné ti docvakne až za několik let. Cesta vysvětlování je dobře vyšlapaná, ale zjistil jsem, že vaše životní zkušenosti, dispozice a vzdělání znamenají, že polovina vaší bitvy spočívá v nalezení správných zdrojů učení.

Dvě věci, než začneme:

  1. Jestliže to dokážu já, dokážete to i vy.
  2. Nejste v tom sami.

Nová slovní zásoba, nové pojmy, nové… všechno

Jednou ze záludných překážek při učení se programování je, že výrazy používané k popisu čehokoli v „kódové řeči“ mohou v běžné angličtině často znamenat něco úplně jiného. Mým oblíbeným příkladem je slovo „třída“.

Na rozdíl od akademických nebo sociologických konotací, na které jsme zvyklí, se třída v programovací řeči liší podle toho, jaký programovací jazyk používáte. Ještě více matoucí je, že v těchto různých programovacích jazycích je Třída jednak dostatečně pojmově příbuzná, abychom mohli vést paralely podobnosti, proč se její původní autoři rozhodli nazývat ji Třída, ale skutečné použití je natolik odlišné, že je to opravdu něco úplně jiného. (Konkrétně třídy CSS vs. objektově orientované třídy)

Mluvení kódem se téměř podobá slangu, což, jak ví každý rodič, je frustrující. Zpočátku může být těžké označit, co je normální anglické slovo a co „kódový“ výraz.

Navíc je často slyšíte v rychlém sledu za sebou, takže celá věta v kódové řeči bude gramaticky správně a budete znát každé slovo zvlášť, ale ne v tomto uspořádání.

„Poté, co jsem propláchl jak mezipaměť prohlížeče na lokální úrovni, tak požádal Johna, aby vymazal mezipaměť serveru na staging, v domnění, že musí jít o nějaký problém s trvalou pamětí nebo stavem, ukázalo se, že jde o kolizi názvů, která přepsala dříve definovaná volání v kořenovém adresáři. Vytvořím ticket pro přidání zdrojových map, abychom mohli instanciace snadněji dohledat místo grepování repozitáře.“ -Takovou větu jsem řekl svému šéfovi, který souhlasně pokýval hlavou.

Nejde jen o to začít od nuly, definovat, co je to nula

Kromě toho existují koncepty, se kterými jste se nikdy předtím nemuseli setkat, natož s nimi bojovat.

Příklad, který rád používám se svými studenty:
Řekněme, že chcete naprogramovat počítač, aby vám udělal šálek kávy. Jednoduché, že?

Vy: Hej, počítač: udělej mi šálek kávy.

Počítač: Udělej mi šálek kávy: PÍP PÍP: JASNĚ, ŽE JO. CO JE KÁVA A CO SE Z NÍ DĚLÁ?“

Představte si všechny způsoby, jakými byste mohli kávu připravit… pak si představte proces, jak dostat kávové zrno ze stromu, na kterém vyrostlo, do podoby, kterou můžete v tomto procesu použít… jéje.

Často začínáme od nuly a i malé, pro nás jednoduché věci jsou ve skutečnosti často ohromně složité na provedení pomocí kódu.

Nemusíte věci jen naprogramovat, musíte v první řadě definovat, co to je. Pak musíte svůj kód posílit tak, aby zvládl všechny možné způsoby, jak se to může pokazit. Z jednoduchých úloh se stanou ohromující katedrály vzdávající čest explicitním bohům.

„Prostě to vygoogluj“

Snad nejvíce mě rozčiluje rada mých kolegů začínajícím vývojářům: „Vygoogluj to“.

Každý, kdo se někdy topil v bahně, ví, jak je to neužitečné.

A. Nevíte, jak diagnostikovat, co je špatně, takže ani nevíte, kde začít. (Kdybys to věděl, neptal by ses).
B. I kdybyste to věděli, nevíte, jaké pojmy jsou s problémem spojeny.
C. A i kdybyste věděli, výsledky jsou často tak zmatené, že byste je nepoznali, ani kdyby na vás přímo zíraly. (Nebo jak říkal můj děda, nedokázal by vylít vodu z bot, kdyby byl na dně návod.)

Kódování je jako cizí jazyk

Existují nápadné paralely mezi učením se kódování a učením se cizího jazyka. Zjistil jsem, že studenti jazyků, ať už anglických nebo jiných, mají tendenci si rychleji osvojit syntaxi.

Ano, v systémech existují zákonitosti a logika.

Ano, některé věci jsou svérázné a nelze je stručně vyjádřit jejich anglickým ekvivalentem.

Ano, z výše uvedených 2 bodů existují výjimky, které si odporují nebo nedávají smysl, ale tak to prostě je, takže si to musíte zapamatovat.

Napůl pastor / napůl vědec

Snad nejšílenějším rozporem, který musí programátor splňovat, je to, že máte za úkol jednak vědět, jak to všechno funguje, a jednak přikládat zdravou většinu víře.

Chcete-li programovat, musíte používat logiku, rozum a odvozování. Ladění je deduktivní proces. Dobrý kód je dobře strukturovaný, záměrně logický a dobře uspořádaný.

Na druhé straně používáme kameny, které jsme obelstili, aby myslely (počítače). Spoléháme na frameworky, knihovny a fragmenty napsané jinými lidmi, kterým buď nerozumíme z časových důvodů, nebo je bereme čistě na vědomí. V každém řádku kódu se toho děje tolik, že bychom nikdy nedokončili funkci, kdybychom se museli zastavit a přemýšlet o tom, co to všechno dělá.

Chcete-li být programátorem, musíte být zčásti knězem/kněžkou založeným na víře a zčásti Spockovým chladným logikem.

Obrázek prostřednictvím Paramount Pictures.

Závěr

Takže, jak vidíte, máme o práci postaráno. Ale stejně jako jsme nepřišli na svět s tím, že umíme mluvit, psát nebo dokončit některý z úkolů, které dnes považujeme za rutinní, ale kdysi jsme s nimi zápasili: zvládneme to.

Hluboká pravda o kódování spočívá v tom, že je to produkt, úroveň nejlepší snahy – dobrého úmyslu – upřímného daru některých velmi chytrých lidí usnadnit život. Nějaký chytrý člověk někde řekl: „Tohle je na nic. Musí existovat lepší způsob, než je tenhle.“

A kód se poprvé nadechl.

V další části vám nabídnu několik strategií, které vám tento proces usnadní a pomohou vám přiblížit se k vašim cílům. Kód je tu od toho, aby zůstal, je tu od toho, aby pomáhal, a když nic jiného, možná se u toho i trochu pobavíte.

Leave a Reply

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.