Učení, jak se učit: Nejdůležitější dovednosti pro vývojáře

Zdroj: https://themindblower96.wordpress.com/2015/05/21/54/

Být efektivním studentem je přinejmenším stejně důležité jako efektivní kodér.

Když jste vývojář, vaše práce vyžaduje, abyste se učili každý den - navzdory neustálému lákání rozptýlení, jako jsou Hacker News, Twitter, Reddit a Facebook.

Neustále se setkáváte s novými základnami kódů a novými technickými výzvami. Domov není o nic lepší, protože řešíte open source repozitáře a osobní projekty, každý s vlastními procesy a výzvami, které je třeba řešit.

Technologický svět se rychle mění a může se cítit jako práce na plný úvazek, jen když drží krok s nejnovějšími nástroji, jazyky a rámci.

Krátký příběh: učení je těžké. Přesto se musíme naučit rychle a efektivně prospívat.

V minulém roce jsem přešel od nevědění, jak používat ladicí program Chrome, k práci jako softwarový inženýr pro přední kryptoměnnou společnost. Během toho jsem se rychle naučil novou dovednost (kódování).

To znamená, že učení pro mě nebylo snadné.

Upřímně řečeno, každý nový koncept byl bojem. Bylo tam příliš mnoho neznámých a příliš mnoho nejistoty.

"Jak je to na světě udržitelné?" Pomyslel jsem si.

"Pokud je to tak, jak se má naučit se kódovat každý den, budu bídný." Je to opravdu moje vášeň? “

"Nebylo by to pro mě snadné, kdyby to byla moje vášeň?" Bojují umělci s uměním? Snaží se autoři napsat skvělou knihu? Bojují sportovci v závodě dobře? Máme bojovat, když sledujeme naše vášně? “

"Neměl bych v tom najít potěšení?"

Je to někdy snazší?

Ano. O rok později je řešení nových programovacích konceptů stále „obtížné“ v tom smyslu, že vyžaduje disciplínu a tvrdou práci.

Ale je to také příjemný proces, spíše než ohromující.

Co se stalo v minulém roce, aby byl tento posun možný?

Jednoduché: Změnil jsem svůj pohled na učení. To, co mi kdysi připadalo „obtížné“, se stalo „poutavým“.

Ve zbytku příspěvku vysvětlím, jak k této transformaci došlo.

Teprve začínám

Naučit se kódovat je na začátku nejtěžší.

Například přemýšlejte o prvním programovacím jazyce, který se musíte naučit. Chcete řešit malé věci, jako je syntaxe a styl. Nejprve však musíte pochopit složité základní pojmy, jako jsou hodnoty, typy, operátory, řídicí tok, funkce, funkce vyššího řádu, rozsahy, uzávěry, rekurze a ještě mnohem více.

Je to jako naučit se žonglovat - ale začíná se osmnácti kolíky místo dvou.

Když jsem se poprvé dozvěděl o uzavření, trvalo mi mnoho týdnů, než jsem opravdu pochopil tento koncept. Myslel jsem, že jsem tomu rozuměl, když jsem o tom četl. Ale když jsem se snažil identifikovat a používat uzávěry v praxi, zjistil jsem, že jsem pařezovaný.

To nebylo neobvyklé. Tento proces jsem pozoroval také jako učitel: nové koncepty obvykle neklikají poprvé. Nebo druhý. Nebo dokonce desátý.

Ale pro ty, kteří to vydrží dost dlouho, bude „bod zlomu“, kdy věci najednou začnou dávat smysl. V mém příkladu jsem četl doslova každý blogový příspěvek, Stack Overflow příspěvek a specifikace na internetu o uzavření.

Všechno, co jsem četl a experimentoval, mi poskytlo novou perspektivu, až jsem nakonec měl 360stupňový mentální obraz o tom, jak uzávěry fungují. Uzávěry „klikly“.

Dostat se do bodu, kdy jsem cítil, že tento pocit porozumění uzavření je velmi důležitý, protože to bylo prospěšné a povzbudilo mě, abych šel více - včetně psaní vlastního blogu, který vysvětlil tento koncept.

Učení je proces, ne cíl

Pokud vidíme učení jako něco, co „musíme“ udělat, spěcháme, abychom to udělali, abychom mohli zbytek času strávit tím, že děláme něco „zábavnějšího“ - něco, co „chceme“ dělat.

Problém je v tom, že o všem není možné nic vědět, takže sledování učení jako závodu vede k vyhoření a zklamání.

Místo toho, pokud vidíte učení jako proces, oceníte malá vítězství a postřehy. To vás přivede k neustálému posunu vpřed.

Můžete to porovnat s cvičením. Cvičení bolí, a pak bolest skončí, jakmile vaše cvičení skončí. Ale nikdy to není pryč. Čeká na vás při příštím tréninku. Až na pokaždé se bolest stává méně pronikavou. Naučíte se s tím vyrovnat. Seznámíte se s bolestí a stane se součástí rutiny. Jste odměněni lepším zdravím a lepší postavou a jste motivováni, abyste pokračovali.

