I'm actually kind of tired of hearing, "there's no other field that lets you create something from nothing" vis a vis programming. Look: I LOVE coding. I LOVE programming. I think it's fun and challenging, etc. etc. But it's not the only creative outlet that has ever existed.
Have you considered a pencil and a paper? Crayons? Markers? Paints and a canvas? A hammer, some wood and some nails?
"Ah, but that requires something to create something!" Yeah? So does programming. It requires a computer (or access to one). It requires programs to run your code - free or otherwise. In fact, I'd argue the barrier for entry into programming is SIGNIFICANTLY HIGHER than MANY other creative outlets.
I agree, and I'd argue that you can program something in 5 minutes, but you can't program something well if you haven't put in years of practice and dedication.
It's just like anything else in the world. Any jerk can grab some paints and make some lines on a canvas, but the ones who take the time to understand art and practice for years are always going to be better. Always.
So should you learn to code? If you're interested in it and you really like doing it, then yes. Otherwise you're going to waste your time and everyone else's time. Coding is just another art form. It's a means of expressing systems that run on computers. If this doesn't excite you, don't do it!
Learn something you're passionate about....because you'll never get really good at something unless you're fired up about it, and what's the point of doing something if you aren't going to completely commit? There's so much in this world to learn and be passionate about, why spend your time learning something you don't care about?
I doubt anyone is actually claiming that programming is the only field in which you can create; that's a pretty thin strawman argument. But programming IS the highest leverage means of creation invented, however.
I say this as a programmer, photographer, woodworker, electronics hacker, and musician. Nothing else comes close to programming in how much you can create with so little.
In fact, programming can help you with ALL of the other hobbies I occasionally indulge in. Being able to write music doesn't make me a better photographer.
And you really are creating from nothing; you could create an app at your local library if you had some kind of programming skill but no access to a computer of your own. If I lost everything but still had access to libraries, I would still be able to do programming work.
Only in digital photography are you "creating from nothing"; every other hobby I have requires you to use up consumables, and every one of those hobbies have involved investments in equipment greater than what I spent on my latest laptop.
I couldn't create anything interesting with pencil and paper myself, and I would also suggest that it would take FAR more skill in drawing to begin to make a living using pencil and paper than it would skill in, say, web development, to make a living creating web pages.
I KNOW web developers who are barely "programmers" compared to what I know about programming who do a good job and make a good living working on web sites for people. That kind of range of skill can only exist because of the extreme leverage you get from knowing anything at all about programming.
> It requires a computer (or access to one). It requires programs to run your code - free or otherwise.
I know what you're saying, but I'd like to point out that you don't need a computer to write programs. I started writing programs with pen and paper back in middle school (before my family owned a computer), and still often do that. Nowadays, most of them do end up being digitized and executed, though.
Alonzo Church, Alan Turing, Haskell Curry, Moses Schoenfinkel, etc., were writing programs before computers were even invented ;)
Yes, but code is the one of the rare things that can multiply your efforts...in the same way that a it'd be useful to be able to construct wheels and levers before the industrial age.
But code goes further than that; since so much of our world is now digital, it multiplies these efforts in virtually every field, including the arts (there's a niche to be filled in custom automating the batch processing done in the photo production industry)
Could you make an impact (even if a very small one) on a large number of people over the course of a weekend with a pencil and paper?
I've never had a piece of art or drawing save work/time/money for me but we have apps that do this everywhere.
Art is an amazing creative outlet and I've seen some awe inspiring drawings/paintings but I've never seen one with a tangible benefit.
I think if you asked several highschool or even college students who painted Starry Night or Washington Crossing the Delaware you'd get a lot of blank stares. Ask the same kids if they know of or use Facebook; I'd bet more kids know about Facebook.
I'm not saying that everyone is cut out to be a programmer but I do support everyone trying it out. Zuckerberg didn't create Facebook with a pencil and paper.
Programming differs from other creative activities in that it's about creating a processes that create things.
Consider art. You draw a picture with pencil and a piece of paper. In programming, you define a process of drawing a picture.
True, you can still draw by hand just fine. However, imagine a picture that only exists when someone is looking at it—a picture that you can't draw in advance, only define a process that will draw it at someone's request. That's interaction, which is what programming is mostly about.
There are other activities that involve defining processes of building things—entrepreneurship comes to mind. However, programming seems to be the only one where building a process of creation is so pure and comparable to simply building a thing.
You don't have claim that programming is the bestest, most creative and constructive thing ever to say that programming has a mix of creative, constructive activity that is unique to it and can be uniquely satisfying in a certain way (just as painting, dance, martial arts and system administration have their unique aspects).
True, but mastering a pencil and paper is going to have fairly limited benifits, compared to understanding how a computer works (considering that nearly everything you do has something to do with a computer).
Think about it: something I did reached 10,000 actual living people and had an impact (however small) on their life. That would never have been possible if I didn’t know how to code.
(ability to code) != (eyeballs reached)
I've written blog posts viewed by 100,000 people in one day.
I've also written software used by 1 person to save millions of dollars.
Both are rewarding, but I'd still rather build something. I think that's the most appropriate metric.
Great points. I like this rewrite for the plumber at your local McDonald's:
"Think about it: something I did reached 10,000 actual living people and had an impact (however small) on their life. That would never have been possible if I didn’t know how to plumb."
This statement works equally well for many professions.
Think about it: something I did reached 10,000 actual living people and had an impact (however small) on their life. That would never have been possible if I didn’t know how to code. != Imply that (ability to code) = (eyeballs reached)
I don't think the implication was supposed to be that you can't reach people without knowing how to code, but that in this instance, him knowing how to code gave him the ability to have an impact.
It seems an important enough distinction to point out.
Edit: <i></i> didn't make italics
Edit 2: Thanks wallawe
Not directly, maybe. But having some acknowledgment of basic data principles (particularly delimitation, meta-ness, maybe even regexes) can substantially increase your ability to write digitally. Markdown, for instance. And of course, being able to maintain or customize an existing platform, whether it's WordPress or Tumblr.
It's sad to say, but delimitation is not a skill that is in the mind of the average professional adult. Try sending someone a tab-delimited text file to someone who has only known CSV or XLS sometime.
Now your average tech savvy office drone could morph their excel spreadsheets into a full blown application capable of processing business data without having to jump through any of the traditional hoops the evil IT department normally demands.
And we ended up with a ton of buggy, dangerous "mission critical" piles of garbage because they were "designed" and built by non-programmers.
Software programming is a discipline on the order of engineering and it will continue to get more complicated and require more and more education going forward. So no, not everyone should learn to "code".
We should be encouraging people to THINK like a coder - to approach problems in a way to identifies root causes and starts coming up with proper solutions.
I'm not in the valley so may it's vastly different down there, but outside (in Canada) tech is still considered a very specialized field, software development especially. It is not considered as simple as basic household skills like plumbing, cooking and building a deck. I would not expect my lawyer to 1) know how to code or, 2) code in a professional and useful manner.
I still think those «buggy, dangerous "mission critical" piles of garbage» are valuable.
If there was no VBA, the jobs these scripts were created for would still be done manually, with a mouse, by some secretary somewhere. "Getting a professional to do it" would never enter into the picture when you're talking about a BigCorp with a conservative, limited-budget IT department.
Shit code will come from non-coders at the same rate as from coders. The reason that your buggy and dangerous missions critical piles of application (that eventually DID something useful for whoever used that) is garbage is because the people who coded didn't know a single thing about coding, and simply dived into it trying to achieve something they needed, and it worked [up to a point].
That's the whole point of this, learning to code gives you the option to make something you otherwise would consider magic.
You say you do not expect your lawyer to learn to code, but do you expect him to have basic mathematical tools to be able to have a conversation with him about stocks and options and percentages, right? Well, in the not so distant future these simple mathematical tools that we learn early on in life will be incorporated with basic programming tools.
No, lawyers still won't be able to code a Facebook from scratch, but they will be able to code basic HTML template for legal documents, and generate simple reports when they need to. Obviously they'll have secretaries and code monkeys that will do their bidding for money, as always, but they will still know the basic principles of software development, unlike today that most non-technical people consider software as black magic.
It applies to a lot of professions. We see it applied to the legal profession all the time here on HN.
No lawyer likes to find out that the Accounting Dept. has been drafting contracts, any more than an IT person likes to discover that the CPAs have developed a pseudo-enterprise accounting "system" in Microsoft Access.
But I think there is a middle ground: It's not practical to consult a lawyer for every click-through agreement you encounter on the web, just like it's not practical to launch an enterprise IT project every time you need to automate some tasks in a spreadsheet. Some basic skills in these areas are good to have. Just know your limits...
Sacha, I am a fan of yours and usually like your material, but I just can't agree here. You took so much for granted in this post. Deploying a website that 10,000 people will see is not trivial, whether you personally did it or not. Here's my beef, specifically:
1. You already knew how to design. In fact you are a very talented and well known designer. If you didn't have design skills, chances are a huge huge amount lower that anything you put out will make the rounds - design is super important, and you of all people know that. And that's something you need to learn as well, so tack that on top of the time it takes to learn how to code.
2. Learning how to code != making websites. In fact, they are very different. To make a website, not only do you need to either have a designer on hand or be good at design as mentioned above, but you also need to have a very good understanding of how the web works. That means filesystem structure, http, ftp, domain names, web hosting, then add html and css to the javascript you've been working on. THEN if you want your site to be anything more than static, throw in back end code, databases, web frameworks, etc. on top of that.
This is a MASSIVE stack of things to learn, and I don't know a single person who knows all of this and doesn't work full time doing this stuff. "Learning to code" seems like a cute thing you can make a resolution to work on as a hobby, and maybe it is. You might be able to pick up the bare basics of programming in your free time, if you work hard. But making something significant like you claim here is a completely different deal.
3. You never dispute or even address the main point behind Atwood's article - that while programming is great to learn, the trend that 'everyone should learn to program' as a base skill along with reading, writing, and math is ridiculous. It's nowhere near as important as these other skills, and he makes a number of other valid points as well which I'm sure you don't disagree with. You argument was simply that programming is cool, so you should learn it. Sure, I agree, and I would have said the same if I only read the title of Atwood's article. But I feel like the way you contested it was uninformed and completely missed the point.
3. You never dispute or even address the main point behind Atwood's article - that while programming is great to learn, the trend that 'everyone should learn to program' as a base skill along with reading, writing, and math is ridiculous. It's nowhere near as important as these other skills, and he makes a number of other valid points as well which I'm sure you don't disagree with. You argument was simply that programming is cool, so you should learn it. Sure, I agree, and I would have said the same if I only read the title of Atwood's article. But I feel like the way you contested it was uninformed and completely missed the point.
I'll dispute the main point.
As computers permeate more of our everyday lives it becomes necessary to understand them on some level. Nobody needed to learn how to read until there were books everywhere. No one needs to be an English major to pick up a book and learn to read. The benefits we know are enormous to adopting this skill.
But lets consider a world where books were everywhere but only an elite few felt it was useful to teach people to read. Knowledge as we well know is power and if only a few had the ability to pass on their knowledge amongst themselves then they would have a significant advantage over those who cannot read. The unfortunate masses who could not read would never know the full extent of the forces that work against their best interests. How could they?
Now we're in a world where there is more computing power in your pocket than that which sent human beings to the moon and back. Yet the non-programmer has no idea just how useful it is. The only literacy they have with computers are as appliances. They don't realize that these devices carry with them processes that may or may not operate in their best interest and they have no way of knowing that without being able to at least have a basic literacy of computers and programming.
Becoming a master at programming is still a difficult task that few will achieve. Just as becoming the next Nabokov or Salinger won't come to every person who picks up a pen and paper. However that doesn't mean we don't need to teach everyone how to write. We give them the basics and its up to them to use those tools if they so choose and pursue their own paths. However if we keep them in the dark then they'll have no hope.
Teach everyone to code. Computing is emerging as a new medium of expression and the technology is embedding itself in our every day existence. People need to be literate so they are able to understand the consequences and benefits of this technology. It's 2012 and most people I know still think computers are practically magic. They should know better and its our fault for not educating them.
1. You already knew how to design. In fact you are a very talented and well known designer. If you didn't have design skills, chances are a huge huge amount lower that anything you put out will make the rounds - design is super important, and you of all people know that. And that's something you need to learn as well, so tack that on top of the time it takes to learn how to code.
We often take for granted the effort and expertise needed to do something that we can do so easily or has become second nature to us. This is sometimes why the better you are at something, the more painful it is to watch someone else do it poorly.
I expected a similar post to hit HN, since I too was shocked by Jeff's comments. However I do not think people should learn to code for the same reason.
Sure writing a website is cool, but then again, learning plumbing is cool, which is the basis of Jeff's argumentation. Plumbing can empower you by giving you control over your own house and appliances, etc, etc.
I think the real reason people should learn to code, is because an increasing number will have to deal with machines in every day lives, often taking decision affecting the work (and general lives) of others based on their understanding of those same machines:
- The legislator who has to pass laws about computers and/or the Internet.
- The manager who has to assess the usefulness of a new software application.
- The teacher educating kids and preparing them for the modern world.
- The consumer who wants to make an informed choice when chosing the latest gadget, not blindly follow what marketing departments tell her to.
- The judge and jurors overseeing the Oracle-vs-Google case.
I want to make the distinction that I wish people would learn to Code, not so they can "make" stuff, but so they can "understand" stuff.
I don't think the comparison is apt, because learning plumbing only helps you with plumbing. Whereas coding knowledge can be applied to a lot of fields.
To me, there's an argument to be made that coding can be considered (or maybe, will one day be considered) like a life skill on par with reading, cooking, or playing music.
I agree it doesn't look like it right now, but I'm sure that a couple hundreds years ago the idea that everybody would one day know how to read seemed just as ludicrous.
Didn't Jeff make the point that people should be taught "computer skill" for the reasons you just listed? You can learn about the ins and outs of technology without learning to code.
I think everybody should visit Reddit, for one simple reason: knowing how to make a meme is hugely empowering.
I can’t think of many other skills that enable you to create something from scratch and reach as many people as knowing how to set up a simple rage post.
Just last week, I was able to come up with an idea and then photographed my cat in 2 ways. That photo was then seen by about 10,000 people in a couple hours and I got 2000 karma points.
Think about it: something I did reached 10,000 actual living people and had an impact (however small) on their life. That would never have been possible if I didn’t know how to procrastinate on the Internet.
Your point in the wider discussion aside (sure, population-wide imperatives are a dangerous rhetorical device), I actually think actively participating in the Reddit rage comic community can be a very valuable experience. It will teach you how to tell a story and communicate the humor of a situation using a simple image editor. You can watch the real failure-learning happen in [1]. Thinking your work is comedy gold and getting it downvoted into oblivion is a great, highly-concentrated learning experience.
English teachers in Japan are also using rage comics to supplement their English lessons and inspire their students to learn words so they can understand their classmates' jokes [2].
Computing is taking a similar path in everyday life as finance. As individuals, I don't feel we need to learn how hedge funds, or complex derivatives work, but nobody denies it is beneficial to learn how to manage money, make basic investments, and plan your retirement. The urge to teach programming isn't as much about teaching everyone complex and theoretical computer science, but to teach basics that will benefit them as we move into the information age where technology permeates nearly every business.
I think everybody should learn to code at school when they're kids. That way, they can decide if they want to become real programmers/software-engineers or something else.
Just as every kid learns mathematics does not mean he/she has to become a full-fledged PhD researching manifolds in Topology. But they still need to know how to calculate percentages, basic statistics etc to get through life more easily.
In the same way, giving instructions to a computer the "hard" way instead of via clicking on buttons and letting magic happen is often a good exercise to appreciate the power and freedom it gives you. I remember doing this when I was 9 or 10 and doing locate, print, cls repeatedly in a BASIC loop let me create an animation I could control quite precisely (well no, CPU cycles came into play!)
But that's the precise reason, 18 years on, I delve into programming GPUs, wrote games with advanced Direct3D shaders for them and am currently wrting OpenCL code to solve complex equations on them.
"The first step is letting people know that learning to code is not that hard, and that if they put their mind to it they have a high chance of succeeding."
Is this even true? I think it's pretty well documented that the vast majority of the population actually has a high chance of failing. Look at failure rates in intro CS courses. Remember this?
Both of these blog posts are stupid. They should both really be saying "Please learn more about the world in order to better accomplish your goals." Sometimes it's useful to learn how to code because it teaches a different way of thinking. Sometimes it's more useful to just learn how to think differently. These choices depend on a lot of things, but one is more optimal than the other for any particular scenario. If I could get everyone in the world to read a few articles on rationality, I would, because it wouldn't take long and the people who could understand it would really get something out of it. If I could get everyone in the world to learn how to code, I wouldn't, because it would take longer and I expect far fewer people to get value out of it. I can't do either of these though, so both are pretty useless to consider. People toss around information more and more quickly these days, so it might be useful to share a bit of philosophy. Tell people to try hard. Tell people to learn. Tell people to find out about the things they don't know, to see if they could help them. Tell people to reevaluate their goals, to find which contradict each other and to sort themselves out. Be kind or they won't listen. Don't be patronizing in your kindness, or they won't listen. If you want to help people become better, do it for yourself first. Learn more, become smarter, try harder, do better, and eventually the people around you just might see it and start doing it, too. Or maybe after a while you'll start helping other people become better. There are still people who suffer today. Sometimes you can't help them; sometimes you can.
I think learning to cook is an interesting comparison. Would people react the way they do now if someone wanted to learn how to cook instead of learning how to code? I think learning to cook is a really worthwhile skill. It will teach you about food, ingredient and chemistry. It will maybe get you thinking about how we produce food in our world.
The same goes for coding. It will get you thinking about a lot of things that really matter to your life and the world.
Learning anything is a good comparison. There is no harm in learning. Better to be a mediocre guitar player than not be able to play to guitar at all. It expands your mind, and lord knows you were just going to spend the time watching Desperate Housewives reruns.
Programmers thinking their specific skills are universally useful and should be taught at school... Yeah right. Most people don't even remember the basic math they learnt at school. I wont say programming skills aren't useful and rad but one could say the same about basically every skill and I don't see electrical engineers saying "please learn electrical engineering, it's very useful".
Programming is an adult way to treat a computer as opposed to the absolute infantilism most people approach their computers, or devices with. It's as much to say I understand that what happens on the hardware end is what is happening as the consumer, even though the processes seem completely different.
And none of it is easy or obvious. Dijkstra said teaching computer science was absolute cruelty because it does not truly reflect anything else in the world.
If you are going to work with computers don't think that an email server is an online mail room, don't go down the road of thinking that copyright law holds from one medium to the other because the idea behind the product is the same.
Don't think that skype is a telephone, don't think that facebook is the beatles of today, do know what something is, do know that the only intersection between life and computers is via maths and logic, do understand that these things matter now and will matter in the future.
So we complain about politicians passing stupid technology laws, and as soon as a politicians says he wants to learn something about the tech, a prominent programmer tells him "don't bother?"
If you don't know how to code, it probably seems perfectly reasonable to have a computer that you can't program yourself, with everything locked down. If that's the future you want, then sure, tell politicians to leave the coding to the professionals.
If you can code, you start to see the computer as a machine that can do anything you want, instead of just the things some app store makes available to you. That freedom is addictive. You start demanding it.
Interesting point: people need to know how different it is to customize a WordPress theme and building a Rails CMS. If, before knowing how to actually code, people can judge of the quantity and quality of work required to build something, the world will certainly be better.
As I recall from the 1980's, there are two types of people in the world, programmers and victims.
I think Atwood's point is valid in so far as the world probably doesn't need politicians coding the software by which government services are provided. Nor do we need everyone writing their own web pages, one GeoCities was enough.
On the other hand, it seems to me that programming is going to increasingly be seen as a part of basic mathematical literacy. It's just a whole lot easier to solve a layered arithmetical problem with javascript than with a conventional calculator.
In other words, most people should try to learn the lightweight scripting which allows for better exploitation of all the computing tools.
A lot of people are confusing "learning how technology works" with "learning to code". I think society would benefit if more people understood how things worked. But not necessarily if everyone could code.
Perhaps learning to code is a gateway to understanding technology. But that's a pretty steep learning curve just to explain to someone how a web page is generated and served.
To keep the plumber analogy, I'd be a better homeowner if I understood what all the pipes in my house do, and the importance of proper care and maintenance. Or when something breaks, how to turn off the water main without calling 911.
[+] [-] VolatileVoid|14 years ago|reply
Have you considered a pencil and a paper? Crayons? Markers? Paints and a canvas? A hammer, some wood and some nails?
"Ah, but that requires something to create something!" Yeah? So does programming. It requires a computer (or access to one). It requires programs to run your code - free or otherwise. In fact, I'd argue the barrier for entry into programming is SIGNIFICANTLY HIGHER than MANY other creative outlets.
[+] [-] orthecreedence|14 years ago|reply
It's just like anything else in the world. Any jerk can grab some paints and make some lines on a canvas, but the ones who take the time to understand art and practice for years are always going to be better. Always.
So should you learn to code? If you're interested in it and you really like doing it, then yes. Otherwise you're going to waste your time and everyone else's time. Coding is just another art form. It's a means of expressing systems that run on computers. If this doesn't excite you, don't do it!
Learn something you're passionate about....because you'll never get really good at something unless you're fired up about it, and what's the point of doing something if you aren't going to completely commit? There's so much in this world to learn and be passionate about, why spend your time learning something you don't care about?
[+] [-] SomeCallMeTim|14 years ago|reply
I say this as a programmer, photographer, woodworker, electronics hacker, and musician. Nothing else comes close to programming in how much you can create with so little.
In fact, programming can help you with ALL of the other hobbies I occasionally indulge in. Being able to write music doesn't make me a better photographer.
And you really are creating from nothing; you could create an app at your local library if you had some kind of programming skill but no access to a computer of your own. If I lost everything but still had access to libraries, I would still be able to do programming work.
Only in digital photography are you "creating from nothing"; every other hobby I have requires you to use up consumables, and every one of those hobbies have involved investments in equipment greater than what I spent on my latest laptop.
I couldn't create anything interesting with pencil and paper myself, and I would also suggest that it would take FAR more skill in drawing to begin to make a living using pencil and paper than it would skill in, say, web development, to make a living creating web pages.
I KNOW web developers who are barely "programmers" compared to what I know about programming who do a good job and make a good living working on web sites for people. That kind of range of skill can only exist because of the extreme leverage you get from knowing anything at all about programming.
Yes, programming IS different.
[+] [-] groovy2shoes|14 years ago|reply
I know what you're saying, but I'd like to point out that you don't need a computer to write programs. I started writing programs with pen and paper back in middle school (before my family owned a computer), and still often do that. Nowadays, most of them do end up being digitized and executed, though.
Alonzo Church, Alan Turing, Haskell Curry, Moses Schoenfinkel, etc., were writing programs before computers were even invented ;)
[+] [-] danso|14 years ago|reply
But code goes further than that; since so much of our world is now digital, it multiplies these efforts in virtually every field, including the arts (there's a niche to be filled in custom automating the batch processing done in the photo production industry)
[+] [-] caleywoods|14 years ago|reply
I've never had a piece of art or drawing save work/time/money for me but we have apps that do this everywhere.
Art is an amazing creative outlet and I've seen some awe inspiring drawings/paintings but I've never seen one with a tangible benefit.
I think if you asked several highschool or even college students who painted Starry Night or Washington Crossing the Delaware you'd get a lot of blank stares. Ask the same kids if they know of or use Facebook; I'd bet more kids know about Facebook.
I'm not saying that everyone is cut out to be a programmer but I do support everyone trying it out. Zuckerberg didn't create Facebook with a pencil and paper.
[+] [-] goblin89|14 years ago|reply
Consider art. You draw a picture with pencil and a piece of paper. In programming, you define a process of drawing a picture.
True, you can still draw by hand just fine. However, imagine a picture that only exists when someone is looking at it—a picture that you can't draw in advance, only define a process that will draw it at someone's request. That's interaction, which is what programming is mostly about.
There are other activities that involve defining processes of building things—entrepreneurship comes to mind. However, programming seems to be the only one where building a process of creation is so pure and comparable to simply building a thing.
[+] [-] vijayr|14 years ago|reply
Singing
Dancing
Standup comedy
Story telling
etc.
So yeah, saying programming is the only field that we can create something from nothing is just hogwash.
[+] [-] joe_the_user|14 years ago|reply
You don't have claim that programming is the bestest, most creative and constructive thing ever to say that programming has a mix of creative, constructive activity that is unique to it and can be uniquely satisfying in a certain way (just as painting, dance, martial arts and system administration have their unique aspects).
[+] [-] dholowiski|14 years ago|reply
[+] [-] morgannnn|14 years ago|reply
[+] [-] edw519|14 years ago|reply
(ability to code) != (eyeballs reached)
I've written blog posts viewed by 100,000 people in one day.
I've also written software used by 1 person to save millions of dollars.
Both are rewarding, but I'd still rather build something. I think that's the most appropriate metric.
[+] [-] _ea1k|14 years ago|reply
"Think about it: something I did reached 10,000 actual living people and had an impact (however small) on their life. That would never have been possible if I didn’t know how to plumb."
This statement works equally well for many professions.
[+] [-] jeremyarussell|14 years ago|reply
I don't think the implication was supposed to be that you can't reach people without knowing how to code, but that in this instance, him knowing how to code gave him the ability to have an impact.
It seems an important enough distinction to point out.
Edit: <i></i> didn't make italics Edit 2: Thanks wallawe
[+] [-] danso|14 years ago|reply
Not directly, maybe. But having some acknowledgment of basic data principles (particularly delimitation, meta-ness, maybe even regexes) can substantially increase your ability to write digitally. Markdown, for instance. And of course, being able to maintain or customize an existing platform, whether it's WordPress or Tumblr.
It's sad to say, but delimitation is not a skill that is in the mind of the average professional adult. Try sending someone a tab-delimited text file to someone who has only known CSV or XLS sometime.
[+] [-] blindhippo|14 years ago|reply
Now your average tech savvy office drone could morph their excel spreadsheets into a full blown application capable of processing business data without having to jump through any of the traditional hoops the evil IT department normally demands.
And we ended up with a ton of buggy, dangerous "mission critical" piles of garbage because they were "designed" and built by non-programmers.
Software programming is a discipline on the order of engineering and it will continue to get more complicated and require more and more education going forward. So no, not everyone should learn to "code".
We should be encouraging people to THINK like a coder - to approach problems in a way to identifies root causes and starts coming up with proper solutions.
I'm not in the valley so may it's vastly different down there, but outside (in Canada) tech is still considered a very specialized field, software development especially. It is not considered as simple as basic household skills like plumbing, cooking and building a deck. I would not expect my lawyer to 1) know how to code or, 2) code in a professional and useful manner.
[+] [-] kalleboo|14 years ago|reply
If there was no VBA, the jobs these scripts were created for would still be done manually, with a mouse, by some secretary somewhere. "Getting a professional to do it" would never enter into the picture when you're talking about a BigCorp with a conservative, limited-budget IT department.
[+] [-] elisk|14 years ago|reply
That's the whole point of this, learning to code gives you the option to make something you otherwise would consider magic.
You say you do not expect your lawyer to learn to code, but do you expect him to have basic mathematical tools to be able to have a conversation with him about stocks and options and percentages, right? Well, in the not so distant future these simple mathematical tools that we learn early on in life will be incorporated with basic programming tools.
No, lawyers still won't be able to code a Facebook from scratch, but they will be able to code basic HTML template for legal documents, and generate simple reports when they need to. Obviously they'll have secretaries and code monkeys that will do their bidding for money, as always, but they will still know the basic principles of software development, unlike today that most non-technical people consider software as black magic.
[+] [-] bm98|14 years ago|reply
It applies to a lot of professions. We see it applied to the legal profession all the time here on HN.
No lawyer likes to find out that the Accounting Dept. has been drafting contracts, any more than an IT person likes to discover that the CPAs have developed a pseudo-enterprise accounting "system" in Microsoft Access.
But I think there is a middle ground: It's not practical to consult a lawyer for every click-through agreement you encounter on the web, just like it's not practical to launch an enterprise IT project every time you need to automate some tasks in a spreadsheet. Some basic skills in these areas are good to have. Just know your limits...
[+] [-] jenius|14 years ago|reply
1. You already knew how to design. In fact you are a very talented and well known designer. If you didn't have design skills, chances are a huge huge amount lower that anything you put out will make the rounds - design is super important, and you of all people know that. And that's something you need to learn as well, so tack that on top of the time it takes to learn how to code.
2. Learning how to code != making websites. In fact, they are very different. To make a website, not only do you need to either have a designer on hand or be good at design as mentioned above, but you also need to have a very good understanding of how the web works. That means filesystem structure, http, ftp, domain names, web hosting, then add html and css to the javascript you've been working on. THEN if you want your site to be anything more than static, throw in back end code, databases, web frameworks, etc. on top of that.
This is a MASSIVE stack of things to learn, and I don't know a single person who knows all of this and doesn't work full time doing this stuff. "Learning to code" seems like a cute thing you can make a resolution to work on as a hobby, and maybe it is. You might be able to pick up the bare basics of programming in your free time, if you work hard. But making something significant like you claim here is a completely different deal.
3. You never dispute or even address the main point behind Atwood's article - that while programming is great to learn, the trend that 'everyone should learn to program' as a base skill along with reading, writing, and math is ridiculous. It's nowhere near as important as these other skills, and he makes a number of other valid points as well which I'm sure you don't disagree with. You argument was simply that programming is cool, so you should learn it. Sure, I agree, and I would have said the same if I only read the title of Atwood's article. But I feel like the way you contested it was uninformed and completely missed the point.
[+] [-] agentultra|14 years ago|reply
I'll dispute the main point.
As computers permeate more of our everyday lives it becomes necessary to understand them on some level. Nobody needed to learn how to read until there were books everywhere. No one needs to be an English major to pick up a book and learn to read. The benefits we know are enormous to adopting this skill.
But lets consider a world where books were everywhere but only an elite few felt it was useful to teach people to read. Knowledge as we well know is power and if only a few had the ability to pass on their knowledge amongst themselves then they would have a significant advantage over those who cannot read. The unfortunate masses who could not read would never know the full extent of the forces that work against their best interests. How could they?
Now we're in a world where there is more computing power in your pocket than that which sent human beings to the moon and back. Yet the non-programmer has no idea just how useful it is. The only literacy they have with computers are as appliances. They don't realize that these devices carry with them processes that may or may not operate in their best interest and they have no way of knowing that without being able to at least have a basic literacy of computers and programming.
Becoming a master at programming is still a difficult task that few will achieve. Just as becoming the next Nabokov or Salinger won't come to every person who picks up a pen and paper. However that doesn't mean we don't need to teach everyone how to write. We give them the basics and its up to them to use those tools if they so choose and pursue their own paths. However if we keep them in the dark then they'll have no hope.
Teach everyone to code. Computing is emerging as a new medium of expression and the technology is embedding itself in our every day existence. People need to be literate so they are able to understand the consequences and benefits of this technology. It's 2012 and most people I know still think computers are practically magic. They should know better and its our fault for not educating them.
[+] [-] hrabago|14 years ago|reply
We often take for granted the effort and expertise needed to do something that we can do so easily or has become second nature to us. This is sometimes why the better you are at something, the more painful it is to watch someone else do it poorly.
[+] [-] babarock|14 years ago|reply
Sure writing a website is cool, but then again, learning plumbing is cool, which is the basis of Jeff's argumentation. Plumbing can empower you by giving you control over your own house and appliances, etc, etc.
I think the real reason people should learn to code, is because an increasing number will have to deal with machines in every day lives, often taking decision affecting the work (and general lives) of others based on their understanding of those same machines:
- The legislator who has to pass laws about computers and/or the Internet.
- The manager who has to assess the usefulness of a new software application.
- The teacher educating kids and preparing them for the modern world.
- The consumer who wants to make an informed choice when chosing the latest gadget, not blindly follow what marketing departments tell her to.
- The judge and jurors overseeing the Oracle-vs-Google case.
I want to make the distinction that I wish people would learn to Code, not so they can "make" stuff, but so they can "understand" stuff.
[+] [-] sgdesign|14 years ago|reply
To me, there's an argument to be made that coding can be considered (or maybe, will one day be considered) like a life skill on par with reading, cooking, or playing music.
I agree it doesn't look like it right now, but I'm sure that a couple hundreds years ago the idea that everybody would one day know how to read seemed just as ludicrous.
[+] [-] benihana|14 years ago|reply
[+] [-] ralfd|14 years ago|reply
I can’t think of many other skills that enable you to create something from scratch and reach as many people as knowing how to set up a simple rage post.
Just last week, I was able to come up with an idea and then photographed my cat in 2 ways. That photo was then seen by about 10,000 people in a couple hours and I got 2000 karma points.
Think about it: something I did reached 10,000 actual living people and had an impact (however small) on their life. That would never have been possible if I didn’t know how to procrastinate on the Internet.
[+] [-] bcjordan|14 years ago|reply
English teachers in Japan are also using rage comics to supplement their English lessons and inspire their students to learn words so they can understand their classmates' jokes [2].
[1]: http://www.reddit.com/r/fffffffuuuuuuuuuuuu/new/
[2]: http://www.reddit.com/r/EFLcomics
[+] [-] phatboyslim|14 years ago|reply
[+] [-] unknown|14 years ago|reply
[deleted]
[+] [-] photon137|14 years ago|reply
Just as every kid learns mathematics does not mean he/she has to become a full-fledged PhD researching manifolds in Topology. But they still need to know how to calculate percentages, basic statistics etc to get through life more easily.
In the same way, giving instructions to a computer the "hard" way instead of via clicking on buttons and letting magic happen is often a good exercise to appreciate the power and freedom it gives you. I remember doing this when I was 9 or 10 and doing locate, print, cls repeatedly in a BASIC loop let me create an animation I could control quite precisely (well no, CPU cycles came into play!)
But that's the precise reason, 18 years on, I delve into programming GPUs, wrote games with advanced Direct3D shaders for them and am currently wrting OpenCL code to solve complex equations on them.
It's all because of the locate, print, cls loop!
[+] [-] tobias3|14 years ago|reply
You can view "coding" as...
...an extension of mathmatics -- The ability to express an algorithm in a way that a computer understands it.
...an engineering discipline, where you build complex products by appliying good practice.
The first thing, can and should be tought at school. In fact where I live it is tought there. Needless to say it has the same reputation as math...
The second thing is something you have to study and become an expert in, because if you are not companies loose money or you might even kill people.
[+] [-] kareemsabri|14 years ago|reply
Is this even true? I think it's pretty well documented that the vast majority of the population actually has a high chance of failing. Look at failure rates in intro CS courses. Remember this?
http://www.codinghorror.com/blog/2006/07/separating-programm...
[+] [-] mns2|14 years ago|reply
[+] [-] tgrass|14 years ago|reply
[+] [-] hesselink|14 years ago|reply
The same goes for coding. It will get you thinking about a lot of things that really matter to your life and the world.
[+] [-] debacle|14 years ago|reply
[+] [-] islon|14 years ago|reply
[+] [-] k_kelly|14 years ago|reply
And none of it is easy or obvious. Dijkstra said teaching computer science was absolute cruelty because it does not truly reflect anything else in the world.
If you are going to work with computers don't think that an email server is an online mail room, don't go down the road of thinking that copyright law holds from one medium to the other because the idea behind the product is the same.
Don't think that skype is a telephone, don't think that facebook is the beatles of today, do know what something is, do know that the only intersection between life and computers is via maths and logic, do understand that these things matter now and will matter in the future.
[+] [-] DennisP|14 years ago|reply
If you don't know how to code, it probably seems perfectly reasonable to have a computer that you can't program yourself, with everything locked down. If that's the future you want, then sure, tell politicians to leave the coding to the professionals.
If you can code, you start to see the computer as a machine that can do anything you want, instead of just the things some app store makes available to you. That freedom is addictive. You start demanding it.
Cory Doctorow's fears about the end of general computing will come true unless lots of people get addicted to that freedom. http://boingboing.net/2012/01/10/lockdown.html
[+] [-] grovulent|14 years ago|reply
http://reviewsindepth.com/2011/04/why-everyone-should-learn-...
I really think the issue is deeper than current commentators are addressing.
[+] [-] pefavre|14 years ago|reply
[+] [-] brudgers|14 years ago|reply
I think Atwood's point is valid in so far as the world probably doesn't need politicians coding the software by which government services are provided. Nor do we need everyone writing their own web pages, one GeoCities was enough.
On the other hand, it seems to me that programming is going to increasingly be seen as a part of basic mathematical literacy. It's just a whole lot easier to solve a layered arithmetical problem with javascript than with a conventional calculator.
In other words, most people should try to learn the lightweight scripting which allows for better exploitation of all the computing tools.
[+] [-] unreal37|14 years ago|reply
Perhaps learning to code is a gateway to understanding technology. But that's a pretty steep learning curve just to explain to someone how a web page is generated and served.
To keep the plumber analogy, I'd be a better homeowner if I understood what all the pipes in my house do, and the importance of proper care and maintenance. Or when something breaks, how to turn off the water main without calling 911.