Learning to Learn [MakerSquare 3rd Cohort, 12/2/13]

27
Learning to Learn by @wayspurrchen (For Developers)

description

Slides for my 12/2/13 talk at MakerSquare on effective learning strategies and workflows reflecting my experience as a front-end developer, aimed at other developers in particular.

Transcript of Learning to Learn [MakerSquare 3rd Cohort, 12/2/13]

Page 1: Learning to Learn [MakerSquare 3rd Cohort, 12/2/13]

Learning to Learn

by @wayspurrchen

(For Developers)

Page 2: Learning to Learn [MakerSquare 3rd Cohort, 12/2/13]

or

How to Believe in Yourself, Develop Effective Learning Strategies, Find,

Categorize, and Prioritize Information, Develop Tool-Based Knowledge Pipelines,

Google Effectively, and Ultimately Stay Sane in a Rapidly-Evolving Industry While Maintaining a Healthy Work-Life Balance

(and a Bunch of Other Stuff)

Page 3: Learning to Learn [MakerSquare 3rd Cohort, 12/2/13]

Learning to learn?• We can always learn how to do new things or do old things better—including the

way we learn things

• Believing in your ability to learn and get smarter actually makes you better at learning and retaining information (entity vs incremental theory (Self-theories: Their Role in Motivation, Personality, and Development by Carol Dweck))

• Making your learning strategies more effective is like cheat codes to the rest of your life

• It’s learning all the way down

Page 4: Learning to Learn [MakerSquare 3rd Cohort, 12/2/13]

Your reasons for learning

• For the job you have• For the next job you’ll have• For your dream app• For your dream startup• For your dream automated house that has

slippers and a martini ready for you when you walk in the door

Page 5: Learning to Learn [MakerSquare 3rd Cohort, 12/2/13]

How do you learn to learn?

Page 6: Learning to Learn [MakerSquare 3rd Cohort, 12/2/13]

Knowledge / Wisdom Dichotomy

Knowledge is……knowing you should probably look into those “promise” things

…knowing that you shouldn’t edit on the live server via FTP…being able to say, “You really probably shouldn’t do that.”

Wisdom is……getting lost in callback hell callbacks to process a batch of asynchronous requests

…editing on the live server then accidentally uploading an old version of the website…being able to say, “Seriously, do not do that.”

http://www.smashingmagazine.com/2010/09/10/what-is-the-worst-design-or-programming-mistake-you-ve-ever-made/

Page 7: Learning to Learn [MakerSquare 3rd Cohort, 12/2/13]

How much knowledge there is on the Internet

• The internet (allegedly) carries ~1,826 petabytes per day[citation needed]

• Netflix uses 1 PB to store all their movies

• 1PB = 1024TB• 1PB = 1,048,576GB• 1PB = 1,533,917 ~700mb movies• 1PB = 268,435,456 ~4mb songs• 1PB = 1,125,900,000,000,000 1-

byte characters of text

Not all of it is useful. You don’t want to know all of it. How do you prioritize?

Page 8: Learning to Learn [MakerSquare 3rd Cohort, 12/2/13]

What you (might) need to know as a (front-end) developer

• CSS– cascade– inheritance– specification– box model– vendor-specific features

• X/HTML4/5• Some PHP• Browser idiosyncrasies• DOM structure• General browser

performance• Networking• Caching• Some sort of version control

system– The CLI/GUI to that VCS

• Some sort of version control system– The CLI/GUI to that VCS

• Communication skills• Professional representation

(for clients)• UX/UI/UE design knowledge• JavaScript

– MVC model– Prototypical inheritance– Aspect-oriented

programming– A thousand and one(+)

libraries• jQuery• AngularJS• Backbone• Modernizr…