Cvičení vytváří pozitivní zpětnou vazbu:

Totéž platí pro učení.

Proměnit učení v poutavý proces

Představte si, že budujete svou první webovou aplikaci.

Zpočátku stačí jen skličující, prázdný textový editor. Úkol sestavení aplikace se zdá téměř nepřekonatelný. Nic nevíš a musíš se toho tolik naučit, než se ti to podaří.

Naštěstí se rozhodnete jít na to stejně.

Od té chvíle se vaše hlavní zaměření stane jedním krokem po druhém.

Nejprve vytvoříte nápad. Co budete stavět? Kdo je koncový uživatel? Jaká jsou omezení?

Za druhé, prototypy nebo náčrty některých hrubých návrhů toho, co si myslíte, že by to mohlo vypadat. Požádáte přátele nebo internet o zpětnou vazbu a iterujte, abyste je vylepšili.

Za třetí, zkoumáte jazyky, nástroje a rámce, které budou nejlépe vyhovovat vašim požadavkům.

Krok za krokem disciplinujete svou mysl, aby směřovala veškerou svou energii k tomuto jedinému cíli.

Někdy píšete kód.

Častěji než ne jste uvízli v nějaké chybě nebo chybě.

Někdy jste příliš unavení na to, abyste dělali nějakou práci, takže si uděláte pauzu.

Jindy nemáte chuť psát kód. To je v pořádku. Trávíte čas zkoumáním nebo čtením témat souvisejících s vaším projektem.

Nakonec jste po několika týdnech tvrdé práce vytvořili základ, který zvládne vaše velké nápady. Najednou se práce na vaší aplikaci necítí tak bolestivá. Vidíte odměnu za prvotní sadu tvrdé práce a nyní je to jen další kus kódu, který musíte napsat, nebo jiný kousek refaktoringu, který musíte udělat - což jste už stokrát udělali, žádný problém.

Z toho, co bylo kdysi skličující nebo strašlivé, jste proměnili v činnost, která je složitá a poutavá.

Takto rosteme. Takto se zlepšujeme. Ať už se jedná o programování, tanec, běh nebo čtení: není to snadné a nikdy nebudete mít čas ani místo, když se budete učit.

Místo toho si užijte proces investování své energie do něčeho a užijte si bolest, která s tím souvisí. Začnete si všimnout, že už to nebudete popisovat jako „bolest“ - protože to, co bylo kdysi bolestivé, se stává symbolem toho, co bude dál: pocit osobního úspěchu a spokojenosti.

Jinými slovy, boj a potěšení začne znamenat jednu a totéž. Pamatujte na cyklus:

Jeden přístup k učení technických témat

Dovolte mi, abych vám něco řekl o procesu učení, který sleduji. Toto není všestranný styl učení, takže pokud pro vás něco jiného funguje, prosím, podělte se o něj v komentářích! V případě, že to nemůžete říct, jsem o těchto věcech blbeček :)

Jako příklad použijeme proces učení knihovny React.js.

Jaká je motivace k tomu?

První krok: Začnu vyhledáváním dokumentace společnosti React.js na Googlu a přečtím si něco o pozadí a motivaci knihovny.

Znalost „proč“ za jakýmkoli tématem je nesmírně užitečná při vytváření procesu učení. Odpovídá na otázky jako:

  • Jak se to liší od jiných řešení?
  • Jak je to pro mě užitečné?
  • Jaké problémy má toto řešení vyřešit?
  • Je to jen nový lesklý nástroj, který bude užitečný pouze po dobu několika měsíců, nebo zásadně změní způsob myšlení a kódování?

Čtení a pochopení základních pojmů

Zadruhé jsem četl všechny úvodní články nebo příklady uvedené v dokumentech.

Všimněte si, že se zatím nedotýkám žádného kódu. Čtení a potopení v základních pojmech přichází před praktickým experimentováním. Je to neuvěřitelně důležité, protože to vytváří základ pro zbytek mého učení.

I když bych mohl být schopen se slepě zbavit používání React.js, aniž bych se naučil základní pojmy, ale nakonec mě to dohoní, když narazím na chybu.

První kódování

Poté, co jsem strávil nějaký čas výše uvedenými kroky, začínám chápat, co se děje, nebo možná dokonce cítím, že to úplně zvládnu. Pak je čas skočit do nějakého kódu.

Obvykle se snažím sestavit něco opravdu malého pomocí jakéhokoli nového nástroje sledováním video tutoriálu (např. Na egghead.io) nebo písemného tutoriálu, než skočím do vlastních projektů.

Když uvíznete

… A pak jsem nevyhnutelně uvízl.

Čtení dokumentů vypadalo jako kousek koláče, ale ve skutečnosti je používám v praxi, takže si uvědomuji, že netuším, co se děje.

