Todd Wolfson

Software Engineer

December 06, 2015

A long while ago, a professor enlightened my class with his theory on the 3 stages of learning. At that point and since then, it has held true time and time again. Without further ado, here are the stages:

  1. Duplication - Ability to take content and repeat it back
  2. Comprehension - Ability to take content, understand it, and state it in another way
  3. Improvisation - Ability to take content and create new conclusions from it


Learning Chemistry

For the example where this originated, here are some examples of each stage:

  1. Duplication
    • Reading content from a textbook and reciting it back
    • Taking notes in class and repeating them back
  2. Comprehension
    • Taking notes in class and rephrasing them in your own words
    • Asking deeper questions about content
  3. Improvisation
    • Deriving new formulas
    • Creating new conclusions

Learning Math

Learning Math is very similar to learning Chemistry. Some more concrete examples of improvisation would be:

  • Breaking down proofs into smaller sections for easier reuse
  • Creating a new proof based off the combination of other proofs

Learning Programming

For learning Programming, some examples of each stage would be:

  1. Duplication
    • Taking an existing program and rewriting it line for line
    • Writing a program that follows a specification
  2. Comprehension
    • Taking an existing program and swapping variable values
    • Explaining why choices were made in a specification
  3. Improvisation
    • Rewriting a program but maintaining the same results
      • For example, moving from iterative to recursive
    • Create a new specification for a problem

Top articles

Lessons of a startup engineer

Lessons from being a 3x first engineer, former Uber engineer, and working at even more startups

Develop faster

Removing the tedium from creating, developing, and publishing repos.

Sexy bash prompt

A bash prompt with colors, git statuses, and git branches.