theme selector

light blue screenshot grey screenshot navy screenshot dark green screenshot red and black screenshot
 

by Tony Chang
tony@ponderer.org

All opinions on this site are my own and do not represent those of my employer.

Creative Commons Attribution License

snow sports

Oct 24, 2006, 04:02am EDT

 

 

Most people I meet are either skiers or snowboarders (or neither). [1] I run into plenty of people who have tried both, but most only tried the second sport for a day or two before returning to the former, more familiar sport. It’s not that I think one is significantly harder to learn than the other one, it’s just that once you get good at, e.g., skiing, having to go through the somewhat painful effort of learning snowboarding is hard. You end up spending the day falling down the mountain when you know you could be having fun if you had just stuck with skiing. So the following day, you return to skis and flying down the mountain and around all the new snowboarders like you’ve been doing for the past few years.

I find that learning a new program language makes me feel like I’m falling down the mountain wishing I had skis again. If I had just stuck with C++, the first language that I really felt like I could fly with [2], I wouldn’t be looking up every class definition on the internet. It’s not that the new language is harder to learn or worse, it’s just filled with different idioms.

But in the end, I feel like learning these different idioms and paradigms ends up helping me design and write code in both languages. So on that note, back to learning about concurrency in Erlang.

(This is where I’m supposed to talk about how knowing how to ski and snowboard makes you better at both, but I don’t actually think that’s true.)

[1] I mean this in a linguistic mutually exclusive way, not a boolean both-can-be-true kind of way.

[2] Looking back, I realize how naive I was.

Brandon at Oct 24, 2006, 08:59am EDT

That analogy is good enough to steal and present in my own arguments as to why I learn new things that accomplish the same goals as old things I already know (or more precisely, why most people find that a strange behavior). I think the line “falling down the mountain when you know you could be having fun” goes pretty far toward explaining why a lot of my friends and cow-orkers (who I see as intelligent) don’t want to learn a new operating system or a new keyboard layout (always the evangelist on that one I am) or a new transmission or a new programming language. They see these things as just other means of getting to old ends to which they already know the way (something like the cliché “if it ain’t broke…”).

But I like it. While I can buy your explanation that learning a new language improves your general programming abilities, I think it fails to apply to the analogy because it is specific to programming (and similar). However, my general reason for choosing to put aside familiar skis for a foreign and scary snowboard is that I like the feeling in my brain (subjective, granted) of shattering such deeply entrenched paradigms. So far in my life, I have found no sense of accomplishment greater than that which comes with mastering a new means to an old end.


tony at Oct 24, 2006, 12:47pm EDT

That’s true. There’s the pleasure from simply learning something new.


DC at Oct 24, 2006, 11:50am EDT

Hmm…interesting. I’m in a similar situation where I’m very familiar with Java, but need to program in C++ for my job. I also sometimes find myself trying to remember that small amount of Perl that I know to do some simple text manipulation. I’ve actually felt the opposite of how you suggest I might - I constantly find myself forgetting whether I can do something a certain way in one language or if that is exclusive to the other. Things like that. Perhaps it would be different if I was switching between Java and Lisp or something else that is much more of a difference.