Hacker Newsnew | comments | ask | jobs | submitlogin
Please don't learn to code (codinghorror.com)
734 points by AndrewDucker 708 days ago | comments


jkahn 708 days ago | link

I really, really disagree with Jeff Atwood here. Jeff has interpreted "learn to code" with "become a programmer". They're not the same thing. I don't think that is what this meme is about at all.

Programming is logical thinking in practise. Programming is breaking a problem set down, thinking step by step through it, thinking of edge cases, and making it work. There is nothing wrong with Jeff's BASIC example, if that is where the mayor of NYC ends up.

There was once a time when books were only read and written by an elite group. Now everyone can read - and everyone can write. There are still the elite authors that write better than the rest of us. Just because everyone can write, doesn't mean everyone is trying to be a professional author.

Computers are a part of society. To function well in society, it's beneficial to understand a little about how they work, and how to make them do things. The essence of programming is making a computer do something more efficiently than you can.

Programming isn't just the advanced stuff - recursion, pointers, functional programming, or whatever. Maybe Jeff is too far down the rabbit hole to realise this, but most people don't know what programming even looks like. They don't know how we tell computers to do the things they do. Recently I was with a customer, making notes about changes I needed to make to their application. They asked me "Is that how you make it do that?". No - that was my TODO file. And these are people that work on computers all day, every day.

It's beneficial if marketing folk understand the basics of programming when they're doing web ads. It's useful that CAD engineers know the basics so they can automate AutoCAD. Its useful that financial accountants know basic programming so they can become more efficient with analysing data.

If the mayor of NYC wants to learn to program in his spare time, why the hell not? I bet there wouldn't be the same complaints if he wanted to learn how to surf.

edit: grammar

-----

SatvikBeri 708 days ago | link

With a couple of months of programming knowledge, I wrote a program that saved my company $2MM/year. The key was combining knowledge of the business processes with some knowledge of programming. There were people with knowledge of one or the other, but not both.

I still can't write a basic app, but that doesn't matter. I can do things that provide massive value, and I wouldn't be able to do them without programming knowledge.

I think Jeff is underestimating how much time the average office worker would save simply by learning Excel Macros or some basic scripting. Learning to program is really damn valuable, especially in fields where most people don't know any programming.

-----

patdennis 708 days ago | link

I agree with this wholeheartedly. My line of work could be made much easier through some very simple software. The only reason that software doesn't exist is because (I assume that) nobody with programming knowledge understands the needs of someone who does my job. Or cares, for that matter. There aren't many of us.

I'm working my way through Ruby on Rails tutorials simply because I think there's tremendous value to be created without the need for anything groundbreaking. Just tailored.

And if I'm right, I'll be able to afford to hire someone to fix my crappy code.

-----

lifeisstillgood 708 days ago | link

If you are right there are probably a hundred people on here able to provide a working MVP alongside you and do it faster, cleaner and pick up on solutions you cant possibly know yet. Be a domain expert.

But learn to code anyway :-)

-----

patdennis 708 days ago | link

I'm sure anyone here could do that. But how many people here are looking for a non technical co-founder? Coders are solving their own problems, and until I can hack together a prototype I don't think I'll be able to draw any attention from real programmers.

-----

rapind 708 days ago | link

I think I'd actually prefer a pure domain expert who can express their business and ideas well than a half-assed programmer.

No offence, but what often ends up happening is you turn into a know-it-all client. "This should only take an hour. You just have to loop over these results and format them...".

