9 ms·
On Atwood's Please Don't Learn to Code
- fogus 14y agoThe best part about the general population attempting to learn to code is that there may be fewer people who think programming is magic.
- AndrewDucker 14y agoExactly. If more people have an intuitive understanding of what "coding" is then that makes professional coders' lives a lot easier.
- sasha-dv 14y agoBut the worst part is that we may have more of unskilled and unaware of it.
- glesica 14y agoExactly. This. <arbitrary Internet jargon indicating agreement>. This article is the best-articulated explanation of why programming should be a core part of the college, and even K-12 curriculum I have ever seen. I just can't agree more. An anecdote. When my girlfriend was still in school she needed to collect a great deal of data for a project. It was available for sale from industry groups and such, but she didn't have tens of thousands of dollars for a membership. So she resigned herself to harvesting it manually. When I noticed what she was doing I pointed out that I could make this process easier for her by writing a small computer program. A few lines of Javascript and Python later she had her data, and in a small fraction of the time it would have taken her otherwise. I explained, in general terms, what was going on in the program and why it worked the way it did, and explained some of the changes I could make if she needed it to work differently. The programming involved here was not in any way difficult or clever. The interesting thing was that she had never even considered the fact that her problem could be solved using computer programming. She commented to me a couple months later, after I'd helped her with a couple other small problems in the same vein, that she had started to see problems that could be solved easily with a little bit of code everywhere she went. I didn't coach this response out of her, she was honestly amazed at what could be accomplished and she continues to view the world differently because of this exposure. Now, she certainly hasn't become a "computer programmer" since (and she likely never will). But gaining a basic understanding of what can be accomplished using programming tools has actually changed the way she views problems. Edit: I noticed people are concerned that having too many people with just enough knowledge to screw things up might be a bad thing. In my girlfriend's case the opposite has been true. She hasn't all of a sudden decided she can solve every problem by writing some code (or convincing someone else to write code). On the contrary, she actually has a better appreciation for how computer programs work and why writing a new one may not be a good idea in all cases. For example, she understands why a custom application requires maintenance, and that maintenance isn't just some trivial thing that you hire an intern to take care of. In fact, she has actually talked her boss out of having new applications created because she realized that the projects would likely end in failure.
- tomcorrigan 14y agoYou have missed the point. Your girlfriend did not need to learn to program in order to discover what can be achieved with a basic program. For the common woman or man the revelation of computing comes from seeing what can be achieved, not how it is achieved.
- angersock 14y agoYou cannot in good faith separate the what from the how when passing on the "revelation of computing". To do so promotes ignorance among the populace.
- freehunter 14y agoIt was basically one of the best days of my life when I was explaining to my grandmother a project I did at work. I said "I wrote some computer magic to make this job easier". She pointed to my laptop and said "can you show me? Can you explain how this works?" My grandmother was a homemaker wife to a farmer her entire life, and uses the computer simply for email and pictures of my newborn niece. She might not be able to write a single line, but when I was explaining it at a very high level going through the code, it felt like she was trying to see how the computer would think. She's still of the belief that a computer can think on its own and we're simply asking it to do something for us (like you would a horse on a farm), but she really did want to know how I could teach a computer to do something it didn't know how to do before.
- craigvn 14y agoConsidering the proliferation of religion, there are bigger magic issue facing the world than coding.
- delinka 14y agoCan I do this? Am I within HN etiquette to paste my post in another story? original here: http://news.ycombinator.com/item?id=3976688 http://news.ycombinator.com/item?id=3976688 ===== Please learn to code. Also, learn to change your oil and maybe your spark plugs; learn to cook; learn to replace buttons on your shirts; learn to fix your leaky sink and plunge your toilet; learn to plant flowers and tomatoes; milk a cow; shovel some dirt; experience driving a tractor, both the kind in a field and the kind that pull tons of cargo down the expressway ... Get out of your comfort zone, live for a minute in someone else's shoes and maybe, just maybe, you'll learn to respect the work that other people do and be willing to pay them for it - they deserve to be paid for their Work. Yes, sitting behind a desk all day bringing brainpower to bear on saving the company money is Work. Driving 11 hours a day is Work. Grilling that steak and walking it to your table is Work. It's all Work because it takes us away from our families, because it's so well regulated that it adds stress, because we'd rather be doing other things but the bills have to be paid (i.e. we have to pay other people for the Work they do keeping our lights on, our Internet connected and our water reasonably clean.) So, please, learn to program. Then, when you need software built, you'll know why you hired me for "so much" and how much trouble I'm saving you.
- deleted 14y ago[deleted]
- Tyrannosaurs 14y agoThe problem is that the list of things you should learn, as you imply, is endless. There's a reasonable case for learning literally thousands of skills to allow you to improve your life, understand what is possible or why something is non-trivial and there simply isn't the time to learn all of these things. As people who have embraced technology we all see the benefits of it and it's foremost in our minds as to how useful it would be if others did the same but how many of us have really weighed up the benefits of someone spending 20 hours learning basic coding against 20 hours learning to cook, or plumb, or speak a foreign language, or understand physiology, or how to listen, or a safe driving course, or plastering, or gardening, or understanding statistics, or history, or spending that time with a friend. It feels to me to be a gross generalisation - it's really useful to me therefore it's really useful - but without knowing more about the person in question, their life, their issues, how they think, that's really all it is.
- mdonahoe 14y agoeveryone should have a programming class in school. Bio, chem, history, algebra, programming, geometry... Fits in nicely.
- chris_wot 14y agoHe wants to know if there are Knuth posters. There are. See this one: http://laager.firedrake.org/wardrobe/nils_knuth.jpg http://laager.firedrake.org/wardrobe/nils_knuth.jpg
- esmooov 14y agoI wanted to add this to my original post because I think it sums up my point nicely: "That which interests us in a given situation, that which we are likely to grasp in it first, is the side by which it can respond to a tendency or a need. But a need goes straight to the resemblance or quality; it cares little for individual differences. To this discernment of the useful we may surmise that the perception of animals is, in most cases, confined." - Bergson from Matter and Memory Constraints on what we broadly know and understand are constraints on our contact and perception of the world. We can't live in a digital world and be blind to the recursions and graphs in the furniture.
- deleted 14y ago[deleted]
- Maascamp 14y agoThis point seems to make the same assumption I've been seeing across HN that programming is somehow more _special_ than other fields/creative outlets. All of his points are the same for people who lack a deep understanding of physics, which quite frankly is far more relevant to our every day world. I don't think you should ever discourage someone who _wants_ to program, I just don't think it's knowledge that everyone needs. Getting a general understanding of the way computers work (high level) would be far more useful to the vast majority of people.
- esmooov 14y agoI like this point. It is an important distinction and a good comparison to a related area, physics. Two thoughts, though, that I'd like to hear your thoughts on: 1. Don't we all learn physics? At least basically in school we learn about inertia and atoms and velocity. Sure we don't learn the hard stuff and our understanding is woefully incomplete. But the analogy would be "the physics we learn in school" and "things like conditionals, sets, graphs, types". 2. The utility curve of physics is a little different than that of programming. Both contextualize the world and give you richer understandings of it in a similar fashion. However, physics stops solving everyday problems sooner than programming does. I have never whipped out alternative spacetime topologies to solve an everyday problem. I have written tons of bots and things to automate my life. Dunno, just some thoughts.
- jiggy2011 14y agoYou also end up getting an intuitive understanding of basic physics by doing everyday things like throwing a ball or riding a bicycle.
- esmooov 14y agoRight, and this is a barrier to learning digital domains. There is no physicalization of many digital ideas but, precisely by being digital, they do not map onto physical things. I can't run into a lambda on the street or have to fix a leaky loop in my roof. Sure, everyday things touch code but there's a reason why our instinct is to "blow on the cartridge" and not "fire up the debugger"
- MaysonL 14y agoI would venture to guess that there are at least a couple dozen skills which would do the average person more good than learning to code: playing a musical instrument, learning to do order-of-magnitude estimations, operate a few power tools, basic carpentry, basic calculus, et so many cetera. Hell, just learning to spell better than the average HNer.
- jiggy2011 14y agoNot sure I agree, how many jobs are there apart from musician or carpenter where these skills would be especially useful? Now think how many monotonous office jobs are there that could be at least partly automated by a few lines of script? Also when I was at school we had compulsory music classes as well as compulsory design/technology classes that involved using power tools.
- craigvn 14y agoIt's got nothing to do with learning skills for jobs.
- basseq 14y agoThis author makes the point that general problem solving and programming are, in fact, the same thing, and you can't have one without the other.[1] I call foul on this: I bet programmers think in terms of loops, but because that's how they think. There are other ways to solve problems as well. And many of the problems the author outlines really aren't problems. My Android app crashes, or my form doesn't submit. Yes, there's code underlying those problems, but SO WHAT. Why should a layman care about memory management? Anyway, I find this a supremely short-sighted argument. But I think the crux of this whole series of discussions is around one question: Where on the spectrum of "things everyone should know" does "programming" fall? We all agree that there are hundreds, if not thousands, of things about programming on that list. Reading, arithmetic, critical thinking, civil rights, personal finance, health, history, etc. And in a world where many people are illiterate, in debt, oppressed, and so forth, shouldn't we focus on those problems first? [1] "If you don't know how to program, you filter out all parts of the world that involve programming. You miss the loops and divide-and-conquers of everyday life."
- esmooov 14y agoAh, yes. You are absolutely right that I pooched the Android memory example. Laymen might not care and it might not help them. I think a better example might be someone copying information off a website. I've seen this happen a lot. Someone will have to print off name tags for an event but there's only 10 people per page. Copy. Next page. Etc. If they understood, say, the idea of scraping, they'd see a simple batch scrape and save hours if not days. As you your other point though, about general problem solving, I think I was unclear. When I said you miss the loops and divide-and-conquers of everyday life, I was just trying -- perhaps too lyrically for my own good -- that you are unable to categorize the world into categories you do not know and cannot recognize. You can't see that the operation you do for every page could be abstracted into a loop, exectuable by a computer. You don't see that you don't need to compare all of your friends to arrange them by height, say for a sweet picture, but you can quicksort them. (Ok this is about as contrived as you can get but programmers have a hard time thinking of places most people don't see programming but we do. Because we see it everywhere). Finally, sure we should focus on illiteracy, debt, oppression etc. We are working, though, on a lot of these problems programmatically.
- dustingetz 14y ago> If you don't know how to program, you filter out all parts of the world that involve programming. You miss the loops and divide-and-conquers of everyday life. decomposing large problems into smaller ones is math. we all took 10 years of math in high school and college. a broad education is good. coding, in particular, may or may not be relevant, but certainly more and more schools include a year or two of programming in high school or college. that's probably plenty. no need to get all worked up about this.
- jiggy2011 14y agoThe problem is that most people don't really learn much math at school. Most people will learn to add , subtract and do multiplication, some will even cram their brains with equations to pass a math exam and then promptly forget it all afterwards. Programming provides a practical hands on may to introduce logical problem solving. It's something that could be used to supplement Math class. I find it much easier to understand Mathematical stuff if I have written a program that implements it.
- rohit89 14y agoYou have practical experiments in physics and chemistry but most people don't seem to remember much of them either.
- jiggy2011 14y agoI actually like Atwood's example program: 10 PRINT "I AM THE MAYOR" 20 GOTO 10 If everybody on the planet could write and understand that program, the average level understanding of computer science on the planet would have increased exponentially.
- tbundy 14y agoDepressing. Another HN attention grab. The original article was interesting. This one's just words for the sake of it. The most depressing part is that I've now validated it with a comment.
- deleted 14y ago[deleted]
- fooooobar 14y agoI think everyone who's writing responses to the original article should go to the highest place in their house and jump off and land on something very sharp, so I don't have to see all of this baloney...not that I cared much for the original, either.
- runawaybottle 14y agoHow does that old saying go, 'If you have to ask, then the answer is probably no'. It's shocking the number of people that show up on this site and ask, 'Should I quit my job and create a startup?'. Probably not. Should you drop out of college? Don't. Should you learn to code? Not really. The amount of learning resources we have in this day and age due to the Internet makes the question 'Should I learn (blank)' egregious. If curiosity hasn't compelled you to look up an intro tutorial/book, then just forget about it. The first question you ask on the internet should not be 'Should I learn to code?', it should be 'Why won't my hello-world program run?'. http://en.wikipedia.org/wiki/Analysis_paralysis http://en.wikipedia.org/wiki/Analysis_paralysis