• Články
  • Úmyslná praxe: Jak mě hudba a malba naučily kódovat
Vloženo na 28-09-2019
Melodie z notebooků Leonarda DaVinciho

Úmyslná praxe: Jak mě hudba a malba naučily kódovat

Když jsem se poprvé naučil programovat, vzpomínám si, že jsem nechtěl nic víc, než cvičit a zlepšovat se. Byl tu jen jeden problém: jak sakra cvičíte programování?

Ukázalo se, že některé odpovědi leží v tvůrčím umění. Zejména hudba a malba nabídly překvapivé lekce o tom, jak studovat softwarové inženýrství. Doufám, že vám pomohou, stejně jako mi pomohli.

Zaměřte se na základy

Co se učíme?

Pokud máte rádi algoritmy, a myslím tím opravdu, ráno se opravdu probudíte a nemůžete se dočkat, až si vykopete ruce do segmentových stromů a rekurze - pak blahopřeji. Jste kódovací jednorožec, o který se všichni usilujeme. My ostatní musíme zápasit s otázkou: Proč se vůbec obtěžovat s kódováním hádanek? Je to jen absolvovat technické rozhovory?

Když něco cvičíte, je důležité vědět, proč studujete to, co studujete. Na jakou konkrétní dovednost se zaměřuje? Jaké slabé místo posilujete?

Řekl bych, že problémy s kódováním neučí jen konkrétní lekci (jako procházet binární vyhledávací strom), ale také základní proces inženýrství. Jinými slovy, zaměřují se na základní dovednosti.

Důvody kódování puzzle se zdají být tak svévolné, protože jsou. Nejcennějším vědomím, které z nich bylo získáno, není řešení problému, ale jak problém vyřešit. Je to důležitý rozdíl.

Jak rozdělujete velký problém na menší obavy? Jaké detaily můžete abstraktem umožnit vyšší úroveň myšlení? Jaké okrajové případy leží v řešení? Jaké jsou kompromisy mezi jednou datovou strukturou a jinou?

Všechny výše uvedené otázky testují základní dovednosti. Tyto dovednosti jsou, stejně jako datová vrstva na základně aplikace, na čem závisí všechny ostatní znalosti a dovednosti. Nejedná se o trylky a ozdoby klavírní sonáty. Jsou to základní harmonie, na kterých spočívá celá sonáta.

Co Zkušení lidé vědí

Slyšte mě: zručný umělec neví, jak na podzim malovat krajinu Central Parku. Místo toho zručný umělec ví, jak malovat světlo na formu.

Zkušený umělec neví, jak malovat listy na stromech. Zkušený umělec ví, jak se barva chová.

Podobně ani zkušený programátor neví, jak ovládat React, Vue, Ember nebo cokoli, co bude hot frameworkem, bude o rok později. Zkušený programátor chápe vanilkový JavaScript a jak prohlížeč funguje. Zkušený programátor chápe výhody funkčního programování, strukturu toku a proč stojí za to použít React na prvním místě. Znalosti mají své vlastní závislosti.

Naučte se základy a zbytek je pomalý.

Obraz ze života

Kopírování a vkládání vs. primární zdroj

Malíři, které znám, ti, kteří o svém řemeslu myslí opravdu vážně, vždy malovat ze života. Co to znamená? Malovat ze života znamená, že umělkyně před očima maluje to pravé, ať už je to model, krajina před námi nebo zátiší.

Není to fotografie modelu. Ne ztvárnění krajiny jiným umělcem. Ne malování obrazu jiné osoby. To znamená malování přímo ze zdroje, řešení problému sami.

Když se podíváte na obraz někoho jiného než na západ slunce, místo aby jste stáli venku, znamená to, že kopírujete řešení, nikoliv vynalézáte. Je to ekvivalent úryvků kopírování a vkládání mimo přetečení zásobníku.