Finding a technical co-founder is a sales process where you need to prove that it's a good idea and that you've made a significant investment yourself (I would prefer if it wasn't code) like thinking through the interface, and as many use cases / stories as you can think of, and describing in detail the problem(s) being solved.

The pitches we hate are the guys who know you through a friend who want you to make a Groupon-like application for their specific market, without having invested more than the 5 minutes it took to write it down while baked. I'm still not going to be sold on this idea even if they manage to throw together some terrible PHP site that sort of acts like a real application.

That being said, I'm in the boat that thinks at least some rudimentary programming skills would be useful for everyone.

-----

sirclueless 708 days ago | link

> you need to prove that it's a good idea and that you've made a significant investment yourself ... like thinking through the interface, and as many use cases / stories as you can think of, and describing in detail the problem(s) being solved.

That sounds exactly like the skillset of a good software engineer. This whole debate is about the fact that a whole bunch of people don't know how to break down a large problem into small logical pieces.

"describing in detail the problem(s) being solved" is about the most concise and accurate description of programming I can think of. Asking someone non-technical to do this is like asking a ramen noodle-eater to describe in detail the process of flambéing Steak Diane.

-----

rapind 708 days ago | link

I agree it's a good skill to have in many careers, software engineer included, but it is definitely not the definition of programmer. If you wanted to map this skill to a profession, I'd probably go with Business Analyst being the closest.

Breaking a problem down into solvable parts is something I was taught in math and it was invaluable. I'd written programs before and after that, so I wouldn't say that this technique makes you a programmer. Rather it's an approach you'll need to be a good programmer.

Asking someone non-technical to describe the problem they want to solve in detail is completely within the realm of reason. Non-technical != moron. Knowing how to do this, does not make you a programmer. Likewise, being a programmer doesn't make you good at this.

-----

dz13 708 days ago | link

What about knowing enough coding to understand the amount of work that needs to be put in to transform an idea into reality? Also to be able to construct the interface is easier when you know some code. Those are some reasons why I'm investing time to learn programming.

-----

rapind 708 days ago | link

I think the assumption that you will understand the amount of work needed for a given solution is part of the problem. Estimating a project accurately is NOT a skill you're going to pick up by learning a bit of programming.

As a programmer of many years, I still miss-calculate the amount of work required to solve a problem. It's something you get better at over time, but I totally sucked at it when I was starting out as a programmer. It's one of the hardest skills to attain IMO.

I think it's great that more people learn to code. I'm just saying it's not some magic faerie dust that solves all your problems. It's just another piece of the puzzle.

-----

jfb 708 days ago | link

Regardless of one's feelings w/r/t the Atwood OP, it's hard to argue that programmers often conflate programming with solving problems. They are distinct concepts.

-----

jiggy2011 708 days ago | link

"Coders are solving their own problems" , yes many are but that doesn't mean they wouldn't be better served financially by solving someone elses.

-----

patdennis 708 days ago | link

Not by me. I can't afford to pay them unless I can raise some money. I don't see how I can raise the money unless I can cobble together a prototype myself... even if just to show that my idea is viable and that I'm serious about it.

-----

davidwees 708 days ago | link

I wrote an online attendance system for my school, which often come with way more features than we need and cost in the range of $50k. It's not $2 million, but $50k is a teacher's salary. In education, that's huge. It took me 2 weeks to set up, and another 4 weeks of testing with teachers to iron out all of the bugs, but now it is used every day by all of our teachers.

I've also used my ability to code to develop learning apps for my students. It's been incredibly valuable in my career.

-----

jisaacstone 708 days ago | link

Exactly what I came here to say.

Let us not forget the difference between scripting and software. Shell scripts or bookmarklets or greasemonkey/browser plugins - These can be useful to the majority of workers.

Many have a specific problem that could be made much easier by coding but never will be address by professional coders.

-----

arkitaip 708 days ago | link

Brilliant. Thanks for sharing.

-----

crasshopper 708 days ago | link

In terms of capital + human capital multiplying your effort, programming is pretty hard to beat. Compare sales calls, meetings with important people, instructions delivered to staff, farming with tractor; even hands-free investing requires a lot of time.

I think the most similar skill to coding is writing. John Updike remarked, several decades ago, that fiction creates value without destroying anything (ok, a trivial fraction of the value). But it's clearly not just about being able to put some words on a page.

-----

larrys 708 days ago | link

"The key was combining knowledge of the business processes with some knowledge of programming."

Knowledge of programming wasn't required to save your company 2mm per year. All it would have taken is someone recognizing there was a problem that could be solved by programming. If you did the job with a couple of months of programming knowledge someone could have been easily hired to do this job, right? They just had to realize there was a problem to be solved.

It seems to me that someone who had any knowledge of what computers could do could have saved your company that money. Just like a person working in a commercial kitchen that wasn't a carpenter could have hired people to improve efficiency and save money.

-----

ceol 708 days ago | link

Knowing that programming could solve a problem requires knowledge of programming. Someone with zero programming experience doesn't look at a problem and say, "Yeah I can write a script to solve that."

-----

larrys 708 days ago | link

Sorry you're wrong based on my many years experience with dealing with non-programmers and this exact situation.

Seeing what is already being done with computers on a daily basis gives people knowledge of what can be done without knowledge of programming. Knowing programming but not enough could also be an impediment as well. You may not realize there are simple ways of solving an issue that to you with your limited knowledge seems like it could take a tremendous amount of effort. There is an expression "a little knowledge can be dangerous".

And how many people are going to take the time to learn to code enough anyway to see all the possibilities?

-----

Zikes 708 days ago | link

I'd say they're right, based on my many years experience dealing with non-programmers and this exact situation.

Knowledge of programming and the business are both important and key here, but it's the slant towards business that can give someone the leg up on saving companies money. It isn't always about simple data entry or automation, it's going about your daily job with the insights and skills that basic programming provide that allow people to recognize where a new script or application could improve their business process in some way.

Business processes can be extremely complicated, and you can't easily impart business knowledge and processes upon a programmer in a manner sufficient to give them the ability to recognize where their skills can be best applied in a business.

-----

saraid216 708 days ago | link

If "a little knowledge can be dangerous", why learn anything ever? That's a really pisspoor reason to tell people to be ignorant.

-----

89a 707 days ago | link

"Seeing what is already being done with computers on a daily basis gives people knowledge of what can be done without knowledge of programming"

Not true at all, people can use computers every day of their life in their job and still not even understand where a window goes when they minimise it.

-----

sevenstar 708 days ago | link

The guy below said it before me. I have seen things that could be handled with a good programmer, and I am not one just yet.

-----

ceol 708 days ago | link

But you have knowledge of programming, correct? Or are you saying you have absolutely no idea how to program?

-----

sevenstar 708 days ago | link

I have no knowledge of programming.I downloaded Greenfoot to start learning Java in my spare time and I am learning from step one.

-----

myblake 708 days ago | link

Sure, I think he's also underestimating what percent of average office workers actually do have some of the talents and inclination to become skilled professional programmers. Despite excelling at math and doing some basic programming (in qbasic in fact) as a kid, it didn't occur to me to major in CS until I was halfway through college. I think broader exposure can only help people realize that programming is something they actually are interested in.

-----

andrest 708 days ago | link

Well said. I wholly agree with "learn to code" != "become a programmer".

Learning programming has helped me in many other walks of life. It has taught me that every problem can be tackled with a systematic approach, given enough time. I like to think that helps me to notice things that would have gone unnoticed without. More than anything else, it is this approach, enforced by programming, for which I hold gratitude. Critical thinking.

-----

LostInTheWoods2 708 days ago | link

I see ... so we're watering down the profession to the point where it is all inclusive. Can I start calling myself a doctor the next time I administer first aid?

-----

derekp7 708 days ago | link

To turn your statement around, are you saying that no one should bother learning first aid unless they are planning on becoming a medical professional?

-----

LostInTheWoods2 708 days ago | link

I am trying to say there is a distinction between those who are trained professionals and those who have basic knowledge. I am getting the feeling people are taking this issue personally. If you want to become a trained professional, please do so. As for me, I have paid my dues and consider myself one.

-----

sirclueless 708 days ago | link

Well, it is your camp that is equating "learning programming" with "becoming a programmer."

I don't know why you should feel threatened or defensive about the fact that a lot of people want to understand your basic skill set. I don't know many mechanical engineers who discourage people from learning to fix their own cars.

-----

mithaler 708 days ago | link

A good friend of mine recently tweeted[0]: "Those who do not study history are doomed to repeat it; those who do not study mathematics or programming are doomed to repeat themselves."

[0]: https://twitter.com/#!/Sniffnoy/status/201187266197065729

-----

Sniffnoy 708 days ago | link

Oh hey, so this is why this is getting so many retweets.

-----

ak39 708 days ago | link

Awesome. Thanks.

-----

sasha-dv 708 days ago | link

>There is nothing wrong with Jeff's BASIC example, if that is where the mayor of NYC ends up.

Are you sure about it?

What if he suddenly starts thinking that he actually knows what goes into building software?

I have this horror scene in my mind where Bloombergs of this world are terrorizing their developers, with their "deep knowledge" of computers that they picked up by doing an online JavaScript course, I mean "code year".

Democratization of programming is a lofty ideal, but in the reality anybody who wants to learn to code will do so if he has a computer. This latest fad is nothing more than a trivialization of a complex skill and an attempt by some non-technical hipsters to be even more hip. If plumbing was cool we would see the same people vowing to learn how to plumb this year.

-----

reeses 708 days ago | link

Keep in mind how Bloomberg made the majority of his wealth. He has an idea of how software and hardware are made, deployed, and updated.

-----

sasha-dv 708 days ago | link

Bloomberg = a hypothetical non-techy boss

-----

reeses 708 days ago | link

I can't tell if you meant that in a pejorative way, but are you sure? BSEE, started a "big data" company a thousand years ago which is still the "Xerox" of its industry.

I doubt he solders today, but he has the background to understand the interplay of software, hardware, delivery, etc. He has been noted to be very big into prototyping technology with his company's platform. You might say agile.

-----

bengillies 708 days ago | link

> Programming is logical thinking in practise. Programming is breaking a problem set down, thinking step by step through it, thinking of edge cases, and making it work.

If the benefit of everyone learning programming is logical/critical thinking, breaking a problem down and thinking of edge cases, etc, then why not focus on teaching everyone how to do that instead?

A good way of doing that may very well be teaching some form of programming, but unless you explicitly state the goals up front a lot of people are very likely to miss the point completely and either teach just programming, or learn just how to code.

-----

slantyyz 708 days ago | link

You could do that, but one of the best things with coding is that you get instant gratification and constant feedback.

"Hey look, my computer just said Hello to the world!"

The ability to play with scenarios while exercising your logical critical thinking and to get instant feedback is essential to learning.

I liken it to the difference between learning photography in the film days vs. digital. I bought an SLR in the late 80s but it was very expensive and time consuming to get good. I had to buy and use up a roll of film, take some notes about when, where and how I made the shot, then pay to get them developed. With digital, I see the shots I make instantly, and I can make mistakes and try again without incurring constant film and development costs.

-----

mindstab 708 days ago | link

> most people don't know what programming even looks like

My mom recently (2012) just asked me if when I'm programming, the screen is full of symbols, kind of like the matrix.

Many people I know consider computers "illogical". We could do a lot to help people understand how a computer works, and the best way is through programming.

-----

rozap 708 days ago | link

And I convinced a friend of mine that in Python, we only code using the letter "s". Why do you think it's called Python, after all? She believed me.

-----

iharris 708 days ago | link

Actually, you can get pretty close by coding in Semicolon:

http://pksunkara.github.com/semicolon/

-----

wes-exp 708 days ago | link

To be fair, all programs sort of get reduced to 1s and 0s. Given this fact, I don't consider the idea of coding only with the letter 's' that much of a stretch. You know, in lisp I code with parentheses!

-----

dkersten 708 days ago | link

I know you're joking and this isn't really too relevant to your comment at all, but the 1s and 0s thing that non-techies fixate on is just stupid.

Programming (and computers in general) have nothing to do with 1s and 0s and saying stuff like "at the end of the day, its all 1s and 0s" is like saying that at the end of the day banking just comes down to scrap pieces of pressed tree pulp or a bakers job is just about a bunch of grain or a teachers job reduces to sitting in a room for a few hours or whatever silly analogy you want to dream up.

All of these things are implementation details that, really, are irrelevant to pretty much everyone everywhere. If you are dealing with low level digital systems you will encounter 1s and 0s (and analog voltage and resistance and capacitance and a whole lot more besides), but usually (especially when building something complex like a computer) this gets abstracted away pretty quickly.

-----

wes-exp 708 days ago | link

For the record, I was mostly serious. I was half-joking about the Lisp part. This is not really related to your comment, but just to clarify: I'm serious that coding using just 's' doesn't sound that unreasonable. If you're a professional programmer, sure, you know you need more characters than that to be productive. But I wouldn't fault a lay-person, even one who has some knowledge of coding, for believing someone who said they programmed using only 's'. Plenty of weird programming languages are possible. Take a look at http://rosettacode.org/wiki/Reverse_a_string#Brainf.2A.2A.2A.

-----

dkersten 708 days ago | link

I get that, I meant you're joking in that I don't think you believe that programming or computers really does just boil down to 1s and 0s in a way thats at all relevant to programming - there is, of course, a tiny grain of truth in that, but not one that is IMHO at all important, though most non-techies don't know that and they're told that computers are just 1s and 0s.

I did not at all think you were joking when you asserted this:

Given this fact, I don't consider the idea of coding only with the letter 's' that much of a stretch.

Which I completely agree with.

-----

michael_fine 708 days ago | link

Also, while being a joke, there is a language that uses only semicolons: http://pksunkara.github.com/semicolon/

-----

wes-exp 708 days ago | link

Actually, APL programmers do code with a screen full of symbols.

http://rosettacode.org/wiki/Pascal%27s_triangle#APL

I'm beginning to think your mom is smarter for not knowing how to code, because she hasn't been biased yet by exposure to mainstream tools.

-----

MiguelHudnandez 708 days ago | link

I understand your point, but I am having a hard time accepting use of the word "smarter" to describe ignorance.

Perhaps there is value in a blank slate, but that is definitely not being smart.

-----

saraid216 708 days ago | link

There's a usefulness to coming at a problem from a completely new direction, but it's orthogonal by virtue of being orthogonal. Why is the alphabet the best way? Couldn't we express ideas better? (And I actually keep an eye on the constructed language space, so I actually know people who say, "Yes.")

-----

danso 708 days ago | link

Thank you for saying exactly what was in my head and saving me some typing. Learning to code is to being a professional programmer as learning to write is to being a journalist/editor

-----

sparknlaunch12 708 days ago | link

Agree with both sides. The meme of everyone needs to learn code needs context.

Should everyone have an understanding- probably. Should everyone build a public bit of code - probably not.

Coding as a hobby is great but making strategic decisions still requires experts.

-----

tibix 708 days ago | link

Exactly my thoughts.

For me it was like reading: "Writing is not a basic skill; we have plenty of books out there. Most people, when they learn to write, start writing books that are of awful quality!"

-----

eyko 708 days ago | link

Also wanted to come here and say this, thanks for pointing it out.

It's like novelists novelists being afraid of people learning to write because then they'd take their jobs or scientists being afraid that people learnt physics, mathematics, cosmology...

One case I can think of... religious priests are sometimes afraid of people actually reading their religious books aren't they? :-P

-----

primecommenter 708 days ago | link

I don't understand the distinction you raise in the first paragraph. Coding is programming. Just because everyone can divide doesn't mean everyone is trying to be a mathematician, but I think everyone should (at least have the opportunity to) learn long division. Programming may not be the fourth "R", but maybe "Research" is!

-----

tetha 708 days ago | link

I think the important distinction would be how much additional knowledge you need to solve the problems you solve. I'm gonna call the "coding" "scripting" for now, and the "programming" "programming", because these are older and in my opinion better terms.

Scripting basically takes the problem and a language and directly transforms the problem into a working program. You don't need fancy algorithms, you don't need fancy background knowledge in programming topics, you need python, a python dictionary and directory access (for example). Or Excel and VB and a few arrays and a formula.

On the other hand, heavier programming would require more and more thought when actually implementing a solution to a problem. Efficiency might become a large concern earlier, you might need more complicated algorithms sooner and so on. Think about every occasion where you transformed a problem into a graph problem and applied some graph search, or graph coloring to this problem.

If I understand "coding" as "scripting" and "programming beyond coding" as "programming", the distinction makes sense, and it makes sense to call for more people with the ability to script simple things, because scripting is not too hard and saves a lot of time.

-----

jkahn 708 days ago | link

When I said programmer, I meant a professional programmer - as an occupation.

-----

primecommenter 708 days ago | link

As opposed to a professional "coder"? (I also see "programmer" as a more distinguished title and I prefer it to "coder" (and even "software engineer"), but I don't understand any of these terms to have any generally-accepted definition; personally it is only a matter of taste.)

-----

marcusf 708 days ago | link

As opposed to vocational coding/programming/hacking. Seems like you're being facetious for the point of it?

-----

primecommenter 708 days ago | link

I'm not trying to be facetious, just misunderstanding whatever point original commenter is making. "Most people don't what programming even looks like"? I don't think that is true because most people can search for code samples if needed.

-----

jkahn 708 days ago | link

You're missing the point there: if someone's looking for code samples, they're already learning to code.

-----

primecommenter 708 days ago | link

"If the mayor of NYC wants to learn to program in his spare time, why the hell not?"

I agree totally, not only would it be good for him but it sets a good example for his constituency (because as a basic competence it is good for anyone).

-----

mitsche 708 days ago | link

You seem to be a bit disconnected from reality. If I told any one of my friends who are not programmers by trade to look for code samples, they would either not understand what I'm talking about, or simply not know where to look.

Most people don't even have the slightest idea what kind of problems software can solve. Jeff Atwood seems to interpret "learn to code" as "learn to set the DYLD_LIBRARY_PATH variable". Others—myself included—think that having at least a bit of exposure to programming provides you with a better overall understanding of how computers operate.

I don't think it's necessary to have that understanding. But neither is speaking a second natural language. Apart from acquiring the skills themselves, learning any of those will teach you meaningful things about yourself and your environment, which seems to be worthwhile.

-----

dkersten 708 days ago | link

Most people don't even have the slightest idea what kind of problems software can solve.

I was once told by a good friend of mine in industry X[1] that people in that industry have money but they don't know whats possible - they don't know what could be automated or calculated with computers and so they don't do it, even though it would provide a lot of value to them.

[1] In general, I think the industry is irrelevant and this applies to most industries that don't already directly employ programmers. There are often already some high tech firms that do and they have a huge advantage over the masses that don't. In this particular case, the industry was the betting (horses) industry and there are actually plenty of firms that are high tech and hire programmers and mathematicians and such to create complex software, but I think his point is that there are still a lot of smaller firms and people who spend a lot of money that still don't know what is actually possible. He since moved to a much more high tech company, but he still does most (if not all) of his complex risk assessment modeling in excel.

-----

sanderjd 708 days ago | link

You are very wrong about this - people who know how to "search for code samples" know what programming looks like, but they are far from the majority.

I, for one, wish more people understood what programming "looks like", so that I could actually talk to people about what I do without them being completely confused. People can visualize what nearly every other profession does day-to-day, but what programmers do is a complete mystery to most people. I tell people that I'm a writer for a language with a very structured grammar, but that's only part of the story.

-----

mhurron 708 days ago | link

> People can visualize what nearly every other profession does day-to-day

No they don't. They know an architect draws pictures of buildings. An engineer draws pictures of a bridge and hammers away at a calculator (actually the first thing most people think of with engineer is probably either boats or trains or Star Trek). A banker sits and acts like a total dick. What architects, engineers and bankers really do is a complete mystery to people.

When someone asks what you do and they do not have any domain specific knowledge, you say you write applications, you're a programmer. That's all they want to know, they don't care what the details of what you write are. They don't want to know the differences between languages. They don't want to know what a structured grammar is and why you care about it. Those are details of your job, that's not what they were asking.

"I'm a system administrator. I keep computers working." That is the maximum extent people want to know about what I do. They're being polite in asking, they don't really want to know details. And at the end of the day they still think that all I do is sit on my ass and look at a computer screen. Just like the way they visualize a programmer, and a banker and a ...

-----

sanderjd 708 days ago | link

I don't buy it. An architect designs structures - most people don't know what the actual work of designing a structure looks like, but they know what a design of a structure looks like. An engineer figures out how to make a structure stand - most people don't know what the process of making a structure stand is, but they know what a standing structure looks like. A banker moves money around, people don't know how that is accomplished, but they know what a loan looks like. Most people I've met don't have any idea what a computer program looks like, not even that it involves text. I didn't say anything about the differences between languages, and I think you misunderstood my comment about "structured grammar". I didn't mean it as a specific feature of what I do, but as a generic feature of what a computer program is. I only meant that the closest analogy I've found to programming that most people can relate to is writing.

"I keep computers working" and "I write computer programs" are on opposite sides of a conceptual understanding chasm - most people have tried keeping computers working, even if they hated it and failed miserably, but most people haven't tried programming, and don't really know what the concept means.

-----

secoif 708 days ago | link

Ignore the word, what does it even matter? He's simply taking about someone taking it up as a profession vs knowing roughly how it works

-----

happimess 708 days ago | link

Think of the difference between learning to cook and becoming a cook, or learning to golf and becoming a golfer.

One refers to picking up some skills for any of a variety of reasons. The other refers to embarking on a career.

-----

treenyc 708 days ago | link

Being a programmer is really really really fun the first few years. Kinda like playing video game. However, it eventually become something that is can be unhealthy. It really undermine other sensory input from the body. And primarily focus on the mind and finger interaction.

However, given the current state of the world, where many things are in one way or another controlled by software. It would be a good idea to have a skill related to coding, just to know if something is possible with code. And understand that it is not just magic under the hood.

-----

demian 708 days ago | link

Even "programmer" is, in my opinion, too broad of a term. And the difference between "coder" and "programmer" is not really that clear.

Every time a good term, besides "coder" and "programmer", appears, it gets overused by the wrong people and losts it's power. I strongly believe that what Jeff is describing could be called an "Information Systems Designer", but the term "Information Systems" has such a baggage of bullshit consulting that it can't be used.

-----

dgregd 708 days ago | link

Exactly. Not everyone is going to be an engineer, accountant. Yet everyone learns math at school. Same for biology, physics ...

-----

slantyyz 708 days ago | link

I look at it as a useful life skill like cooking your own meals, doing your own laundry, changing a tire, making minor household repairs, etc.

-----

JacobAldridge 708 days ago | link

I agree - and would specifically add things like changing the washer on a leaky tap, or fixing the toilet float...you know, basic plumbing for "those who aren't plumbers".

-----

kaiwren 707 days ago | link

The problem is that the underlying message implies that the Mayor of NYC can be gainfully employed as a programmer after a year of solving code snippets. Which is BS and very misleading. More at http://blog.sidu.in/2012/05/everyone-should-learn-programmin...

-----

Feoh 708 days ago | link

I couldn't agree more. If nothing else, learning to code is an incredibly useful thought experiment for anyone who enjoys using their brain in new and interesting ways. So what if you never make a cent? How many of us started coding simply because we were passionate about it and it got us excited?

I can't tell you how excited I was when I wrote a simple joystick driven paint program for my Atari 400 in Atari BASIC :)

-----

thijsc 708 days ago | link

I actually just had to do some basic plumbing, with duct tape :-). I'm sure glad I understand the basics of how water flows through a pipe.

-----

YmMot 708 days ago | link

This largely misses the point. I agree that it's not "essential" and not everyone should do it, but it's still more valuable than I think Attwood gives credit for.

I'm perhaps in a unique position to comment, having recently taught my girlfriend to program. So I can talk about how that played out.

My girlfriend understands menus, she knows about links, she can install software, she can use word, she can type away like no other, and even fix some problems. If you watched her using a computer it'd seem like she had a pretty good affinity with this black box.

However, I don't think most programmers realize what a holistic approach the average person (even a relatively tech savvy one) takes to computers. They only understand them at the highest level. They develop fetishes and incantations to fix things. When something goes wrong my girlfriend will turn the computer on an off. She'll turn the router on and off. Etc. Or just click "ok" until it stops complaining. It often fixes the problem, but it's just something she's learned to do with little understanding. She goes to the store and can pick out a decent phone or laptop, but only because she's developed an intuitive semi-understanding of the lingo. This one has more gigs, that's better...etc.

The computer will do things they don't understand, except some vague notion that the computer is "dumb".

I asked her one time how a computer works because I was legitimately curious how people without any instruction in comp sci etc visualize it. She had absolutely no idea of even the most fundamental workings of a computer except that it had something vaguely to do with "ones and zeros".

I taught her binary. I taught her boolean logic. I showed her binary math. I gave a very basic example of how you can use circuits to do binary math. I made her sit at a desk and act as a processor. Then I explained the concept of bootstrapping.

Then I taught her a little bit of Python.

Enlightenment.

She understands garbage in - garbage out. She understands dependencies. She understands algorithmic complexity. She understands types and formatting...and much more. (at least generally, which is enough).

This mysterious box no longer seems capricious and opaque. She has a much better understanding of why her computer behaves the way it does and therefore feels more at ease. Sure she can't magically fix anything, but she's recognizing general patterns more and more.

She installed Ubuntu recently in fact, and has started writing Python scripts (and Bash!) to assist in assorted data processing tasks she used to do by hand. When my girlfriend needed to update batches of reports, she would up each one BY HAND and change them. Using a computer was frustrating and scary. Learning coding won't improve her life? Seriously?

Would it make him a better mayor? Not necessarily but it sure could help. I'm sure he uses a computer and I'm willing to bet the less time the mayor spends screwing around with a computer or waiting for tech support the better. Likewise, I'm sure he has all sorts of tedious tasks which don't warrant third party software but which could be tackled by a nice Perl script. That doesn't even take into account the boost in (general) analytical thinking that comes from programming. Ditto for potential refreshment in Math.

Who says it needs to make him a better Mayor anyway? What if he just wants to be a better person?

In addition to being a programmer, I happen to be a musician as well...which puts me into contact with a lot of artists. I'm always surprised by how much they could benefit learning programming because a lot of art involves hacking; creating weird one off contraptions...often requiring lots of tedious work. Many want to experiment with technology and art, but are unsure how. Processing could blow some minds. Ditto Overtone.

Using a computer is largely about software; and software is similar to arts and crafts in that it's a reflection of the creator and the tools they used.

Learning about an artist helps you interpret the meaning of their work. Learning about the techniques help you evaluate and appreciate their work.

Learning to code makes you sympathize with the people who wrote the software you use. It helps you understand how software is put together. Which is good, because the more you sympathize with the author and the more you understand how it fits together the easier time you will have using it.

To be fair there are a lot of things I feel everyone should learn. I think it's fair to say though that out of all the ones you could pick, learning to program will be more beneficial practically relative to most others.

> Research voraciously, and understand how the things around us work at a basic level. Communicate effectively with other human beings.

I think this is the heart of the misunderstanding between sides. Learning to program is actually the first step in that. He mentions having "basic internet skills" as a necessary life skill. Learning some programming will greatly facilitate that.

Likewise programming will introduce concepts and develop skills that help you understand technology in general. It even helps in in non-technological areas. It facilitates communication because it forces you to confront and think about how difficult it is to communicate certain things clearly.

-----

jiggy2011 708 days ago | link

Interesting, I've always though that at a conceptual level computers are not especially complicated machines (for example a turing machine) and most reasonably intelligent people shouldn't have any problem understanding them.

It's also interesting that you mention the holistic approach because this is exactly how many people view computers, in the same way they might view a mechanical device. I have seen people reason "If a reboot doesn't fix it , maybe 2 or 3 reboots in quick succession will".

It's also scary how many professional IT people seem to have a cargo cult understanding of computers. I've seen people do all kinds of crazy incantations , for example troubleshooting a network problem by re-installing OS software on multiple workstations and trying different combinations of firewall / AV and network driver software when in fact 5 minutes of methodical probing with wireshark would have made the issue obvious.

-----

YmMot 708 days ago | link

Indeed, the basics are all relatively simple...in fact a lot of the basics are things people do intuitively...it's just they've never really been told or thought about how it would work as a generalized computing machine.

-----

jiggy2011 708 days ago | link

I think the problem is that often when people attempt to explain "computers" they end up explaining things about the Windows operating system like the registry and the "C drive" etc.

Of course this stuff is massively complicated and the majority of HN readers probably don't really understand the whole thing so what hope would some random person have?

If people could understand a basic turing machine type system and possibly write simple assembler to run on it then they could be told "this is all your PC, your smartphone and your iPad are just they have lots and lots of window dressing".

-----

derrida 708 days ago | link

One of the best explanations I've seen for the question 'how does my computer get from these zeros and ones to these windows' is 4 pages in Godel, Escher, Bach by Douglas Hofstadter. (Starts at 287, all editions pagination is the same)

-----

groovy2shoes 708 days ago | link

> It often fixes the problem, but it's just something she's learned to do with little understanding.

This reminds me of a hacker koan:

    A novice was trying to fix a broken Lisp machine by 
    turning the power off and on.
    Knight, seeing what the student was doing, spoke 
    sternly: "You cannot fix a machine by just power-cycling
    it with no understanding of what is going wrong."
    Knight turned the machine off and on.
    The machine worked.

-----

bigfudge 708 days ago | link

That's really interesting, as I had a similar experience. However it has downsides: I now find it much harder than I used to to disengage from details and look at the big picture. Knowing how something might be implemented or could be taken apart really distracts me from thinking about whether it's important, or useful or beautiful. Perhaps it's just a temporary phase, but the whole Zen and the Art of Motorcycle Maintenance keeps coming back to me — I used to be like the friends who couldn't change a spark plug and were happy in their ignorance — now I'm changing spark plugs all the time.

-----

neic 708 days ago | link

She understands garbage in - garbage out. She understands dependencies. She understands algorithmic complexity. She understands types and formatting...and much more. (at least generally, which is enough).

This mysterious box no longer seems capricious and opaque. She has a much better understanding of why her computer behaves the way it does and therefore feels more at ease.

This is exactly the benefit from people learning to code: People don't have to actualy code, they just have to have some understading of how a computer work and what problems is easy to automate (as her report updates) to get more productive in their own field. If they can code it on their own, it is only a plus.

-----

Derbasti 708 days ago | link

Well spoken, but not all people are like your girlfriend. To most people, learning a bit about programming would primarily be an exercise in frustration.

-----

shadowmint 708 days ago | link

Hate to say it, but that seems like a rather arrogant thing to say.

I'm great believer that anyone can get to be _reasonably_ good at something if they invest enough time and effort into it.

It's the classic logarithm curve; when you have no skills in a field, you can learn a few skills really easily (steap curve). Then, as you get better, your progress for effort-expended goes down until you're basically a domain expect (flat line; no matter what you do you basically dont get any better).

This applies to ANYONE on ANY field; the curves are just different; and I'd argue the steep part of the curve is pretty long for programming (compared to say, I dunno; learning differential equations).

Despite the great them-and-us divide that geeks (and here I generalize based on the geeks that _I_ know personally) seem to have to 'other people' who are 'dumb' ... people are, in my experience, generally smarter than you'd expect.

I'd rather encourage people to learn a little bit, than tell them to go away because they're probably not smart enough. <-- This is arrogant as f*, and if I see someone do it, it makes me angry... although, I realize you weren't directly saying that, so please, take this as a general comment, not as a criticism of you personally. :)

-----

Derbasti 708 days ago | link

Sorry, but back at the university, I gave several semesters of tutorials in programming for beginners.

It's not that people are 'dumb' or 'smart'. It's just that some people have an easier time with some topics than others. I have seen people who really struggeled with the basic concepts after three courses (not my courses ;)). Others understood it far quicker and with much less work.

