terça-feira, 19 de agosto de 2014

Tips For Mastering A Programming Language Using Spaced Repetition

Tips For Mastering A Programming Language Using Spaced Repetition


  • By Mattan Griffel

  • August 19th, 2014

  • ProgrammingTechniquesTools

  • 0 Comments

Since initial conference of spaced exercise a few years back, I’ve used it for a far-reaching operation of things, from training people’s names to memorizing communication to augmenting my influence of books.


Today, I’ll share best practices that I’ve detected from regulating spaced exercise to learn and master a programming language.


Some good articles on this subject are already out there, including “Memorizing a Programming Language Using Spaced Repetition Software1” by Derek Sivers and “Janki Method2” by Jack Kinsella. But since you’re busy, I’ll fast promulgate some of a best practices that I’ve schooled along a way.


First things first.


What Is Spaced Repetition?


Spaced exercise is a complement for henceforth remembering something regulating a smallest series of repetitions necessary. The many renouned apparatus for this is Anki3, a giveaway desktop app that enables we to emanate and examination digital flashcards orderly by deck.


In short, whenever we wish to remember something, we would emanate a label in Anki and examination it regularly.


The cold partial about Anki is that, if we do it right, you’ll need to spend customarily about 5 to 10 mins a day reviewing your cards. If we do this, you’ll be means to remember approach some-more than we ever imagined, and you’ll be most some-more productive.


Let’s dive into a specifics.


How to Use Anki


For anything we wish to learn, emanate a flashcard with a front and a back. When we examination a card, Anki will uncover we a front, stealing a answer side.


Front side of Anki flashcard on coding4
Front side of flashcard (View vast version5)

Answer a doubt in your head, and afterwards exhibit a other side to see either we got it right.


Back side of Anki flashcard on coding6
Back side of flashcard (View vast version7)

Then, consider how simply we answered a question, and name one of 4 options: “again,” “hard,” “good” or “easy.” Based on your selection, Anki total out when to uncover we that label again.


And, yes, we can even use images in your cards.


By now, you’re vehement to get started. But before we do, let me share a few tips.


1. Break Down Your Knowledge Into The Smallest Possible Units


Though not apparent during first, there are good and bad ways to emanate cards. For example, here’s a bad approach to write a card:


  • Front

    “What does Ruby’s strip process do?”

  • Back

    “It trims spaces and vacant lines from a commencement and finish of a string.”

Why Is This bad?


First, we substantially won’t be means to remember how accurately we phrased a answer since it will have been so prolonged ago. So, any time we answer a card, you’ll have to decider either a approach you’ve explained it corresponds to what we wrote on a behind of a card.


Secondly, answers that are open-ended and that include of some-more than customarily one or dual disproportion take longer to answer. Even if it takes customarily a few additional seconds, those additional seconds supplement adult over time.


Thirdly, we wouldn’t be training how to request this concept. Definitions are not as unsentimental as transparent examples.


Instead, we would do this:


  • Front

    “What Ruby process would we use to format Jessica?”

  • Back
    strip

That’s most easier.


For a good beam to formatting knowledge, check out “20 Rules of Formulating Knowledge8” by Piotr Wozniak.


2. Use Cloze Deletion


Following a order above about Ruby methods was flattering easy until someone told me that category names, procedure names and constants start with an uppercase minute in Ruby. So, we combined a following card:


  • Front

    “In Ruby, that things start with an uppercase letter? (Hint: 3 things)”

  • Back

    “Class names, procedure names and constants”

The problem is that we had to remember 3 things, and a doubt was ambiguous, so it took a prolonged time to understand.


Then, we schooled about a underline of Anki called cloze deletion.


Instead of environment a front and behind of a card, we would use cloze deletion to set a retard of content and afterwards tell Anki that pieces of a content to mislay from a label and to exam we on. It looks something like this:


  • Text

    In Ruby, c1::class names, c2::module names and c3::constants start with c4::an uppercase letter..”

This generates 4 cards, any of that blanks out customarily one of those variables.


Front of cloze deletion card9
Front of cloze deletion label (View vast version10)
Back of cloze deletion card11
Back of cloze deletion label (View vast version12)

There’s even a bad-ass plugin, Image Occlusion13, to request cloze deletion to images.