Kopírování a vkládání kódu nikdy nebude mít přístup k základním znalostem. Když kopírujete řešení někoho jiného na problém, dostanete řešení, ale ne zážitek. Chybí vám těžká práce při hledání konkrétního řešení. Chybí vám učení dovednosti.

Přenosné znalosti

Základní znalosti jsou přenosné. Pokud jste se sami pokusili o problém, sami se vám nepodařilo vyřešit a sami jste to vyřešili, jste odměněni znalostmi, které již nejsou specifické pro jednotlivé případy, ale jsou spíše agnostické. Naučili jste se principy, které můžete použít pro budoucí scénáře.

Řešení jsou zřídka univerzální pro všechny. Vytváření řešení tak, aby odpovídala jejich kontextu, vyžaduje dovednosti - a tuto dovednost lze naučit jen tvrdě.

Hledání primárního zdroje, malby ze života, bez hluku interpretace nebo názoru někoho jiného, ​​vždy vyvolá nejštědřejší lekce.

Procvičte si své váhy

Cílené opakování

Když se klavír učí hudbu, nehraje ji od začátku do konce a pak tento proces tisíckrát opakuje. Slabá místa musí být zaměřena. Musí být identifikovány mezery ve znalostech.

Jinak části díla, které nejsou dobře srozumitelné, vždy vedou k nevýrazným, bezduchým výkonům (neudržitelnému / křehkému kódu) nebo k přímým chybám a nesprávným poznámkám (chybám).

Ačkoli slepé opakování je neefektivní způsob, jak se učit, cílené opakování může nabídnout obrovské výhody, zejména pro začátečníky. Zkušení programátoři mohou považovat za samozřejmost plynulost, s níž navigují Git nebo bash terminál.

Pro začátečníka však opakování těchto základních dovedností a získání formy „svalové paměti“ uvolní programátorovy kognitivní schopnosti, aby se mohla zaměřit na inženýrské záležitosti vyšší úrovně.

Conciertos vyšší úrovně

Takže, pokud jste v určitém rámci nová, řekněme Express.js, strávte nějaký čas praktikováním svých vah. Identifikujte hlavní prvky, které tento rámec poskytuje. Postavte s nimi něco základního.

Poslouchejte server. Vyberte port. Vytvořte trasu. Přijmout žádost. Odpovězte daty. Nakonec je zde klíč: strhněte jej a udělejte to znovu.

Když hudebník dokončí hraní obzvláště tvrdé sekce, neprášil jim ruce a řekl: „Dobře, ten jsem vyřešil!“. Řešení není smysl. Dovednost, znalosti a zařízení jsou.

Může to znít jako fuška, ale ve skutečnosti do vás vkládá svalovou paměť potřebnou k přechodu na vyšší úroveň myšlení. Navrhnout něco na vysoké úrovni a narazit na chyby syntaxe je neuvěřitelně frustrující. Získejte tyto nesprávné kroky syntaxe z cesty praktikováním svých měřítek.

To je to, jak se profesionální houslista po praktikování všech měřítek v každých klíčových tisících iterací nemusí obávat individuálních not, když je koncertní čas. Vyzbrojená touto svalovou pamětí se může místo toho zaměřit na výzvy vyšší úrovně. Fráze. Melodie. Concierto.

Studie a náčrtky

DaVinciho ruce

Pokud se podíváte na časopisy Leonarda DaVinciho, najdete četné studie a náčrtky rukou. Některé studie dokonce podrobně popisují muskulaturu a kost. Dalo by se divit: má jen nějakou podivnou posedlost lidskou rukou? Proč to všechno obtěžoval načrtávat?

Pokud navštívíte Metropolitní muzeum umění v New Yorku, najdete nespočet obrazů zátiší. Misky ovoce. Vázy s květinami. Ve skutečnosti navštivte jakoukoli vážnou uměleckou školu a studenti maľují stejné předměty. Snaží se umělci porozumět mandarinkám? Jsou to všichni začínající botanici?

Ne. Toto jsou cílené studie. Není to ovoce, které se snaží pochopit. Umělci se snaží pochopit něco základního: světla a barvy na formuláři.

