Skip to main content

The Problem With "Everyone Should Learn How To Code"

Every week another article comes out frantically telling us that everyone should learn to code, that coding is an irreplaceable skill in the 21st century skill set, that you can supercharge your career if you just spent 20 minutes a day for 21 days to learn how to code, or some similar nonsense. Even Obama has joined in, stating on a number of occasions that "Everybody's gotta learn how to code." While the intent is often good, I think these sentiments are dangerous for a number of reasons, but mostly because they cheapen coding and show a complete lack of understanding about what it is.

The problem with "everyone should learn how to code, just like everyone should learn how to read and learn how to do arithmetic" is that fundamentally, coding is not arithmetic. It's not even like arithmetic. It's not like reading. And by comparing coding to the fundamental skills that form the lowest possible foundational step of intellectual pursuits (e.g., you can't study comparative literature if you've never learned to read, and you can't be a mathematician if you don't understand numbers), we perpetuate the incorrect vision of coding that most non-coders have. Which is, to put it bluntly, that it's a specialized form of typing.

Nobody in their right mind thinks that taking a semester of calculus makes you a mathematician. Nobody would ever say that 20 hours of violin lessons makes you a violinist. Yet we continue to perpetuate the belief that coding is just "something that you gotta learn", and something that just a little bit of work will allow you to learn and become proficient in.

No. Not everyone needs to learn how to code. Nor is coding something that you can learn just by spending a scant bit of time.

Do I think everyone should learn what coding is about? Yeah, absolutely. Learning about coding changes the way you think in a positive way. It changes how you approach problems and how you see the world. It changes your mental patterns. Learning about algorithms and complexity theory makes you a more rigorous thinker, and this extends into all aspects of your life. Learning about the way that software engineers approach problems can help you approach problems in any sphere of life in a more logical and productive way.

But "coding" is not the same as "syntax", and this is where the disconnect often occurs.

For instance, in Korea, the general view of programming is that it's slightly above data entry, but management doesn't quite understand (nor care) why. That is, the managers decide the requirements, and they throw it over the wall to the programmers, who, having been relieved of the difficult part (i.e., determining the requirements), simply have to type it in. This is one of the reasons why there is so little respect for engineers in Korea.

The reality could not be more different. Coding is more akin to art. If I were to tell you I wanted to see a painting of a sunset behind a mountainscape, there is no one set path to follow in order to produce the end result. Similarly, given a set of requirements for the features that you desire in a product, coding is the art and science of turning those requirements into reality. There are literally an infinite number of ways that one could do so, and computer science (it's called "science" for a reason) is the field of study devoted (in part) to how to achieve this in the best way.

When Obama participated in the Hour of Code recently (which is awesome, don't get me wrong), he apparently actually spent about an hour to produce one measly line of code. That code?

moveForward(100);

Not very impressive. Does Obama "know how to code" now? Um, no. But he claims it's "not complicated"!, explaining it as follows:

"The basic concept behind coding is that you take zeros and ones, you take two numbers, yes or no, and those can be translated into electrical messages that then run through the computer…. So all it’s doing is it’s saying yes or no over and over again, and the computer’s powerful enough that it can read a really long set of instructions really quickly."

Yeah ... um ... that was a good college try. So now that you know how to code, Mr. President, can you explain to the class what actually happens when a user inputs her personal info and presses enter on healthcare.gov?

Look, coding is fundamental to the future. There is no modern hardware without software, and there is no shortage of stuff for software engineers to do. The world runs on software. But the danger of "everyone needs to learn to code" is in trivializing and misunderstanding what coding actually is. Becoming a competent software engineer is difficult work. Becoming an amazing software engineer is rare enough that there's an extreme shortage of them.

If "everyone needs to learn how to code" gets more people to try coding who would not otherwise, then that's great. But I'd rather see the initial focus be on getting people who wouldn't otherwise try coding to give it a shot, specifically women and minorities, because many of them can be amazing engineers but never even think to try.

Coding is hard. It's difficult, it's painful, and it's often frustrating. But it's rewarding, it's artistic, and it's a fundamentally creative endeavor. It is not akin to mandatory primary subjects such as reading and arithmetic.

The world needs more coders, and it needs them now. But let's give coders the credit they deserve, and let's treat software engineering like the art and science that it truly is.

Comments

Popular posts from this blog

Why Korean Is Hard For Native English Speakers

A couple of days ago, as an experiment, I wrote my first blog post ever in a non-English language. It was an attempt to explain some of the reasons that Korean is hard to learn for native English speakers, so I figured I might as well try to write it in Korean. Those of you who actually read Korean can see how awkward the attempt was =).

In any case, the post came from an email conversation I had with The Korean from Ask a Korean, a fantastically well-written blog about all things Korea from the perspective of a Korean who moved to the United States during high school. Since I tend to geek out on language things, I figured I might as well post part of that conversation. An edited version follows.

---------

Out of the languages that I've attempted to learn so far, Korean has been the hardest. I've done a lot of meta thinking about learning Korean, and I think there are a number of reasons it's difficult for non-Koreans (and especially Westerners) to learn:

1) Obviously, the…