I'm not saying that these people were dumb. They usually excelled in other areas, just like I am seriously unable to keep a plant alive for more than a few months (believe me, I tried!).

As I said, to some people some topics are an exercise in frustration. It's not that hey can't learn it. It would just be really painful and boring to them.

-----

YmMot 708 days ago | link

That's a fair point. It's not so much that everyone will benefit from learning, but that they won't if they don't try. I also think that most people would get something out of it, though admittedly in some cases not much.

-----

jonathansizz 708 days ago | link

Really? I'm always sceptical when people use the phrase 'most people' to support their opinion, while presenting no other evidence to back up such an assertion. This seems to be a common rhetorical tactic in online discussions.

Those people who just generally don't like learning anything would likely be frustrated by learning about programming, but I've no idea if this amounts to most people or not.

-----

dz13 708 days ago | link

I think programming is like an art where you have to do it to actually understand the creativity and effort that goes into creating something. In that sense, learning to program is really valuable because you start appreciating your computer, the Internet, software, and Web apps you use a whole lot more because you have a deeper understanding of how things work.

-----

rauljara 708 days ago | link

Unlike most of the top comments, I actually agree with Atwood's conclusion, if not all of the arguments he uses to get there.

I don't particularly care about the accumulation of bad code. I don't particularly think that summer of code people are going to be accumulating all that much of it that will be shared.

