HOWTO: Learn Stuff Efficiently

I enjoy learning new skills and technologies on my own, and it occurs to me that there isn’t a lot written on the subject.

I’ve been developing this approach for about 20 years and here’s a brief summary of what I find works for me.  It may not work for you, and that’s OK.  But give this a try, refine your own technique, and share what works!

  1. Choose a topic/technology outside your comfort zone.  This is self-evident; you can’t expect to learn anything new if you’re working in a sandbox you’ve already mastered.
  2. Make time for yourself.  Lots of it.  You can’t expect to dig into a topic deeply if you’re distracted by email, phones, tax deadlines, bills, dinner, family, friends, and bathing.  Seriously, these things have to take a backseat, you’ll come across as a recluse, and people will hate you.  Accept it.
  3. Set a goal.  It might be as simple as a “Hello World” or something more complex.  However, it should be something you think you can attain and which will make you happy to see completed.  So, choose something reasonable and within reach.
  4. Code until you get stuck.  Keep pushing small, obtainable goals until you get to a point where you are baffled or sleepy.  This is the time to take a nap.
  5. Before you take a nap, read something.  Your brain runs threads in the background while you’re sleeping.  Don’t waste that CPU power thinking about Angelina Jolie.  Instead, search for guidance on the thing that’s got you stuck (either with a colleague or online), or read (or re-read) a chapter in a coding book that’s relevant.
  6. Sleep until you wake up.  This might be 3 hours, 6 hours or 8 hours; your brain will sleep for as long as it needs to process the information you’re trying to absorb.  NOTE: At this point the thought of having a regular sleep schedule should make you giggle.  You should sleep and code when you feel like it, which likely will not be on any particular schedule.
  7. As you fall asleep, meditate on the questions you’re trying to answer.  The intense concentration available to you as you are nearing sleep will enable you to define and isolate the problems at hand, and this will provide a kind of “normalized grist” for your brain as it prepares to do your heavy lifting for you.
  8. When you wake up, you will have some answers.  You may not have all the answers yet, but you should have some fresh insights that will enable you to blast past your last impasse (wow).  This should give you some encouragement and allow you to repeat the cycle (3-8) again.

I’m presently employing this technique to learn Objective C and Cocoa Touch for the iPhone, and it’s working great.  This is the sort of thing that society will not allow you to do continuously (unless you’ve evolved a significant number of support mechanisms) but you should be able to get away with it at least some of the time.  It delivers great results for me.

And for those of you to whom I owe emails, bear with me; I will get back to you shortly.

The Mashup Is Dead

Today I want to rant about a few things I hate. They include:

  • The Word “Mashup”
  • Proclamations of the form: “A Thing is Dead; Long Live that Thing”
  • People Who Insist on Continuing to Use the Word Mashup
  • The Term “Web 2.0”

I know it’s heresy. Mashups and Web 2.0 are what’s hot, right? I myself am considered to be a “mashup creator” working with Web 2.0 concepts.

But that era is behind us. The term “Mashup” made sense when coders were actually lifting data from places it was hard to lift from and putting it into contexts that were hard to access. This, my friends, is no longer the state of affairs on the Internet.

Today, we are working with a world of data that wants to be free and is published via countless, well documented API’s. In the cases where API’s are still not available (or whorishly published in hopes of becoming universally adopted), advanced tools and protocols are available to automate what used to be hard.

We must remember that the word “mashup” hails back to music, originally; a talented music editor might string together pieces of previously recorded music to create something new. This was an artform in itself, and implied a kind of subversion. A repurposing of content, often done without the permission or knowledge of the original creator.

Well, the days of this kind of thing on the Internet are, thanks to everybody’s efforts to open things up, largely over. In a world where open source software is widely accepted, where it makes sense for companies like Facebook, Google, Yahoo, Twitter, Amazon (and gee, every other damn company out there) to publish API’s that encourage their data to be woven into the fabric of the net, there is no need for the coy sense of subversion that comes from the word “Mashup.”

What we’ve got now, folks, is DATA! Great flowing rivers of it! Software that helps us use it! Ruby on Rails, Asterisk, MySQL, PGSQL, Apache, Freeswitch, Flex! Where it’s not open source, it’s at least free! Everything has an API and the things that don’t are falling away.

The next person that says to me with a straight face that they “make mashups” is going to get sucker-punched. The word has lost its meaning, so let’s move on.

That said, explaining to a layperson what it is we “creative coders” do, sometimes you, well, have to resort to saying, “I make mashups.” But do us all a favor, try to explain what that really means today. Let’s move to a world where we can think about data, about tools (which is really just code-as-data), and imagining what we can do with it all.

Mashup was a good word for perhaps 2003-2007, but it implies limitations and barriers that simply no longer exist. We can do better.

What would YOU call the innovations that are possible with all the data and tools we have today?