Tehdy začnu cítit ten obávaný pocit „prostě se vzdát“. Ale místo toho, abych se vzdal, když to bude těžké, připomněl jsem si, že bolest == zisk. Otočit se zpět by bylo zbabělé.

Tady je to, co místo toho dělám:

  1. Nejprve se zúžím a přijdu na to, na čem jsem vlastně přilepená - tj. Definuji problém. Pak přijdu s hypotézou o tom, co by podle mě mohlo být hlavní příčinou nebo příčinou problému. I když nemám tušení, jen uhádnu.
  2. Poté odstoupím od problému a počítače a udělám něco, co mě uvolní. To je neuvěřitelně těžké udělat, když jsem tak rozrušený problémem, na který jsem narazil, ale pustit se z problému funguje zázraky. (Všimli jste si někdy, jak skvělé nápady vždy udeří do sprchy?)
  3. Nyní se snažím ladit svou hypotézou. Dostanu se co nejdéle na svou hypotézu, aniž bych hledal odpovědi online - je tu něco krásného, ​​co se stane, když se pokusíte vyřešit problémy tím, že o nich nejprve sami opravdu hluboce přemýšlíte. I když se ubíráte špatnou cestou, skutečnost, že jste vynaložili úsilí, vás hodně naučí a na příště, kdy se do ní vrhnete, si mnohem lépe zapamatujete problémový prostor.
  4. Pokud moje hypotéza vede k odpovědi, hurá! Jsem hotov. Pokud ne, hledám Google dokumentaci, blogové příspěvky nebo příspěvky na přetečení zásobníku, které by mi mohly pomoci přiblížit se k odpovědi.
  5. Při čtení si zaznamenávám veškeré informace, které by mohly být užitečné.
  6. Stále žádné řešení? To je v pořádku. Určitě jsem se naučil něco cenného přečtením toho všeho, i když mi to přímo nepomohlo vyřešit problém. Kdo ví, kdy se tato znalost může příště hodit?
  7. V tuto chvíli, pokud se opravdu zaseknu, budu buď položit otázku na Stack Overflow, nebo se zeptám spolupracovníka nebo vývojáře, kterého znám.
  8. Jinak opláchnu a opakuji, dokud se nedostanu blíže ke konečnému řešení. Odpověď někdy přichází.

Tento proces občas trvá několik sekund a jindy to trvá hodiny (nebo dny). Ať tak či onak, samotný proces je neuvěřitelně prospěšný pro vaše dovednosti nastavené jako vývojář.

Zaseknutí se na bug vypadá jako klopýtání v tmavém tunelu, který hledá paprsek světla. Nakonec to zjistíte, ale po cestě objevíte tolik o tunelu - a díky znalosti kodexu je tu „tunel“ silný.

Ladění považujte za šanci prozkoumat spíše než odbočku z vašeho cíle a stává se mnohem zábavnější.

Opláchněte a opakujte

V tomto okamžiku v procesu učení jsem si postavil něco malého a vyřešil jsem několik malých překážek. Jak vidíte, byl to boj - očividně potřebuji další praxi s novým nástrojem.

Takže znovu se snažím něco postavit na vlastní pěst. Spíše než skočit přímo na velký vlastní projekt, budu hledat repo, na kterém bude moje aplikace založena.

Například pokud existuje online příklad CRUD todos (samozřejmě) používající React.js, možná budu stavět jiný typ aplikace CRUD. Prostě dost odlišný, abych mě věnoval zasnoubení, ale ne natolik odlišný, že mě odradí, když se něco pokazí.

Mistrovství

Mistrovství vyžaduje opakování, takže buduji další malé projekty, dokud nebudu mít pocit, že jsem dostal základní koncepty dolů.

Nakonec začnu být schopen spojit věci samostatně bez neustálého odkazování na dokumentaci nebo příklady. Teprve potom se konečně vydám na dobrodružství a postavím si něco od nuly.

V průběhu tohoto procesu se snažím, aby byl tento proces zábavný a poutavý. Neustále se tlačím, abych pracoval na věcech, které jsou těžší než to, co v tuto chvíli dokážu, ale nevyhazuji se do hloubky, abych byl znechuten a nikdy nedokončil.

Nakonec se ujistím, že odejdu, jakmile zjistím, že jsem příliš frustrovaný, abych si projekt užil.

Učení je zábava

S určitým úsilím a strukturou se učení programování ukázalo být neuvěřitelně zábavné. Zpočátku je to neuvěřitelně komplikované a podle mého názoru se proto tolika lidí bojí - ne proto, že je to „nuda“, ale proto, že je to „těžké“.

Po absolvování tohoto procesu učení několikrát se zpracování nových informací stane svalovou pamětí. Opravdu na to nemyslíš. Jen se naučíte jezdit na vlně bolesti a najít odměnu v radosti.

Stejně jako magie se stává „snazší“ se učit.

Jak řešíte nové předměty? Máte nějaké postřehy nebo průlomové okamžiky, které byste chtěli sdílet? Prosím komentář níže. Miluji slyšení nových nápadů :)