And I do agree that learning to program is a totally worthwhile and mind-expanding skill. But I can say that about a lot of the skills I've picked up. From driving a tractor(1), to the little bit of plumbing I've learned; to playing an instrument; they all involve problem solving; they all make you a better thinker; they're all fabulous to learn in and of themselves.

If forced to choose one of these skills, I'd say programming is in fact the deepest. But they all have enough plenty of depth for someone who's only going to be exploring them casually. And I don't feel like the summer of code mentality is over-hyping programming so much as its undervaluing all those other worthwhile skills.

There's plenty of worthwhile stuff to learn in this world. It's okay if you want to learn a few of the other things instead.

(1)Yes, operating a tractor and making use of its attachments does involve a lot of problem solving. I drove one as part of a job for a year and a half, and the guy I worked under could do so much more with it than I could that I was in awe.

-----

WiseWeasel 708 days ago | link

100 years ago, Summer of Plumbing or Summer of Tractor Driving may have attracted a not insignificant participation. In present day, not so much, as coding has become the infrastructure of our society.

-----

singular 708 days ago | link

As many others have pointed out, I think there are two sides to non-professional* coders learning to code, one of which I agree with wholeheartedly, the other I disagree with, equally wholeheartedly:-

* As in paid to sling code - I don't mean to cast elitist aspersions with the term 'professional'.

