an experiment in rapid skill acquisition: teaching someone how to program in 5 days
DESCRIPTION
Presentation on how I helped a friend learn how to program in 5 days using techniques inspired by Tim Ferriss.TRANSCRIPT
An Experiment InRapid Skill Acquisition:
Teaching Someone How To Program in 5 days
3/24/2014
Tony Tranemail: [email protected]
twitter:@quicksorter
DiSSS Method● Deconstruction● Selection● Sequencing● Stakes
DiSSS Method● Deconstruction - breaking up your target skill into
smaller components.● Selection - 80/20 principle. Work on things that will
get you the most bang for your buck!● Sequencing - Order/Schedule what you learn in an
efficient way!● Stakes - putting something on the line!
DiSSS+ Method● Deconstruction● Selection● Sequencing● StakesI would like to add ...● Feedback - having someone correct you
helps out A LOT!
Patient Zero● Non-technical background● Product Manager● Been trying to learn how to program for 2+
years○ Attempted: Ruby, Python, Javascript○ Invested a lot of time/money on learning.○ Does not have strong grasp of languages.
■ Can not recall proper syntax for fundamentals
Deconstruction● Terminal
○ ls/cp/mv/rm/python● Variable assignment● Types● Helper functions● REPL● If/Else Statements● For-loops/While loops● Functions● PIP
● Exception Handling● Creating a script● Unit Testing● Using libraries● Writing libraries● Object Oriented
Programming● Generators● Concurrency● A LOT MORE...
Selection: (My Goals)● Teach students enough to be “deadly”:
○ Be able to recall fundamental concepts quickly○ Be able to write text processing scripts○ Be able to write simple libraries○ Be able to write a simple web service
● Teach students how to be resourceful○ Know where to look for answers○ Being comfortable with being uncomfortable
Sequencing:● Fundamentals first
○ Using the terminal○ types, variable assignments, functions, if/else, for
loops, built-in data structures○ Using helper functions
● More interesting things:○ Using libraries, writing libraries○ Writing scripts
StakesOn the 5th day…● Be able to write a script that reads in a file
and does some processing.● Be able to write a library.● Be able to write a simple Flask web service.
Day 1● 4 hour session● Student already knew:
○ How to use the terminal○ Familiarity with REPL○ Variable assignment
● What we went over:○ Types, helper functions, if/else statements, for-
loops, functions, data types
Day2-Day5● Homework to introduce new material
○ Review questions○ Coding Assignments○ DUE 11:59PM every night.
● Day2 - More Review● Day3 - Scripts/Writing libraries● Day4 - Using libraries/Writing libraries● Day5 - Web service
Success Factors● Consistency in practice
○ Practice everyday! No break days!● Doing homework!● Knowing your weaknesses and deficiencies
○ WORK HARD TO IMPROVE IN THESE AREAS!○ Having a coach can help immensely
■ help you identify weaknesses■ provide guidance for improvement
What I learned● I can make $$$ off of this!!!● Strategies for me to quickly acquire new
programming languages● Inspiration for me to try to learn new things
quickly! (not just programming)
Other Experiments● Boxing● French (Parlez-Vous Francais!?!)● Cooking● Quantitative Finance● ANY SUGGESTIONS!?!
Resources:● DiSSS
○ The Tim Ferriss Experiment○ 4 Hour Chef by Tim Ferriss
● Language (non-programming) Learning○ Fluent in 3 Months by Benny Lewis
● My Site (coming soon)○ www.5dayprogrammer.com
Lastly ...
If you could learn anything in 5 days, what would it be?
Let me know: @quicksorter