Coding & learning with context

Hello, world!

I’m incredibly proud of this next project.  It captures perfectly the goal of Zeynep and my quitting quitting project.

I started taking CS50x in December of 2015.  At the time, I thought I could blow through the class in a month if I plugged away at it for 10 hours a day.  I had big plans of taking additional math and CS classes after CS50x and possibly going back to school for a master’s in CS.  What, a master’s in CS?!?  But you majored in Art and International Relations!  Yes, dear reader.  I had the exact same thought.

So then, why a master’s in CS?  I wanted a career change.  I hated my job (project management) and I wanted to make things.  I had taken a Udacity Intro to Python course back in 2011 and loved it.  But I didn’t really know where to go from there.  I ended up writing a bunch of Google Apps Scripts since they were easy to get started with, and useful for my job.  But I wasn’t really learning much else.  I felt I had hit a wall and wanted to be back in a school-like environment.

I spent HOURS reading through reddit and quora blogs about going back for a second bachelor’s in CS, or going to a coding bootcamp.  The consensus seemed to be a second bachelor’s was a waste of money and a bootcamp wasn’t rigorous enough.  Instead, most people suggested taking the core classes on your own and applying directly for a master’s program.  So that’s what I was doing, or so I thought.

My biggest problem, at least in the last few years, has been split attention.  There are SO MANY projects I want to do and not nearly enough time to do them all.  Instead of picking one things and diving into it, I would start down one path, get frustrated that I wasn’t making progress fast enough, and then switch to something else.  The end result was that I got nothing done.

The problem with this approach was that I was a beginner at a lot of the things I wanted to do.  It’s like wanting to play Beethoven’s Symphony #5 on the piano, but not knowing how to play the piano.  You have two options.

  1. Watch a bunch of YouTube tutorials of people playing Symphony #5 and copy their finger movements exactly.  Eventually, you’ll be able to play that one piano piece, but nothing else.  You won’t have really learned to play the piano.  HOWEVER, with every note you hit you could hear Symphony #5 somewhere in there, struggling to get out which kept up your enthusiasm.  Also, you will have learned a LOT about piano playing (though you may not realize it) which will serve as a good foundation to learn to play the piano later.
  2. Start with the basics (reading musical notes, practicing scales) and work your way up to playing Symphony #5.  You’ll actually learn to play the piano, but during the learning process you won’t be playing Symphony #5.  That means you’ll need to keep reminding yourself what all that boring scale playing is leading to.  However, you’ve built a strong foundation about music playing that you can apply beyond Symphony #5.

That’s what it was like for me with programming.  The Udacity course was like starting with method #2, but stopping with scales.  After the course was done, I had no idea how to apply anything I learned to the projects I wanted to create.  I didn’t know how to go from playing scales to playing a real piece of music.

So I shifted to method #1.  I dove into a bunch of Apps Scripts projects, frankenstein-ing programs together using other people’s code, tutorials, and the Apps Scripts documentation.  I didn’t really get half the errors I was seeing.  I didn’t really understand why things worked when they did, but I could generally get things working.

However, this was deeply unsatisfying.  Which is why I came to CS50.  I wanted to be back in a school-like environment.  To learn things the “right way.”

Taking CS50 after having spent two years frankenstein-ing code was GREAT.  Going with method #1 gave me context so that when I saw lessons in CS50, I could think “Oooooohhh, THAT’S why that works” instead of thinking, “Ok, I get the theory now how do I apply it?”  I had already applied it and now I was backing into the theory.

But back to December 2014.  Taking CS50 was great, but it was hard.  I was itching to get started on projects and the thought of having to take 11 weeks of courses was overwhelming.  I got frustrated that I wasn’t making progress fast enough and quit.

This is totally counterintuitive and I know it, but I still do it all the time.  I think it’s going to take too long to learn something, so I quit.  But then 11 weeks later I’m sitting there thinking, why didn’t I just invest in this 11 weeks ago?  The problem?  Learning scales is boooring and I wanted to play the Symphony NOW!

Anyway, I quit the course in Jan 2015.  There was the issue that I wasn’t progressing fast enough coupled with my life getting busy.  I was also taking a sci-fi writing course at the time which I really threw myself into.  It was my 10 hour a day project.  On top of that, I was applying to new jobs.  I started a new job in April 2015 and just got distracted getting up to speed and working hard at the new gig.

But the new job was still in project management so, inevitably, I begin to feel the itch.  I wanted to *make* things.  So I picked the course back up Dec 2016 and really got to it in Feb/March 2017.  I finished the course last week (April 2017) and it was HARD.

I admit there were a few additional stop and starts in there, though not quite as long, and I skipped two problem sets, but I got through it!

My next post is about my final project!  Read on here…

3 thoughts on “Coding & learning with context”

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s