Learning to learn (more!)

Hello everyone!

In a previous post I talked about how I’ve started looking into new learning techniques to help me on my learning quest.  I’m currently teaching myself math and programming, and it’s been tough.  Progress comes in fits and starts, and I’ve been down several dead end paths.

  1. I tried a purely project based approach.  I sat down and thought of interesting projects I’d like to make and then jumped into coding to make them.  That was a good way to get a taste of what programming is about and to confirm that it’s something I’d like to do more of.  However, the projects I was dreaming up were waay out of the scope of my beginner’s ability.  I could have scoured github for similar projects and mashed together a frankenstein project that more-or-less did what I wanted it to do, but I didn’t think this would be a good way to actually learn the concepts.  I didn’t think this would help me to generalize skills and learn to do more interesting work in the long run.
  2. So I turned to classes.  I signed up for some advanced online classes through Udacity and EdX on machine learning, robots, and AI.  I started programming in February 2017 so it’s no wonder that by April I was NOT ready to take these types of classes.  I muddled through most of a Udacity course (they give you generous starter code) and got halfway through the EdX course before I hit a wall.  Again, I didn’t think I was really getting the concepts.  I could hack together a project that would spit out the right answer, but I didn’t really get what I was doing.
  3. So I took a step back.  I started taking linear algebra and then realized I needed to go back further, and started Calculus.

Learning Calculus

For the past two weeks, I’ve been teaching myself Calculus using the amazing resources from MIT OCW and Professor Paul Dawkins’ online notes.  I also bought a big book of calculus problems for additional practice.  The first week was pretty good.  I was chugging along and felt I was making good practice.

This past week has been less than great.  On Wednesday when I sat down to do practice problems, I got every single problem I tried before lunch wrong.  That means I spent four hours bashing away ineffectively at problems and feeling more frustrated and despondent as the minutes ticked by.  I had been unwilling to move on from the work I was doing (applications of derivatives) to new material (integrals) because I wanted to master the first thing first.  But it was clear this wasn’t working.  I moved on, and found a groove again with integrals.

But it was clear that I was missing something.  I wasn’t learning effectively.  Something just wasn’t clicking and I wasn’t sure what.  I had done calculus in HS and did well, I had done problems the day before and gotten them right.  Why suddenly did it feel like my brain was mud?

I was reading through Professor Dawkins’ post on how to study math and it was obvious to me that I was in category 2 of students who don’t do well in calculus.  I was studying for hours each day but not doing well on my problem sets.  It was clear to me that I had inefficient study habits and unless something changed, I was just going to end up wasting more time.

Around the same time, I stumbled across this gihub community of Open Source Computer Science learners.  And from there, I found the subreddit for the group, which led me finally to this QA mysteriously and intriguingly titled “looking for alternatives.”

And there, I found this amazing resource for a self-learning CS curriculum.  What I love about this list is that it has a bunch of helpful resources for laying the groundwork for your self learning endeavor.

I don’t plan to go through this whole curriculum, but I did start with the learning to learn course on coursera and it’s AMAZING.

There are some things I knew or practiced when I was in school, but this time around because I’m older and feeling pressure to see results faster, I haven’t been doing, to my own detriment.  Some of the key points:

On learning/chunking

  • Chunking is the idea of grouping together related ideas/concepts in order to improve learning.  If we are memorizing a song we chunk the tune and the lyrics which make it easier to remember both.
  • When we learn something new, we lay down new neural pathways for the material.  We need to strengthen those neural pathways in order to truly understand something.
  • To strengthen neural pathways, it’s better to learn the material over time.  If we study for one hour a day for five days instead of five hours in one day we’re more likely to remember the material and to understand it more deeply.
  • It’s best to work in small chunks of time.  For example, do 25 min of focused work, then take a break, then 25 min more etc.  It’s also helpful to review material right before bed as we commit things to long term memory while we sleep.
  • An easy technique to improve retention and learning is to try to write down the key points that you learned right after learning them (without notes/looking – which is what I’m trying to do right now!)

On procrastination

  • Focus on process instead of product to beat procrastination.  Instead of thinking, I’m going to finish those five homework problems think, I’m going to work on my homework for 25 min.
  • Every night before bed, write down the tasks you plan to accomplish the next day.  Don’t go too crazy!  5-6 tasks is more than enough.  Keep them focused on process.
  • Keep all this in a journal and take note of what worked, what didn’t, and how long things actually take.  Over time you’ll get a better feel for what you can accomplish in that time.
  • Plan your quitting time.  It’s important to pace yourself and it’s also not effective to just keep on studying past a certain point.  You won’t learn more or better this way.
  • Procrastination starts with a cue, try to change that cue.  For example, if your cue to procrastinate is hearing the ping of a new email, turn off your phone.  Removing the cue will make it easier to avoid procrastinating.
  • Reward yourself for completing tasks.  Rewards can be emotional (I draw a smiley face and write ‘yay’! on my paper when I finish something) or external.
  • Lastly, believe that you can change.  Belief that you can break the cycle of procrastination is important!