The Good

Learning to harness the amazing realm of creativity that computers offer - unlike other fields of engineering, you aren't limited by the need for millions of pounds and a team of people to turn your idea into reality, nor are you constrained by the laws of physics or possibly killing people should your calculations turn out to be incorrect.

For example, I am slowly writing a chess engine, it's such a joy to explore that because I want to and it's interesting to me.

There is a core kick that many people get out of programming, which is when you actually get something working, knowing that you made the computer do that. I wouldn't want to take that away from people.

Another aspect is that, should somebody learn enough to make some aspect of their life easier, that could even be simply learning some vba to automate some process which used to take them several hours, that's worth a lot too.

The Bad

People thinking that coding is easy and straight forward, simply because they've learnt to do something trivial or played around with code a little bit. I have met several professional programmers who have had the same opinion and then gone on to produce the most horrendous, unmaintainable, broken code imaginable and get paid a lot of money to do it all the while producing quite awful software.

I wholeheartedly agree with Jeff's point that this sort of attitude is not something we ought to encourage. If people more generally think of coding as something easy, then the kind of programmers who produce shitty code and think it's fine will be emboldened and we will be doomed to experience yet more broken software in the world. That's the last thing we need.

There's a element of pride in all of this, admittedly, but it's still a very real issue. Good programmers don't get enough respect, nor does good programming and we don't want to play with that.

