Upgrade to Pro — share decks privately, control downloads, hide ads and more …

How To Learn

A333869fa8934ab32efb4e78e7c1dff1?s=47 Toby Ho
October 19, 2015

How To Learn

Are you in the process of learning React? AngularJS? Node.js? Gulp? EcmaScript 6? ClojureScript? _Insert your tool, framework or programming language here_? Does the prospect of having to learn a "new way" of programming make you uncomfortable? Have you ever gone through a tutorial and still don't feel like you have a good grasp of the concepts? Do you think learning a new technology is a slow and painful process?

In the software profession, learning is an integral part of our job. Frameworks, languages and tools come and go so fast that in five years you are likely going to be working with a different set of tools. Although there are countless blog posts, tutorials and courses on the internet teaching you any topic you can imagine, that still doesn't mean learning is easy. Groundbreaking technologies break ground by changing the way we think about problems. The bigger the mental shift required, the steeper the learning curve.

In this presentation, I will describe a few techniques that will allow you to both learn faster and get a firmer grasp of concepts - with which you will be able to transfer knowledge more easily to new problem domains. Taken together, these techniques give you a loose framework for learning any new complex piece of technology, whether it be a new framework, library, platform, or programming language - using resources you can readily find on the internet.

A333869fa8934ab32efb4e78e7c1dff1?s=128

Toby Ho

October 19, 2015
Tweet

More Decks by Toby Ho

Other Decks in Programming