Stejně tak doufám v začátek programátorů (včetně mě!) Je to, že naše „skicáře“ budou naplněny studiemi o pochopení konkrétního programovacího konceptu nebo problému. Malé aplikace, experimenty, katalogizace našich vyšetřování softwarového inženýrství.

Skicář programátora

Jak se sliby chovají? A co ve srovnání s async-čekat? Je vše v JavaScriptu opravdu objektem, dokonce nulovým? Jak si mohu tuto funkci zapamatovat? Do jaké souvislosti jsou vázány funkce šipek? Pokud se chystáte napsat konstruktorovou funkci a zavolat super () v každé komponentě React, nestálo by to za malou studii při učení o třídách ES6? Pokud píšete asynchronní požadavky HTTP, neměli byste pochopit, jak fungují sliby?

Kteroukoli z těchto kuriozit lze prozkoumat otevřením replik nebo JSBin. Malé studie kódu mohou prohloubit porozumění větším projektům.

Když umělec načrtne ruku nebo misku ovoce, není to proto, že tyto předměty jsou obzvláště zajímavé. Umělci skica získat porozumění v přípravě na větší výzvy. Malé experimenty k pochopení větších problémů.

Podívejte se na ruce na Mona Lisa. Jsou perfektní.

Portréty a stromy závislosti

Složení

Věřím, že hlavním úkolem všech tvůrců (včetně programátorů) je složení. Doslova: jak dáte dohromady různé prvky, aby se vztahovaly soudržným způsobem?

Existuje několik strategií, jak toho dosáhnout (včetně najmutí produktového manažera). Jednou ze strategií je postavit svůj kus od základní vrstvy nahoru. Začněte vrstvou, která má nejméně závislostí. Mohly to být vaše datové modely. Pokud je TDD vaší vibrací, mohlo by to začít testy.

Při řešení portrétu nezačíná malíř s řasami. Řasa závisí na umístění očního víčka, které závisí na tvaru oční patice, která závisí na kostní struktuře subjektu, která spočívá na úhlu krku a ramen atd. Atd.…

Pokud je některý z těchto prvků nakreslen nesprávně nebo je dokonce mírně mimo kilter, vaše řasy jsou nešťastné. Zapomeňte na všechny barvy, které jste navrstvili, a snažte se přimět ty řasy do práce. Nyní musí být vše přepracováno. Chyby jsou násobeny řetězcem závislostí.

Vrstva podle vrstvy

Při vytváření aplikace s plným zásobníkem získejte svoji datovou vrstvu pevnou. Napište testy. Teprve poté můžete přejít na směrování, které bude záviset na dané datové vrstvě. Otestujte si své trasy. Není třeba ani otevřít prohlížeč. Důvěra v backend umožní důvěru v frontend.

Doufejme, že v době, kdy se obáváte o poloměry ohraničení na tlačítkách, budete mít hromadu aplikačních vrstev, které jsou na sobě vytvořeny s jistotou, se zelenými zaškrtávacími značkami až dolů. Vyplatí se začít s větším obrázkem před detaily.

Kód kodéru.

Nakonec, i když máte všechny tyto strategie, i když máte váhu stupně počítačové vědy nebo posílení bootcampu kódování, není psaní kódu možné. Skladatelé skládají. Malíři malovat. Kód kodéru.

Ukázalo se, že kódování je sourozenec jiného umění. Je to řemeslo samo o sobě a může být praktikováno. Doufám, že díky promyšlené praxi a uznání umění se začínající programátoři budou moci soustředit na základy, zdokonalovat svá řemesla a pracovat tak skvěle, jako jsou jejich ambice.

Viz též

Bude AI konec herců?Rozbalte, co funguje: Jak generovat více příjmových toků z jednoho nápaduVzdělávání, začleňování, demokratizaceJak se stát umělcemCo je to umění?Snížení počtu - 1. část: Cesta začíná