Maybe not everybody should learn to code

NeonNinja

Neon Resident
Joined
Nov 22, 2009
Messages
26,354
Reaction score
4,358
Location
Neon World
In the past few years, programming has gone mainstream, as celebrities from Chris Bosh to President Obama jump on the “everyone should learn to code” bandwagon. The idea is that teaching kids to code will make them employable and help American students keep up with their competition abroad.

But this idea has generated substantial whining among programmers—including me. Like a good computer scientist, I took the edict quite literally and had a pretty visceral reaction to it. I value the spread of programming knowledge to the extent that I value generally making all kinds of knowledge accessible. It gives a window into the crossover that computer science has with some interesting intellectual problems, and this exposure will undoubtedly help the field as it tries to attract the most capable people to join its ranks. Something has to trick people into banging their heads against the wall, whether it’s plush offices, intellectual rigor, prestige, or sheer beauty in the work.

I imagine that people get excited about physics by reading some Bad Astronomy or Richard Feynman’s QED, but no one jumps from reading about physics to doing physics—there is a substantial amount of school missing there. With programming, however, there’s very little separation between appreciating and making something. From the first days of learning a language like Python, you can write self-contained programs that build real things. As you move forward in your education, you’ll find an almost Wild West world that’s open both in the cultural and physical senses. And unlike other sciences, your credentials are primarily the programs you have written, not the stature of the professor whose lab you cleaned.

But this lack of authority comes at a price: It also means that anyone can call himself a teacher and spew nonsense to unsuspecting students. Several professionals have written about the alarming number of programming job applicants who overestimate their credentials. It seems that many computer science instructors—whether in person or in a self-guided online class—are failing to teach people to recognize what they don’t know. And if you don’t know what you don’t know, credentials are pretty easy to come by.

I’m not going to pretend that you need to be a genius to do useful things with a computer. It is possible to build a website solely from a facile use of Rails syntax. But in both the long and short term, you need to know more than that, and popular Web and mobile courses might not make this clear. Restricting yourself to learning about the technology du jour makes it easy to memorize habits rather than thinking them through. Eventually those technologies and programming languages will go out of style, and you’ll need a flexible understanding to tweak your habits for the next thing. And without knowing more of the bigger picture, you’re forced to hack away at a problem, which can take you pretty far until you run into one that is better solved by more careful design.
Frankly, just the idea that you can learn to code in a year gives me the creeps: I would be terrified if someone with only a couple of classes were writing programs for me, not because he (of course, and unfortunately, most programmers are men) has learned anything wrong—but because of what he doesn’t know.

For those aspiring to be a professional programmer, these services look like a great resource as a starting point; I completed Codecademy’s Python exercises and thought they were pretty well done. And there’s certainly no reason for this information to be under the price lock of a university, especially when there is such demand for it in the market. Several of my colleagues are successful self-taught programmers, and these resources make it easy for the size of that group to increase.

But if you aren’t dreaming of becoming a programmer—and therefore planning to embark on a lengthy course of study, whether self-directed or formal—I can’t endorse learning to code. Yes, it is a creative endeavor. At its base, it’s problem-solving, and the rewards for exposing holes in your thinking and discovering elegant solutions are awesome. I really think that some programs are beautiful. But I don’t think that most who “learn to code” will end up learning anything that sticks.

One common argument for promoting programming to novices is that technology’s unprecedented pervasiveness in our lives demands that we understand the nitty-gritty details. But the fact is that no matter how pervasive a technology is, we don’t need to understand how it works—our society divides its labor so that everyone can use things without going to the trouble of making them. To justify everyone learning about programming, you would need to show that most jobs will actually require this. But instead all I see are vague predictions that the growth in “IT jobs” means that we must either “program or be programmed” and that a few rich companies want more programmers—which is not terribly persuasive.

You could argue that people have an obligation to be responsible consumers, so they should have an idea of what their proprietary software is doing. People would definitely interact with software differently if they knew something about whether their personal data is “secure.” But there are several other things that everyone should—and does not—know, such as civic knowledge or even more basic understandings of other educational topics like logic, science, etc. For most, software is just another black box that they will happily coexist with, and that’s OK.
But I wonder why people are comfortable with thinking of computers as a scary black box in the first place. Computers do only what people tell them to do, and yet it is absurdly common to hear, “Windows crashed again! Call over the IT guy—it’s so complicated!” So many users do not feel empowered to understand how to use computers well, and I think that the urgency to spread programming is a symptom of this feeling. Perhaps if everyone had some practice telling computers what to do, tech intimidation wouldn’t be so prevalent. But many of the efforts to promote programming could have the opposite effect, turning computer science into the latest technical fad.