Transcript

  1. How To Learn

  2. How To Learn

  3. 0. Hello

  4. at an event…

  5. What is the Most difficult thing about learning to code?

    Question:
  6. “with so many different methods and ways, how do I

    choose…? Answer:
  7. “As a self-taught learner, I worry that there are gaps

    in my knowledge. ” Answer:
  8. “How deep down the rabbit hole do I have to

    go? How do I know when I can move on? Answer:
  9. “I would like to have a more end-to-end, streamlined learning

    experience.” Answer:
  10. None
  11. None
  12. https://www.flickr.com/photos/ jod999/4963201802/ https://www.flickr.com/photos/ archer10/5363283339/ https://www.flickr.com/photos/ keithmidson/11767843716/ https://www.flickr.com/photos/ koalameatpie/14277197585/ https://www.flickr.com/photos/raybouk/ 15169883571/

    https://www.flickr.com/photos/ ross_strachan/4380540146/in/ photolist-7F6pYf-ecMjN9-ecMjHN- ecFGgK-aJUTRt-8yzGYS-ecMjD3-
  13. Backbone Marionette Ember.js AngularJS Knockout.js Vue React Flux Redux GraphQL

    React Native Relay NativeScript PhoneGap Ionic Famous Meteor Mocha Sass LESS Stylus CoffeeScript EcmaScript 6 TypeScript Om ClojureScript Elm jQuery D3 Browserify Webpack Underscore Lodash Require.js MongoDB CouchDB ElasticSearch PostgreSQL Testem Karma Grunt Gulp Brunch Broccoli Bootstrap Foundation Falcor Node.js Bower npm Express Hapi Sails Loopback Koa Sublime Text WebStorm Vim MEAN Polymer Shadow DOM
  14. https://www.flickr.com/photos/dylanroscover/3450505729/

  15. https://www.flickr.com/photos/deapeajay/1928521563/

  16. https://www.flickr.com/photos/martinofranchi/2925760927/

  17. “I can’t get over the idea that the thing I

    am learning now will go out of date in just a few years.” Answer:
  18. None
  19. JavaScript Trend Data Based on JS Weekly

  20. JavaScript Trend Data Based on JS Weekly

  21. Backbone Marionette Ember.js AngularJS Knockout.js Vue React Flux Redux GraphQL

    React Native Relay NativeScript PhoneGap Ionic Famous Meteor Mocha Sass LESS Stylus CoffeeScript EcmaScript 6 TypeScript Om ClojureScript Elm jQuery D3 Browserify Webpack Underscore Lodash Require.js MongoDB CouchDB ElasticSearch PostgreSQL Testem Karma Grunt Gulp Brunch Broccoli Bootstrap Foundation Falcor Node.js Bower npm Express Hapi Sails Loopback Koa Sublime Text WebStorm Vim MEAN Polymer Shadow DOM
  22. None
  23. None
  24. “I’ve done Tree House, Codecademy, CodeSchool , etc, etc, but

    now what?” Answer:
  25. “Should I go to a coding boot camp like ?”

    Answer:
  26. None
  27. lydiashiningbrightly on Flickr

  28. How To Survive?

  29. 1. Worldview

  30. None
  31. None
  32. None
  33. World of Warcraft

  34. None
  35. • you start somewhere • the more you explore, the

    more you know • if you get stuck, you can explore elsewhere, but… • you can come back to it
  36. None
  37. What you know

  38. What you don’t know

  39. Be a Damn-Good Explorer

  40. Stop Relying On Schools

  41. Backbone Marionette Ember.js AngularJS Knockout.js Vue React Flux Redux GraphQL

    React Native Relay NativeScript PhoneGap Ionic Famous Meteor Mocha Sass LESS Stylus CoffeeScript EcmaScript 6 TypeScript Om ClojureScript Elm jQuery D3 Browserify Webpack Underscore Lodash Require.js MongoDB CouchDB ElasticSearch PostgreSQL Testem Karma Grunt Gulp Brunch Broccoli Bootstrap Foundation Falcor Node.js Bower npm Express Hapi Sails Loopback Koa Sublime Text WebStorm Vim MEAN Polymer Shadow DOM
  42. JavaScript Trend Data Based on JS Weekly

  43. https://www.flickr.com/photos/dericafox/4476665040

  44. Be a Damn-Good Explorer

  45. What Makes A Good Explorer?

  46. Gravitate towards the unknown

  47. Keep a question log

  48. Important: Get those questions answered

  49. “As a self-taught learner, I worry that there are gaps

    in my knowledge. ” Answer:
  50. 1. Write down 3-5 things that you are most anxious

    or uncomfortable. 2. For each item, ask yourself 1. If this were the only thing I accomplished today, would I be satisfied with my day? 2. Will moving this forward make all the other items unimportant or easier? The Tim Ferriss Method
  51. </Worldview>

  52. 2. Focus

  53. https://www.flickr.com/photos/dylanroscover/3450505729/

  54. Working Memory

  55. Backbone Marionette Ember.js AngularJS Knockout.js Vue React Flux Redux GraphQL

    React Native Relay NativeScript PhoneGap Ionic Famous Meteor Mocha Sass LESS Stylus CoffeeScript EcmaScript 6 TypeScript Om ClojureScript Elm jQuery D3 Browserify Webpack Underscore Lodash Require.js MongoDB CouchDB ElasticSearch PostgreSQL Testem Karma Grunt Gulp Brunch Broccoli Bootstrap Foundation Falcor Node.js Bower npm Express Hapi Sails Loopback Koa Sublime Text WebStorm Vim MEAN Polymer Shadow DOM
  56. None
  57. Isolate Learn one at a time

  58. Find the difficulty level that’s just right for you.

  59. Good: Learn React! Bad: Learn React, Flux, Redux, ES6, Babel,

    Gulp, and Webpack!
  60. Start From Scratch https://www.flickr.com/photos/elena_karelova/4493012230

  61. mkdir react-play subl index.html

  62. None
  63. None
  64. Find the difficulty level that’s just right for you.

  65. Optional: Don’t even use JSX

  66. First learn React, then learn flux.

  67. https://www.flickr.com/photos/dylanroscover/3450505729/

  68. </Focus>

  69. 3. Double Down on Evergreen Skills

  70. • touch typing • debugging / troubleshooting • source control

    • using the command line • asking questions online • object oriented programming • functional programming • refactoring • communication • task management
  71. • touch typing • debugging / troubleshooting • source control

    • using the command line • asking questions online • object oriented programming • functional programming • refactoring • communication • task management
  72. </Evergreen Skills>

  73. 4. Embrace Mistakes

  74. Why did you do that?

  75. “ Experienced devs make just as many mistakes as juniors

    , they just recover from them faster. - Kylie Stradley https://www.youtube.com/watch?v=bSbla50tqZE
  76. mello out.

  77. None
  78. “ Trying and failing to retrieve the answer is actually

    helpful to learning.
  79. None
  80. 10%

  81. None
  82. None
  83. None
  84. None
  85. OFF-ROADERS

  86. Bleeding Edge https://www.flickr.com/photos/kecko/3808425393/

  87. Easy tutorial?

  88. The Fail Something Rule If you make it through the

    whole tutorial/ lesson/course without failing something once, you fail.
  89. Do something Open-Ended

  90. Follow a tutorial; take detours if it fails the fail-once

    rule.
  91. Find the difficulty level that’s just right for you.

  92. Be a Damn-Good Explorer

  93. 5. Recovering From Mistakes

  94. Debugging and Troubleshooting

  95. Software bugs Mistakes

  96. Software bugs Mistakes Really painful

  97. debugschool.com

  98. debugschool.com

  99. Scientific Method

  100. “That’s impossible!

  101. “Go home computer, You are drunk!

  102. None
  103. None
  104. None
  105. there’s a simpler explanation…

  106. We make assumptions

  107. Planning

  108. The plan didn’t work If you are debugging:

  109. one of your assumptions are wrong

  110. None
  111. Don’t Trust Your Gut

  112. "The scientific method is a body of techniques for investigating

    phenomena, acquiring new knowledge, or correcting and integrating previous knowledge." - Wikipedia
  113. 1. Question (Why is the sky blue?) 2. Hypothesis (Maybe

    blue dye?) 3. Prediction (Fly a white cloth to the sky and it will turn blue) 4. Experiment (Actually do the above) 5. Analysis (What happened? Why?) 6. Repeat if necessary (Go back to 1) Scientific Method Recipe
  114. 1. Question (Why is the sky blue?)✔ 2. Hypothesis (Maybe

    blue dye?)✔ 3. Prediction (Fly a white cloth to the sky and it will turn blue)✔ 4. Experiment (Can’t be bothered)✘ 5. Self affirmation(Yeah, I am pretty smart)✔ What Humans Instinctually Do
  115. Don’t Skip Step 4!

  116. </Debugging>

  117. 6. How to Cheat: Juxtapositioning

  118. What is a Juxtaposition?

  119. Mashups

  120. Analogies

  121. https://www.flickr.com/photos/lori_greig/16204172947

  122. None
  123. Put it on repeat!

  124. Juxtaposition

  125. Model of Learning Why Don’t Students Like School

  126. Model of Learning Why Don’t Students Like School

  127. None
  128. Model of Learning Why Don’t Students Like School

  129. Juxtaposition

  130. None
  131. Learning a Portuguese Song

  132. Learning Rust with the help of Haskell

  133. “As a self-taught learner, I worry that there are gaps

    in my knowledge. ” Answer:
  134. How to Apply it?

  135. different explanations of the same concept

  136. different explanations of the same concept Different blog posts, different

    books, different talks different tutorials, different video course lessons.
  137. different exercises to demonstrate the same concept

  138. take a problem you know well, and model it in

    a program
  139. use your unique skills to teach others programming @sarahfrisk

  140. rewrite a program in a language you know

  141. rewrite a program in a language you know

  142. rewrite a app in a different style/framework/language

  143. write a different type of app in the same language

    phonegap, electron, node-webit
  144. same language (JS) but on a different *-side

  145. same language (JS) but on a different *-side

  146. Re-implement a library (concept) in a different language/framework

  147. Juxtapositioning via Negation

  148. write code without inheritance

  149. write code without objects

  150. write code without functions

  151. write code without if statements

  152. write code without jQuery

  153. write a web app without a backend

  154. </juxtapositioning>

  155. 8. Teach It Back

  156. None
  157. “You don't understand something unless you can teach it to

    other people. - Kyle Simpson
  158. The Protégé Effect: The best way to learn is to

    teach
  159. Lernen durch Lehren

  160. None
  161. Betty’s Brain http://www.teachableagents.org/research/bettysbrain.php

  162. There are real people you can teach to!

  163. Meetups

  164. Speak

  165. Mentor

  166. ATL

  167. Online

  168. IRC Chatrooms

  169. Tech404.io

  170. None
  171. Blog!

  172. Make Screencasts

  173. You Don’t Have To Be An Expert To Teach!

  174. The Curse Of Knowledge

  175. You could be a better teacher!

  176. </Teach-It-Back>

  177. 9. Epilogue

  178. World of Warcraft

  179. None
  180. The End