• NodeJS• Social media API integration• DevTools familiarity• Command line/*nix

familiarity• Testing• Automation (grunt, minify,

etc.)• Documentation• Code readability• Team-based coding

experience• Error handling• Your (or your company’s)

preferred IDE• a lot more…

Page 9: Learning to Learn [MakerSquare 3rd Cohort, 12/2/13]

(My) Knowledge Workflow

Step OneExposure/Seeking

Step TwoOrganizing/Queuing

Step ThreeRetaining/Remembering

Page 10: Learning to Learn [MakerSquare 3rd Cohort, 12/2/13]

Knowledge Exposure/Seeking(for finding all that knowledge)

Page 11: Learning to Learn [MakerSquare 3rd Cohort, 12/2/13]

Gather your knowledgeAggregators and learning resources• http://www.codecademy.com/• http://www.coursera.org/• http://www.feedly.com/• http://www.khanacademy.org/• http://ocw.mit.edu/• http://www.stumbleupon.com/• http://www.twitter.com/• http://www.udemy.com/

Newsletters• http://html5weekly.com/• http://javascriptweekly.com/• http://nodeweekly.com/• http://rubyweekly.com/

• http://reddit.com/– http://www.reddit.com/r/browsers– http://www.reddit.com/r/coding– http://www.reddit.com/r/compsci– http://www.reddit.com/r/cscareerquestions– http://www.reddit.com/r/css– http://www.reddit.com/r/frontend (I run this one!)– http://www.reddit.com/r/html5– http://www.reddit.com/r/javascript– http://www.reddit.com/r/learnprogramming– http://www.reddit.com/r/jquery– http://www.reddit.com/r/ruby– http://www.reddit.com/r/rails– http://www.reddit.com/r/programming– http://www.reddit.com/r/startups– http://www.reddit.com/r/userexperience– http://www.reddit.com/r/web_design– http://www.reddit.com/r/webdev

Useful Sites (front-end)http://www.reddit.com/r/Frontend/wiki/index

Page 12: Learning to Learn [MakerSquare 3rd Cohort, 12/2/13]

Knowledge Organizing/Queuing(for stuff you want to actually read later)

Pocket is my favorite for this:http://getpocket.com/

(similar: Instapaper, Evernote Web Clipper)

Page 13: Learning to Learn [MakerSquare 3rd Cohort, 12/2/13]

Knowledge Retaining/Remembering(for those “I’ve swear I’ve read this somewhere…” moments)

And Kippt is my favorite for this:http://kippt.com/

Pocket tries to do Kippt’s job, but Kippt does it way better.(Similar: Evernote?)

Page 14: Learning to Learn [MakerSquare 3rd Cohort, 12/2/13]

Know your tools

• Know their ins and outs• Understand their strengths and weaknesses• Where possible, connect them (see IFTTT and

similar apps)• Supplement your knowledge consumption

pipeline with generative and tracking tools: Evernote, Bullet Journal

Page 15: Learning to Learn [MakerSquare 3rd Cohort, 12/2/13]

Learn Smart, Learn Hard:Setting Goals and Priorities

• Learning effectively also means learning what you need to learn.

• What is YOUR ultimate goal? (Think back to your reasons for learning in the first place)

• What do you need to know to fulfill your ultimate goal?• What do you not know that you need to know to fulfill

your goal?• What can you guess that you need to know to fulfill

your goal?• How many steps are in the way?

Page 16: Learning to Learn [MakerSquare 3rd Cohort, 12/2/13]

Pyramid of Knowledge

Awesome Slippers and Martini Robot House

Basic programming skill (JavaScript? Ruby? C++? ..Brainfuck?)

• What do you know?• Is it applicable to your

goal?• Where on the pyramid

can you put it?• What’s the next step

(both directions)?• What’s probably in the

middle?• What’s the hardest?• What’s the easiest?• Do you need to make a

new, simpler pyramid?

Page 17: Learning to Learn [MakerSquare 3rd Cohort, 12/2/13]

Pyramid of KnowledgeMore like:

Basic programming skill (JavaScript? Ruby? C++? ..Brainfuck?)

But that’s OK. If it were that easy, it wouldn’t be fun.

Awesome Slippers and Martini Robot House

Page 18: Learning to Learn [MakerSquare 3rd Cohort, 12/2/13]

Too much to learn, too little time: what first?

The short answer: “foundational skills”.

Similar to the bottom level of the pyramid (or the foundations of a house), foundational skills are what you build the rest of your skills on top of.

These are skills that will give you either

• A significant boost to the rest of your skills• Or improve your life for the rest of, or for a significant portion of your life

Learning effectively is an example of a foundational skill. (These are those “cheat codes” I mentioned.)

Page 19: Learning to Learn [MakerSquare 3rd Cohort, 12/2/13]

Foundational SkillsExamples of foundational skills:• Your favorite language, inside and out, if you plan to work in that language

for a long time• Programming paradigms and best practices• Negotiation and professional presentation• Empathy, listening, and communication skills• Effective learning• Mental and physical well-being (meditation, exercise, good nutrition, etc.)• Self-control and discipline

Foundational skills are skills that learning now will have an effect on all of your future productivity or output.

Page 20: Learning to Learn [MakerSquare 3rd Cohort, 12/2/13]

Knowledge Evaluation:How do I decide this is actually worth knowing?

Ask “connecting” questions:• Is this immediately and obviously useful to me?• If not, could I use it for anything in the future?• Is it possible that this is useful in ways that I can’t currently perceive?• What would I have to learn to understand whether or not this is relevant and useful?• If I follow this down a rabbit hole, does it seem like this will actually get me what I need?• Is it worth my time to follow that rabbit hole or should I approach it a different way?• If this is actually completely irrelevant to what I’m trying to do, is it interesting enough that I

want to learn about it anyway?• Should I discard this information or archive it?

Remember—knowledge has YAGNI (You Aren’t Gonna Need It), too!

Page 21: Learning to Learn [MakerSquare 3rd Cohort, 12/2/13]

Some tips on specific seeking (solving that really specific problem)

• Google “stackoverflow <keyword>” everything first• Go broad before narrow• Develop Google fu--keep in mind the kind of the people who

have come before you looking to solve the same problems (technical vs. non-technical wording)

• Search for the “expert” resources: there’s almost always an exact name for the type of thing you’re looking to learn about

Page 22: Learning to Learn [MakerSquare 3rd Cohort, 12/2/13]

Retaining and Relearning

There’s also a DRY in knowledge—but it’s DO repeat yourself!

• Multiple sources on the same topic often take different approaches and focus on different nuances

• Feel like you know something pat? Re-read just in case and strengthen your neural network

Page 23: Learning to Learn [MakerSquare 3rd Cohort, 12/2/13]

Learn by Teaching

“If you can't explain it simply, you don't understand it well enough.”- Albert Einstein

aka “The Mom Test”

• If you can describe Twitter’s RESTful API to your (assumedly non-technical) mom, then you probably understand how it works

• If she still doesn’t get it, it’s good practice for dealing with non-technical clients, upper management, etc.

• Programmers who can explain things quickly and concisely to non-programmers are very valuable

Page 24: Learning to Learn [MakerSquare 3rd Cohort, 12/2/13]

Seriously, Know Your Tools!aka the “ARE YOU A WIZARD” Test

If you can make your friends say that, you pass the test (bonus points if you impress coworkers). If you use tools often, learn their capacities and limitations, including their keyboard shortcuts.

Page 25: Learning to Learn [MakerSquare 3rd Cohort, 12/2/13]

And always keep an eye out for better, more efficient tools.

Page 26: Learning to Learn [MakerSquare 3rd Cohort, 12/2/13]

Don’t forget: learning is doing.

Ultimately, you can read as much as you want but you’ll never really learn unless you do the work.

With that in mind:• Do the work• Commit to completion (and version control!)• It’s OK to not finish something (so long as you figure out why

you didn’t finish it)• Break things and embrace mistakes (just not on the live

server)• Don’t hurt yourself—it’s a marathon, not a race