This is my nightmare vision—“everyone” approaches programming as a set of arbitrary technical details just because he or she should. With only bits and pieces, users can’t appreciate the ways that languages are designed to solve problems, and they are left with an even larger black box. With this approach to programming, their knowledge will eventually float into the ether in the company of other meaningless knowledge, like how to talk nicely to that broken Nintendo 64 cartridge.
This can be avoided if you have concrete problems to solve. Take a biologist who frequently uses software to analyze data. A graphical interface might not be able to extract all the information she wants, so she needs the flexibility of the command line to write her own scripts. This is a compelling reason to extend programming knowledge outside of the IT realm. Her knowledge comes from a focused learning of the topics or a language that is specialized for her application. She doesn’t just “learn Python.”

I’m not sure it’s even possible to teach everyone how to code, but I do know that to mandate programming as a general education requirement would displace something else that we’re already failing to teach, and that’s not good, either. We don’t need everyone to code—we need everyone to think. And unfortunately, it is very easy to code without thinking.

http://www.slate.com/articles/techn...dy_does_not_need_to_learn_to_code.single.html
 
Nice one.

The points about "what you don't know" are the crux of it. Forms the basis on why the common statement "a CS graduate should start on min 30k pm" is BS

Did a hello world app, calls himself a programmer.
Made a Wordpress site, defacto web genie.
 
But then the person doing the hiring should be competent enough to spot such applicants enough from a mile away. If you are not yourself competent to spot someone who does not know what he is talking about, then perhaps you are made for each other?
 
But then the person doing the hiring should be competent enough to spot such applicants enough from a mile away. If you are not yourself competent to spot someone who does not know what he is talking about, then perhaps you are made for each other?

Have you met a consultant lately? They give the new ones a list of people contacted about 4 years ago and ask them to start phoning to see who wants to move. I know how it goes -My sister has has ran her own agency since the 90's - specializes in JD Edwards and SAP.
No IT background at all in most cases, won't know her C# from her C. You can spin them any story, they won't know what you tell them. Tell them you work in Biztalk, and she might ask if its like Windows. Once had one who was adamant Linux was a type of database.
You'll find the competent one has a few under her, and she is too busy to handle everything. They find a likely candidate that seems to fit a client spec, she cleans up the CV, and sends it to the client. And even a competent interviewer can be fooled by a good CV.
End result, a interview with someone where you walk out thinking 'Why did they send this idiot to me?'
 
I don't agree with the article. One good point they make is that a push for everyone to develop basic software development skills will create exposure that wasn't there before. This will bring in more individuals with a lot of potential into this field, and likely will help to give a country that practices this an edge in the information game.

The above is a really important point, and outweighs the counter points. Sure, not everyone will become competent programmers, and more than likely most of the people who participate in this wide bath of coding promotion and education, will never become professional developers, however, what they do get is a fundamental understanding of what computers do and how they work. No, it's not a computer science degree, but simply understanding the breakdown of memory/state, code, how it relates to logic, and possibly even what an algorithm is, will go a long way to helping people reason about technology, and what it is capable of. The value in this, isn't necessarily from understanding specifically Python or Ruby, or some transient language or technology (although people being able to write a bit of elementary code to work things out on demand, like an advanced calculator would be really useful), it's from just learning the rudimentary concepts, and those will never erode entirely over time.

I see this a lot like maths. Just about everyone is required to study it to a certain level - most people leave high school with a very basic understanding of algebra and calculus, and there are several advantages to this:

1) It provides a platform for those who want to take it further, without any programmes pushing it, most people wouldn't get the required exposure to even start studying it in the first place.

2) Some people use it for every day problems - whatever you land up doing, there are things that can be modeled, and solved using maths

3) Even if you never ever use it again in any formal sense after high school, it has affected the way you think about things, from logic, to abstraction in algebra, to compounding values, to understanding simple (usually linear) relationships between abstract quantities, to understanding that area and volume increase faster than linearly with simultaneous and equal changes in width, height, depth, etc.

I expect that learning the basics of coding, would give people a similar benefit in terms of technology - maybe it will help find the next Serge Brinn, maybe it will help people work out the cubic meterage of their house, or maybe it will just stop people from wondering, why, if a computer can be programmed to do "anything" (think of a child's understanding of the magical beast), can't it be simply programmed to simply find a cure for cancer, or turn into a turtle, or some other such nonsense.

To justify everyone learning about programming, you would need to show that most jobs will actually require this.

This is already not true for maths, yet we teach it. Many jobs don't directly require it, yet it enriches the way we think, in a way that helps us with almost any job, or even just life in general.

A lot of what the author says about the "nightmare vision", are concerns also already echoed in maths - people apply formulas without understanding or appreciating all the advanced theory, some people find it hard to learn maths, and if they don't use their maths ever after studying, well, then their skills may atrophy.

My take, is that this is absolutely fine - some people take away more, and some will take away less from their education - what's really at issue here, is whether or not the benefit outweighs the cost, and given the technology centric environment we find ourselves in today, my opinion is, hell yes!
 
Last edited:
Top
Sign up to the MyBroadband newsletter
X