The cooking example cited by shin_lao is a great analogy - you don't want to discourage people from coding, quite the opposite, but don't think what you do is the same as Pierre Gagnaire, or even the guy working in the kitchen of that cafe you like down the road.

I do want to add that yes, the good can lead to a good professional programmer, but it's critical that it be realised that, as Jeff says, you need to put in your hours, whether the Gladwellian 10k figure is accurate or not.

-----

mindcrime 708 days ago | link

I wholeheartedly agree with Jeff's point that this sort of attitude is not something we ought to encourage. If people more generally think of coding as something easy, then the kind of programmers who produce shitty code and think it's fine will be emboldened and we will be doomed to experience yet more broken software in the world. That's the last thing we need.

I sort of agree with you, but this also strikes me as something of a vacuous truth. I mean, think about applying it to any other domain: Does the fear that homeowners will start thinking of plumbing as "easy" and start overreaching their abilities mean we should quit selling monkey wrenches at Home Depot? Does the fear that auto owners will experience delusions of grandeur and start thinking of themselves as professional mechanics mean that Sears should quit selling Craftsman wrenches and Chilton repair manuals? Etc., etc.

The point is, all fields have a range of knowledge and skills from total n00b, amateur, up to professional. And in every other field, amateurs and professionals co-exist peacefully, and no one seems to be arguing that we should prohibit minor home repairs by home owners, oil changes by car owners, etc. I don't see why programming should be any different. If business people learn to write a few Excel macros, or even some small Perl, Python or Groovy scripts, that's not going to hurt those of us who are working professionally in this field.