3. Add A Card Only After You’ve Tested It


While Anki is an implausible training aid, it’s customarily one approach to keep information. At a finish of a day, we need to request what you’re learning. Remembering a judgment will be most easier if we have knowledge requesting it.


If we customarily examination about a programming judgment though perplexing it out for yourself, afterwards your bargain will substantially be incomplete. When we consider something is pardonable or obvious, like where to put a space or comma, I’ll customarily have a tough time remembering it when it matters. For example:


  • Front

    “In Ruby, emanate getter and setter methods for name and email.”

  • Back
    attr_accessor :name, :email

Without indeed perplexing this out, we competence forget either attr_accessor has a colon after it, either it accepts strings, where a commas go, etc.


A good side outcome of this is that if we brush adult on this any once in a while, you’ll infrequently find that a label is no longer accurate.


4. Save Cool Tricks And Best Practices


Always save tricks and best practices that we examination about, see in a video or notice in other people’s code.


I once saw someone do a cold pretence in a authority line to arrangement all of Ruby’s core methods in a interactive Ruby bombard (IRB). So, we done this card:


  • Front

    “How do we arrangement all of a core methods in a IRB?”

  • Back
    Kernel:: + (Tab) + (Tab)

Doing this guarantees that your formula will get improved over time. Even gifted developers should demeanour out for best practices and crafty techniques. It could meant a disproportion between fast remembering a name of that problematic authority and sport by StackOverflow for half an hour.


5. Practice Every Morning For About 10 Minutes


The genuine value comes from frequent, brief use sessions. If we take some-more than a few days off, afterwards your examination reserve will grow, and you’ll have difficulty recalling contribution that you’ve recently learned. (Don’t worry: Anki caps any rug during 60 cards, and we can adjust this number.)


I like to use my spaced exercise in a morning on a subway. As prolonged as we stay adult to date, it customarily takes around 5 to 10 mins to finish.


One final thing. we know that some of we will ask to see my deck. we rarely suggest formulating your own. Sure, we could download some decks out there to get started — such as Jack Kinsella’s web growth deck14 or Derek Sivers’ decks for Ruby15 (ZIP) and JavaScript16 (ZIP) — though your possess cards will be most some-more personal, formatted to how we learn and remember facts. You won’t learn or remember scarcely as good by regulating someone else’s deck.


I’m certain that my techniques will change over a subsequent few years, so I’ll try to keep this post adult to date. Have we used spaced exercise or any other techniques to master a programming language? Do we have any tips to share? Please do so in a comments below.


(al, ml, il)


Footnotes


  1. 1 http://sivers.org/srs

  2. 2 http://www.jackkinsella.ie/2011/12/05/janki-method.html

  3. 3 http://ankisrs.net/

  4. 4 http://www.smashingmagazine.com/wp-content/uploads/2014/08/01-flashcard-front-opt.jpg

  5. 5 http://www.smashingmagazine.com/wp-content/uploads/2014/08/01-flashcard-front-opt.jpg

  6. 6 http://www.smashingmagazine.com/wp-content/uploads/2014/08/02-flashcard-back-opt.jpg

  7. 7 http://www.smashingmagazine.com/wp-content/uploads/2014/08/02-flashcard-back-opt.jpg

  8. 8 http://www.supermemo.com/articles/20rules.htm

  9. 9 http://www.smashingmagazine.com/wp-content/uploads/2014/08/03-deletioncard-front-opt.jpg

  10. 10 http://www.smashingmagazine.com/wp-content/uploads/2014/08/03-deletioncard-front-opt.jpg

  11. 11 http://www.smashingmagazine.com/wp-content/uploads/2014/08/04-deletioncard-back-opt.jpg

  12. 12 http://www.smashingmagazine.com/wp-content/uploads/2014/08/04-deletioncard-back-opt.jpg

  13. 13 https://ankiweb.net/shared/info/282798835

  14. 14 http://www.oxbridgenotes.co.uk/other/web_development_flashcards

  15. 15 http://sivers.org/file/Ruby-sivers.apkg.zip

  16. 16 http://sivers.org/file/JavaScript-sivers.apkg.zip

↑ Back to topShare on Twitter



Tips For Mastering A Programming Language Using Spaced Repetition

Nenhum comentário:

Postar um comentário