영어가 모국어인 사람들은 왜 한국어를 배우기가 어려운 이유

이 포스트는 내 처음 한국어로 블로그 포스트인데, 한국어에 대하니까 잘 어울린다. =) 자, 시작합시다! 왜 외국사람에게 한국어를 배우기가 어렵다? 난 한국어를 배우고 있는 사람이라서 이 문제에 대해 많이 생각하고 있었다. 여러가지 이유가 있는데 오늘 몇 이유만 논할 것이다.

1. 분명히 한국어 문법은 영어에 비해 너무 많이 다른다. 영어는 “오른쪽으로 분지(分枝)의 언어"라고 하는데 한국어는 “왼쪽으로 분지의 언어"이다. 뜻이 무엇이나요? 예를 보면 이해할 수 있을 것이다. 간단한 문장만 말하면 (외국어를 말하는 남들은 간단한 문장의 수준을 지낼 수가 약간 드물다), 간단한 걸 기억해야 돼: 영어는 “SVO”인데 한국어는 “SOV”이다. “I’m going to school”라고 한국어로는 “저는 학교에 가요"라고 말한다. 영어로 똑바로 번역하면 “I’m school to go”이다. 두 언어 다르는 게 목적어와 동사의 곳을 교환해야 한다. 별로 어렵지 않다. 하지만, 조금 더 어렵게 만들자. “I went to the restaurant that we ate at last week.” 한국어로는 “전 우리 지난 주에 갔던 식당에 또 갔어요"라고 말한다. 영어로 똑바로 번역하면 “I we last week went to restaurant to again went”말이다. 한국어가 왼쪽으로 분지 언어라서 문장 중에 왼쪽으로 확대한다! 이렇게 좀 더 쉽게 볼 수 있다: “전 (우리 지난 주에 갔던 식당)에 또 갔어요”. 주제가 “전"이고 동사가 “갔다"이고 목적어가 “우리 지난 주에 갔던 식당"이다. 영어 문장은 오른쪽으로 확대한다: I (S) went (V) to (the restaurant (that we went to (last week))) (O). 그래서 두 숙어 문장 만들고 싶으면 생각속에서도 순서를 변해야 된다.

2. 첫 째 점이니까 다른 사람을 자기 말을 아라들게 하고 싶으면, 충분히 …

Don't Take Korean Language Advice From Kyopos

I'm not sure why it took me so long to figure this out, but the last people you should take Korean language advice from are kyopos (foreign-born or raised Koreans). That being said, if you do follow their advice, you will get many laughs from Koreans. Some of my personal favorites, all of which actually happened to me:

- When I first got to Korea, I was at some open-air event, and during a break I started talking to one of the hosts. He said he was only a part-time host, so I asked him what his full-time job was, and he said "백수" (which is slang for "unemployed guy"). I asked him what that was, and he replied, "Comedian". So then the next few people I met, I proudly told I was a baeksu. (Edit: Actually, this guy was Korean Korean, not kyopo.)

- Next, a kyopo who lived in the apartment I moved into back in 2010 asked me what I was doing in Korea, and I told him I was starting a company, and asked how to say that in Korean in case people ask. He told me…