-----

exDM69 708 days ago | link

I recently learned how to plumb a little. Now I can do minor household plumbing fixes without having to hire professional help. A very useful skill indeed. I know it's a demanding activity that requires more than reading a book and knowing how to hold a wrench, so I know to stay away from the serious pipes and stick to little fixes.

-----

zwischenzug 708 days ago | link

It's strange he made that point about plumbing, then later said you should learn how things work to solve real problems.

He seems to have confused an initiative among some people to learn a new skill in their spare time with a totalitarian injunction that we all become programmers.

To me it's no different to an initiative among people to learn a foreign language. It may be a somewhat qiuxotic spare-time hobby, but the prospect of acceptable failure is partly what part-time hobbies are for, right?

Learning a bit of coding will give one an insight into how hard it is to get right, which will make one appreciate which bits are easy and which bits are hard. What's wrong with that?

The little plumbing I've learned on my own initiative has taught me similar, and I'm less likely to get ripped off as a result.

-----

r0s 708 days ago | link

Exactly! I've encountered the attitude many times: If you learn to DIY your time must not be valuable. This is so wrong, and avoiding dishonest service is an obvious benefit.

Traversing those learning curves is more rewarding the longer you keep at it. Also, it's rare that one field of knowledge doesn't benefit many more.

-----

philbarr 708 days ago | link

Exactly - everyone should learn basic plumbing! Not the best analogy he could have used.

-----

wes-exp 708 days ago | link

I don't think he means that learning plumbing is a bad idea.

I think his point is just that a big hype cluster around learning plumbing would seem silly. There are a lot of useful skills in the world. Programming is one. Plumbing is another. Let's not get crazy and over-emphasize programming.

-----

maguay 708 days ago | link

He did say that everyone should learn some basic concepts of programming, which I think we could all agree with. Perhaps everyone shouldn't know how to create the next Gmail, but surely there's an advantage to us all knowing how for loops work and how to write a bit of simple code (perhaps just doing math and text basics in Ruby). Many schools already teach this as a standard part of their curriculum using Basic.

-----

More



Lists | RSS | Bookmarklet | Guidelines | FAQ | DMCA | News News | Feature Requests | Bugs | Y Combinator | Apply | Library

Search: