February 10th, 2010
Pain. Or, Why Learning to Code is like Learning Chinese.
If you really love something, you should want to know everything about it, right?
I am currently in an ongoing love affair with the internets. This, mixed with the liberal dispensing of tech-related kool-aid that goes on at MIT, has provided enough of an impetus for me to begin learning how to actually write beautiful code. The hack-job e-commerce sites I had developed and run and SEO-ed like mad before school just will not do. No, this is a completely different undertaking.
And guess what? Writing respectable code is REALLY EFFING HARD.
Genius conclusion, I know. I wanted to write this post though, not to announce to the world that hey-guess-what-coding-is-hard, but rather to analyze why I believe business-y people like myself tend to abandon ship at this point in the learning process.
I do not plan to quit. In fact, I am only *more* determined and believe that over the next 2 years I can learn enough Python to be dangerous. That said, long-term-progress undertakings are really easy to quit.
The reason I’m not quitting is because I’ve been through this before, when I decided in 2005 that I just had to learn Chinese. So I did what any normal/sane person would do and packed my bags and moved to Beijing. I was not leaving until I could speak Chinese. Period.
I wanted to learn Chinese because my ultimate plan was to get a PhD in Chinese-American relations and become a badass diplomat (translation: spy). I really believe that in order to understand something at the most intimate level you need to learn the entire chain – ie, in order for me to understand the inner workings of the Chinese government, I had to be able to understand how the interactions take place in their most basic form. Same thing with computers and the internet. In order to truly understand macro trends, it seems like one needs to be familiar with the most granular aspects of the trade.
I enrolled in a beginner (level 0) Chinese class here and off I went. What I did not realize is that any Chinese class worth a damn will spend at least the first month going over the fundamentals of the language. This means you don’t even learn how to say a single sentence until at least one month in – and keep in mind this is full-time studying. See the video below. Welcome to my entire life, September 2005. I’ll call this the “bopomofo” period. Day after day it was “bo po mo fo”, again! repeat! You learn sounds and tones and initials and finals and radicals and you leave each day not one bit more prepared to go and order lunch than you were the day before.
I was frustrated, and wanted to quit. Why was I wasting my time learning how to shape my mouth and twist my tounge just right and listen for the difference between first tone and fourth tone? Hello! I had dumplings to order, and fake-North-face vendors to haggle with!
With Chinese, you can’t just take what you know from English or Spanish or German or whatever and apply it. You have to start from scratch and completely re-conceptualize how you think about language and structures and communication fundamentally.
After three months, it started to make sense. If I wanted to actually become good and not just some dummy with a phrase book, I had to have a strong grasp of the fundamentals. I couldn’t go straight to learning phrases otherwise I would have to eventually unlearn all of my bad habits. So I sucked it up and went back and really really mastered all those mouth formations. And then I skipped two levels of class and ended my year having an all-in-Chinese throw-down with a military doctor in Tibet. Good times. (Though sadly now I’ve forgotten a good chunk of what I learned).
Seems to be the same in the world of developers. There are probably more than a few who have some knowledge here and there but don’t really have a clue how the entire system works together. These are the people with the phrase books who can say enough to sound impressive but in reality have a really shallow knowledge-base.
I am in the “bopomofo” period of learning to program, which is fine with me only because I know it’s going to be these micro-incremental teeny tiny baby steps for a while. But man, it sucks.
Now I understand why so many business students and other non-technical types who love technology make the attempt to learn how to code and then quit right around now. In non-technical professions there really is no equivalent to this particular type of learning. Spending an entire day to get the “name” field to work on a form for your website is easy to dismiss as a “non-optimal” use of time, especially when there’s someone you can hire who can do it in 5 minutes.
Though I think that is completely missing the point.
Knowing the “bopomofo” of the web world can be extremely helpful for non-technical people when interacting with a technical team. And once you make it through mastering the fundamentals, your ability to learn new concepts improves exponentially.
At least that’s what I’m hoping.
Pingback: Pain. Or, Why Learning to Code is like Learning Chinese. « Coding for begginers()
Pingback: links for 2010-04-29 « that dismal science()