

Hustle (how to learn new stuff) - ihumanable
http://ihumanable.com/blog/2010/01/hustle/

======
mrshoe
I lived in Russia for two years. When I first moved there (I was 19) I went
through the painful experience of being immersed in a foreign language. For a
couple of months I couldn't express myself clearly, if at all. I couldn't put
more than a couple of words together. I only understood about half of what
people were saying to me. I couldn't even ask the bus driver to stop so I
could get off at my stop.

After that short period, though, I became very comfortable communicating in
Russian. I realized that there's probably no way to learn a language without
going through that painful period. I think the same is true of programming
languages. You're going to have to stumble through a couple thousand lines of
horribly written code before you become fluent. You might as well start
writing those now and get it over with.

I just started in a new roller hockey league this week. I still can't skate
backwards well. I know that if I want to learn I'm going to have to fall on my
butt a bunch of times. As long as I stay cautious and don't allow myself to
fall, I'll probably never learn.

~~~
rbranson
This is at least partly why it's hard for older people to learn new things,
while 5 year olds seem to pick up things in days. As you age, you become more
cautious, a natural progression caused by continuous exposure to pain and
suffering. It gets the point of irrationality. What's the risk in trying out a
new language? In reality, there really is none, you've just got to fight past
it.

~~~
dgallagher
You're absolutely right. As I see it, the complacency you describe is the
number one reason why many people in modern societies never emerge beyond
being "average". They lose the drive to learn new things, challenge
themselves, and continuously improve. Once becoming established it's very easy
to sit back, relax, and coast along through life.

A motto I try to live by is this: If you have a choice between doing an easy
thing and a hard thing, do the hard thing if you want to be great.

~~~
imp
That's a grahamism also (<http://www.paulgraham.com/wealth.html#f9n>):

"This is a good plan for life in general. If you have two choices, choose the
harder. If you're trying to decide whether to go out running or sit home and
watch TV, go running. Probably the reason this trick works so well is that
when you have two choices and one is harder, the only reason you're even
considering the other is laziness. You know in the back of your mind what's
the right thing to do, and this trick merely forces you to acknowledge it."

------
gfodor
I'm going to take a contrary viewpoint here, but please don't take offense. I
see what you're getting at.

What I've learned is that anyone can learn Rails, or Git, or whatever
buzzwordy thing is the latest language, tool, or framework. It's easy to learn
these things because they are new, hip, and promise productivity increases. I
thik it's good to try new things, but things like this aren't that hard to
try, if you're really into programming. They have pretty shallow learning
curves, and give pretty instant gratification: the double-whammy of what makes
a good hacker flavor-of-the-month.

Learning these types of things is fun, easy, and good. You never know what the
next big thing might be. And, you probably will come across a few gems you
keep with you for many years. You also probably pass through a lot of crap.

It's much harder to learn things that take time and patience, that don't
provide the instant gratification of learning a new framework or whiz bang
tool chain.

You need to take the long view. Programming languages are a means of
expression, they don't make you write better code.

What makes you write better code is the hard stuff. The stuff you lose if you
don't practice. The stuff nobody has the time to sit down and _really learn_.
Linear algebra, statistics, physics, machine learning, machine vision, game
theory, logic, information retrieval, network theory, the list goes on. It's
much easier to pick up a "Foobar in Action" book that has no scary math
symbols or floating point values that can get you from 0 to "Hello World" in a
few hours.

But, you will always be just another code monkey that way, following the
leaders. I'd rather have totally shitty, ugly code written in BASIC that
expressed some novel algorithm that nobody else had than yet another CRUD
application written in Clojure in the cloud with jQuery and WebSockets.

Put down the Pragmatic Programmers books every once in a while, turn off your
computer, and start reading about the basics. Even if you've learned it
before, it always helps to go back. You never know when that thing you slept
through sophomore year of college will turn out to be the right approach for a
problem you're working on.

------
dgallagher
I've found that I have to go through periods of doing (hustling), and then
periods of research/learning when stuck, going back to doing once unstuck. The
cycle repeats itself.

Transitioning between the two can be difficult. It's like switching between a
"job" and being in academia. They're similar but two totally different worlds.
One gives you hands-on experience, and the other book smarts. Separately
neither paints a full picture, but combined they certainly do.

~~~
ihumanable
Absolutely correct. I leapt into rails programming and muddled through for a
while, but now I'm taking my foot off the accelerator for a while and reading
Agile Web Development in Rails.

------
j_baker
"Anyone who has never made a mistake has never tried anything new."

-Albert Einstein