On memory

  • Humans have good spatial memory.  Use this to your advantage by building a memory palace
  • The weirder or funnier your mnemonic devices, the better you’ll be able to remember the information.
  • It might seem silly, but these devices can help you as you’re starting to form memories.  Over time, this will help strength those neural pathways!

Eep!  And that’s all I have for right now.  I’m sure I’m forgetting a lot.  :/  Will need to review tomorrow (as per the suggested way of learning!)

Changing my tactics

All of this is to say that I have a lot of bad habits to unlearn and new habits to form.  Instead of going the Scott Young route and trying to cram a whole bunch of learning (ie a semester of Calculus into one week), I’m going to spread things out a bit more.

Starting this week, I’m going to concurrently do my algorithms, calculus, and linear algebra coursework.  I plan to spend ~1 hour in the morning reviewing the material, and then dedicate the afternoon to practice problems or other study techniques (e.g. making flashcards, building my memory palace etc.  🙂

I’m not sure how this will go, but my rough goals are:

  • Finish all three courses by the end of August
  • Be comfortable with applications of Calculus and Linear Algebra
  • Be able to write the pseudocode for all the algorithms covered in the course
  • Be able to analyze running time of algorithms (which is an application of calculus, I believe, so….two in one!)

Having fun!

Lastly, while math and coding is fun, it’s important to give my brain a break and do something I enjoy!

I LOVE puzzles so another book I picked up is The Art and Craft of Problem Solving.  It’s aimed at HS students (and teachers) who are interested in the math olympiads.  While I’m definitely not in the right age group for that, it has a bunch of fun brain teaser math problems like the classic census taker problem.

A census-taker knocks on a door, and asks the woman inside 
how many children she has and how old they are. 
"I have three daughters, their ages are whole numbers, 
and the product of the ages is 36," says the mother. 

"That's not enough information," responds the census-taker. 
"I'd tell you the sum of their ages, but you 'd still be stumped." 
"I wish you 'd tell me something more." 
"Okay, my oldest daughter Annie likes dogs." 

What are the ages of the three daughters?




Building a practice of deliberate practice

I’ve been thinking a lot about how to get the most bang for my buck out of my time away from work.

Finding my path

It took me a little while to find my feet and my path to programming.

Z and I were chatting the other day about recognizing our emotional / anxiety / stress cycles and something she said made a lightbulb go off for me.

I realized that every time I feel frustrated or down, I decide to start a company and/or get an MBA.  It’s not because I’m frustrated by some big problem and have a brilliant idea of what to do about it.  It’s because I’m frustrated with myself and think that getting the stamp of approval of an prestigious MBA or saying f-you to my job/crappy manager/whatever by starting my own company will be the panacea to my ills.

I wanted to be respected.  I wanted to be successful.  And I wanted to fit in.

I have a tendency to do what my friends do (a terrible, terrible habit!) due to a desire to fit in and gain their respect.  I started out college as a math/bio major and then in my junior year switched to international relations since all my friends were history and poly sci majors.  Math/science was considered dull and very un-hip.

I didn’t really enjoy the work, but I found a niche that I did enjoy – theory of technology – and exploited that the best I could.  My thesis advisor senior year even asked me point blank: how is what you’re doing international relations?  And to be honest I didn’t have a great defense.

Later, even though I felt I was on the wrong path and was unhappy with my job, I felt paralyzed from making any changes.  In my early-mid 20s I still felt young enough to defer any difficult decisions to my older self (I hate my job now but by 35 I’ll be a wildly successful businesswoman.).

By the time I hit 29 the magical thinking stopped working.  29 to 35 isn’t a whole lot of time for me to start loving my work.  However, I was worried I was too old to make a change and figured I should stay the course and find a way to make peace with my job. But I just couldn’t.  I flip flopped between googling ‘am I too old to start over?’ and feeling young and exuberant and ready to take on the world.  And, of course, all the while I was anxiously scouring the internet for hope time kept right on ticking by.

So it’s no shocker, with all this brewing, that when I finally took the plunge to quit my job in Feb to focus on learning to program, within a week I was researching competitors and interviewing potential users to validate an idea I had for a company.

I was scared.  I was scared that I was suddenly on my own and that my friends would all think I was a failure.  Saying I was starting a company made sense to people.  Saying I was learning to program because I wanted to make art robots did not.

Luckily, I realized within a few weeks that I had no interest in being an entrepreneur.  And with that out of the way, I finally recognized the cycle for what it was – my fear and need for outside recognition – and was able to move on.

Learning to learn

Now that I had found my path and realized that I really did want to learn to program, I had to learn how to learn.

The next struggle was to tackle the feeling of being too late to the game.

I felt years behind where I wanted to be, and felt I needed to catch up.  I had a million ideas of projects to build, but zero skills whatsoever.  My first instinct was to dive in and start building projects, figuring that I would be driven to learn things in order to bring my ideas to life.

This kind of worked.  But with each project I realized a bit more how much I didn’t know.

So next came a recalibration period.  I learned what I didn’t know and how far I needed to go.  But still I felt anxious at my slow pace of progress.

Was I actually getting better?  I had no measuring stick.  No way of knowing.  And the more I realized I didn’t know, the harsher my inner critic became.

Deliberate practice

The second half of last week I felt pretty lost.  I had a great tutoring session last Tuesday.  I then spent Wednesday preparing for an interview for the Recurse Center on Thursday.  After my interview, I felt a little deflated.  I was off track with my Calculus and Algorithms classes, I had homework from my tutor, and I just felt all over the place.

I tried to get back into the next week’s Calculus lecture on Friday, but after I watched the videos I didn’t feel like I had truly understood the material.

I had planned on working over the weekend, but ended up taking both Saturday and Sunday completely off.  I spent time with my family, went to an art show, went for a nice long walk, and just relaxed.

I thought a lot about what the next month(s) might look like.  I heard on a podcast recently the quote by Bill Gates that people tend to overestimate what they can accomplish in one year and underestimate what they can accomplish in five.

I thought a lot about quitting.  And how the reason the above is likely true is because we give up when we don’t see results as quickly as we’d like.

I thought a lot about committing to change.  There’s a line in Dr. Tim Pychyl’s procrastination podcast that really hit home for me about changing habits being a lifelong pursuit and, if that sounds like too much to bother with, what is life if not the pursuit of bettering ourselves?

Finally, I thought about committing to learning.  I didn’t just want to watch all the Calculus videos on 2x speed and pump out exams a la Scott Young.  I wanted to deeply understand the material so that I could apply concepts from one area to problems in a completely different area.  For example, I was recently trying to analyze the running time of algorithms by taking the limits of the formulas, but I was getting funky answers.  I knew I needed to take limits (using my Calculus hooray!) but I couldn’t figure out how.  The form of the equations for big O notation was different from the form equations take in my Calculus class and I was having trouble applying the concepts.

So what’s the point of all my rambling?

All this is to say that I decided earlier this week to really commit to learning.  But, I wasn’t just going to do a lot of practice problems.  I didn’t think that was the best use of my time.  Instead, I spent a few hours researching learning strategies and formulating a real, achievable plan.

I also realized that mixing subjects just doesn’t work for me.  In other words, doing Calculus for a day and then switching to Algorithms for a day doesn’t work.  It was putting pressure on me to finish a week’s material in a day so I could feel that I had wrapped up a lesson before moving on.  This meant I wasn’t taking the time to really dive into concepts since I was more focused on the output (getting a good score on the quiz, getting the right answers from the programming project) instead of the process.

I listed out some general concepts I didn’t feel I had a good grasp on:

  • limits
  • general info about proofs (e.g. what is a proof by induction?)
  • proofs of trigonometric derivatives
  • rusty on some basic algebra/geometry like completing the square, solving trig equations
  • tree traversal
  • priority queues
  • etc etc etc

I plan to spend at least 3 hours per concept.  This includes writing out proofs, solving them by hand on my own, doing practice problems, and whatever else it would take to develop an instinct for the material.  I want to get to a place where things just ‘felt’ right or wrong.

Giving up on shortcuts

I listened this morning to this old Freakonomics episode about How to be great at anything.  It dives into the idea of deliberate practice, and the story about the psychologist – singer is such a great example.

I used to approach learning as a goal-oriented practice.  I wanted to learn concrete thing X which would then allow me to do concrete thing Y.  The goal was to be able to do Y.  Not to understand X.

Now I’m thinking of it more as a lifestyle.  I’m committing myself to “slow learning” and mastery, and also to the knowledge that I may never get ‘there.’  No more of this learn X in 30 days BS!

This is not to be equated with lackadaisical learning.  It’s not that I’m slowing down and only studying an hour or two a day.  If anything, I’m ramping up and getting more intense.  I’m reorienting my mindset and digging in for the long haul.