Thanks Zed! I think that was pretty insightful. You brought a whole new perspective to the "please don't learn to code" issue. Jeff may not even be aware of the reasons behind his resentment, but now he wouldn't need a shrink to find out would he? Thanks!
In another reply you questioned people's level of English comprehension. Did you read anything but the headline of Jeff's post? If so, you are the one with the reading comprehension problem because your entire rant has nothing to do with any of the points Jeff was making in his post.
Of course that doesn't matter to you. You got to create a sensational headline and a fiery rant to please your fanboys.
I really don't know why people worry so much about this. I don't think dissuading people from entering any field is surprising. Generally, experts in a field want passionate, talented people, because that's how the field will likely advance, which is what any good expert hopes for. If we scare off the dispassionate before they have a chance to burden the field, great. This is exactly the purpose of "weeder" courses in college.
Edit: Well, pardon me for having an unpopular opinion. I have no intention of apologizing. Perhaps your opinions will change when you see the damage that incompetence can cause.
Well, these "weeder" courses actually make for intellectually lazy education. Rather than study how best to teach a subject so everyone has a chance regardless of initial ability, you design curriculum that only works for naturals.
But, ultimately, it's not the teacher's right to decide who's "passionate" enough or not. Trust me, if my teachers had any say in my success I'd be digging ditches.
> Well, these "weeder" courses actually make for intellectually lazy education.
I disagree. In order to do well at a subject in an academic setting, you need the upper classmen to be very comfortable with the basics. "Weeder" courses are always (almost always?) in subjects that are basic foundations for the field. The idea is that if you can't pass it, the things that build on it aren't going to make it any easier. As well, they ingrain a good understanding of the content in those who do pass it.
Since schools tailor content difficulty to the ability of the students, lower ability levels of the upper classmen mean that the class difficulty needs to be lowered. If you're in a competitive college that's trying to teach as much as possible, it definitely their call to only filter people with a certain level of ability. Unless you're at a hyper-elite very aggressive school, I doubt that the content is only designed for an ability level that comes only to naturals. It's generally just designed for "people who can do it well". (Obviously, naturals make up a decent portion of it.)
Well you can disagree, but nearly every other subject disagrees with you. They always have two tracks for their subject, one for people who know next to nothing, and one for people who are advanced and might become professionals. In some cases the people from the beginning classes (the 101s) then go on to become professionals.
In addition to that, many other subjects have branches devoted to studying the best way to teach that subject. Computer science is largely missing this, baring some work at universities like CMU and parts of Europe (that I know of).
Until computer science actually starts actively researching how to teach computers science and can produce real research (not their weird non-statistics non-experiments) then these kinds of claims are unfounded. In that event I have to rely on similar research from things like Math and Physics Education which both disagree with you.
Huh, I majored in math, and I can't say that I understand what you mean.
In the lower division (first two years), there is often a separation of core classes between math majors and non-math majors. Calculus, for example, and linear algebra. They served as weeder courses for the math majors so that those who couldn't do good math wouldn't advance onto the upper division courses were they would continue to not do well. In addition, there was a somewhat misc. logic class for math majors that was very strict and served as a choke-point weeder class taken just before you would go onto upper division work.
For non-math majors, the Calculus classes were kind of weeder classes, but that wasn't their purpose. If you were an engineering, the engineers had their own real classes that were their own weeder classes. Etc.
But the two tracks disappeared after lower division. Once you were in 3rd year, there was largely only one set of classes. A couple of them had less rigorous counterparts for those only pursuing a teaching certification, but that was about it.
You are right that CS stands out. It's an unorganized field that is still trying to define itself. (Consider how young it is, relatively speaking.) Some schools want it to be mostly theory, others mostly software engineering, most are somewhere in between. There's disagreement over which languages to teach, how to teach them, etc. It's all somewhat awkward, and it needs to be reformed. I'm hoping that eventually we can split it into two separate fields, like CS theory and software engineering, and do a better job teaching both. (FWIW, I also majored in CS, so I saw both sides of the coin.)
I feel that programming is complex enough that it's not necessary to "scare off" the dispassionate by pleading with them to stay out of our special sandbox, and not play with our toys.
Exactly. And Jeff shouldn't worry about it. Programming is hard job, and only passionate will excel in the long run. Why the hell should we scare people by posting page long article?
Some people develop passions because someone somewhere showed them the wonder and excitement in a field or subject that was otherwise closed off to them. That's the point. I'm betting that there are out there right now a million ninja coders who don't know they're ninja coders yet. They don't know that there's this whole field that appeals to their meticulous nature and love of building things because they've never been shown it.
I disagree with your opinion on why folks are worried about this. There are many folks who are scared off unnecessarily by the sheer arrogance of those who say that they shouldn't code.
However, whoever is downvoting opinions that they don't like - will they cut it out? Seriously, I'd love to know who downvotes because I've noticed a lot of it is unjust. If you notice, there are a lot of considered responses to this considered reply. The debate has continued - trying to censor the opinion of others is pretty horrendous IMO.
Sure you can do anything you want, but the better you are at something:
a) the more enjoyable and rewarding it is for you AND
b) the more efficiently you can generate something useful for others; with any activity, there is an opportunity cost
That said, learning coding is self-limiting activity; those who enjoy it and have a knack for it will continue, those that don't will stop.
My only concern, which is a general one, is that humans are pretty good at self-deception, especially in subjective areas. Look at how many people think they can sing, for example. The shattering of their illusions has been turned into entertainment, and for many people this is obviously traumatic.
I have a completely non-technical friend trying to learn javascript. When I asked why, she told me she wanted to write games. As her friend, should I save her feelings and say nothing (and let her squander her time and end up confused and frustrated) or try and reason with her (and then look like a killjoy for seemingly criticising her efforts)?
Currently I've taken the former option, but still agonise over whether this is the 'right' way or not.
When I start learning programming I was "completely non-technical" too. Give your non-technical friend a few years and you will see what she can do if she is really interested in making games.
I bet you were in the same situation at some point in your life.
If you want to give her a constructive advice tell her that she can use JavaScript with Unity3D for e.g. I bet you will be amazed at how productive one can became when one is passionated about something.
Certainly, one's early experience skews one's perceptions - I was 10 or 11 when I was 'non-technical', my friend is 35 (and, knowing her pretty well, her skills are definitely not in the coding area).
Damn straight, because I actually care about this stuff. I mean, for all the talk on here about "passion" y'all sure do hate it when people actually are passionate.
But, I'm passionate about my books. There's nothing wrong with being proud of the things you do. Thinking that you have to never tout yourself is just a form of self-loathing really.
Zed, I think you're making the same mistake I did when I started reading hacker news.
Passion means willingness to work your hands to the bone for the startup. Nobody here actually gives a shit about the craft itself. The only aspect of a professional discipline worth being passionate about it its ability to deliver the pie in the sky.
Of all the posts pointing what Jeff's flaw in logic was. The one post attacking his person instead, saying he's just a mindless bully that should be ignored. Is the most insightful?
Yes, because that's how life goes. I'm not going to attack the logic of an article that is illogical, I'm going to talk about the hypocrisy of the person writing it. The human stuff matters much more than the fantasy world of "logic".
He isn't insulting Jeff as a person, nor is he even accusing him of deliberately being a hypocrite. He's just accusing him of a single instance of hypocritical behavior.
Also people who won't listen to Jeff anymore because of this post, or are really angry at him, are likely being hypocritical. He's making the same sort of a mistake as a blogger that many will make as a programmer, especially if we don't discriminate who gets to try their hand at programming. He didn't ship this out to some scary production place where the blogging equivalent of exposing private data for thousands of user accounts might happen. He just blogged it. Likewise, for the most part, new programmers will be limited in the amount of damage they can do.
He also provides all of his books, in their entirety, for free on his website. He even lets you see his "beta" books, Learn C the Hardway, Learn SQL The Hardway, etc.
You confuse self-interest with hypocrisy. I am definitely self-interested and openly admit it, but I try not to be a hypocrite.
For example, I think people should spend their lives learning new things. After I write a few more comments on HN, I'm going to grab my guitar and go learn a new scale. :-)
So, your motive for attack on Jeff is self-interest?
edit: an elaboration
I'm trying to figure out what exactly Jeff wrote that you hate so much. You don't even consider his arguments, you just have "a guess about Jeff, and a general message about other people who feel the same way."
Jeff wouldn't write something like this:
"Don't listen to the hipsters who claim that coding is as vital as reading, and who claim that for the first time in the history you can learn to code, because now we have an online JavaScript course that we call "Code Year" or something like that.
But that is what I've got from his post. He's not against people learning to code, he's against making it into something that it simply isn't - a vital life skill.
I believe it is a vital skill, but that it's not being taught well enough so that's why people don't think it is. The same could be said about nearly everything we teach in K-12 at some point in the subject's history.
Also, it's not an attack, it's a counter-attack. People really need to get their order of events in the right order of events.
Although, I'm still with Jeff regarding the importance of coding, I want to thank you for clarifying your position and the order of events. Happy hacking.
"The same could be said about nearly everything we teach in K-12 at some point in the subject's history"
I've been teaching for 25 years in post 18 colleges in the UK, and I have the granddaughter of one of my first students in my class now (god I feel old, my consolation is that granny was a mature student in her late 20s/early 30s when she did maths with me).
Many of my students are earning money from jobs that did not exist when I was teaching them.
Stuff changes, but learning how to think does not. There is a tension between the synthetic and the analytic, and we need both. Teenagers need to learn attention to detail, and the big picture, and time planning, and the focusing of attention. The school syllabus in every country is a political compromise that shifts over time.
I think a little space for end user style programming might help with the analytic and synthetic modes a little.
Challenge: Learn Puredata the hard way, let's do the attention to detail thing your books do to music by constructing sound?
I'm not going to attack the logic of an article that is illogical
It seems to me that is the exactly the type of article you'd want to attack in that way.
If you won't attack arguments with faulty logic on logical grounds, and you can't (correctly) attack arguments with correct logic on logical grounds, that implies you can never refute anyone logically, and that all your arguments will be ad hominems and suchlike.
That makes sense to me. But I also think maybe Zed is saying something along the lines of that proverb, "Don't argue with a fool," and that when it comes to people who are unreasonable it's sometimes easier to point out that they're generally unreasonable. (Though I see your point in that this bad in the same way any generalizations can be bad.)
Actually, my feeling is that you misunderstood Jeff. He makes a great point - we can't all be programmers, world needs people with all kinds of skills.
"We can't all learn how to read, the world needs people with all kinds of skills."
It is perfectly possible to both learn programming and also have other skills. Who knows, maybe you'll be able to do something crazy like apply lessons from one field to another.
The way I interpreted Jeff's post is that as hackers, we tend to see have a very skewed view of the world, and that we believe our tools (programming) are the only way to fix problems, and that everyone should learn how to use them.
Jeff's point is that while certain tools (writing, arithmetic, etc.) are indeed of extremely relevant use no matter what you do, programming doesn't fall in that category, and anyone arguing that all should learn to code regardless of what they do is falling in that fallacy.
(i'm not saying I agree or disagree with that, that's just the way I perceived the post. That being said, Zed's post, especially the last paragraph, is of great value.)
You say one thing, then say another thing. The other thing kind of negates the first thing you said, so, by repeating the recipe, in a short while you have said everything about your topics and you have also said nothing.
The part at the end was just fantastic, and really sound advice for pretty much anyone.
But, I think people are sort of misunderstanding Jeff's post. I didn't get the impression that he was trying to dissuade kids from learning how to code in some kind of effort to keep his uniqueness as a programmer. I think the point was just that this whole _everybody_ should learn how to code thing is a little odd.
If you want to code because you think it's cool and you want to become a good coder, then great, learn to code. But I think Jeff's point is that we shouldn't make coding out to be this essential skill that absolutely everybody should learn. If you weren't otherwise inclined to learn to code, don't do it just because someone told you you should.
Not that I completely agree with that sentiment either, I guess. One of the top comments by Fuzz [1] on that github gist is a pretty good tl;dr I think:
"Saying people should not learn how to code is like saying people should not learn how to speak a second language."
I'm sure learning a second language is fun, but I get annoyed when people try and make it seem like it's absolutely vital to do so.
I'm sure learning a second language is fun, but I get annoyed when people try and make it seem like it's absolutely vital to do so.
I'm guessing you're a native English speaker? Because I can tell you that in many parts of the world, learning a second language is essential if you want a decent job and access to the vast amounts of knowledge, culture and people that the Internet provides.
I didn't mean it as a criticism - it's easy to overlook what we take for granted, and I'm no exception.
But where I live, I notice very clearly the difficulties and disadvantages that not knowing English has, and even being able to read is not enough: my parents, for example, are certainly not uneducated people, yet they're not able to fully understand much of spoken English, which means they're restricted to subtitled content - fewer films, no free university lectures, no Khan Academy, almost no podcasts, etc.
I tried K&R but could not get into it after reading the first 2 chapters a few times over.
I was close to giving up on C till I picked up "C Programming a Modern Approach" and Zed's "Learn C The Hard Way". They were phenomenal.
After finishing them I tried K&R again but was still not digging the style so I did a few of the exercises but not much else. I get that it's a classic but it was written before I was born so I didn't find it all that well written. That's just my opinion though.
I wonder how many (and which) CS texts are recommended simply because they are considered "classics." As a beginner there is really no way to tell how good a book will be before reading it without relying on the word of others.
While the "Don't Become Anything" thing is valuable (after all it's a thousands of years old insight that can be found in Buddhism for example), the article looks pretty much like a straw man to me. The original post was arguing that "coding" isn't an essential life skill in the way for example reading is and that massive amounts of new coders might not be that good for the world. How is this refuted here in any way? Where is this resentment thing pulled from?
I'm not refuting his statement that programming is or is not a life skill. My opinion on the matter is demonstrated in my work. I'm refuting his statement that other people should not become programmers, and that only a few chosen few should. Even though he doesn't say those very words, that's what he's saying.
The resentment comes from me talking to many programmers who say the same thing. Consider it a guess about Jeff, and a general message about other people who feel the same way.
>I'm refuting his statement that other people should not become programmers, and that only a few chosen few should.
But Atwood didn't say that. All he said was that it's a trade like Plumbing and not a life skill like being able to read.
>The resentment comes from me talking to many programmers who say the same thing.
But programmers DON'T mostly say that. In fact, I had a very animated discussion with Randy Stross of New York Times at YCombinator where EVERY programmer around was arguing that programming has become an important life skill and should be taught in high school. Of course, this is anecdotal but even the recent articles refuting this on HN shows most programmers are for everyone learning programming.
I don't know you as well as other members of the community here but this article seems to be really harsh and doesn't even touch the argument that Atwood made in his article.
The title is not a summary. THE TITLE IS NOT A SUMMARY.
The title is a highlight of his article. Presenting the title of his article as a summary, as you do in your article and repeatedly in your comments, is disingenuous and misleading.
If you are insinuating that I didn't read your article. I did. That is why I made the comment.
I didn't think much of it. The tangent about Atwood's son was completely tangential and unrelated. Atwood's argument was not about computer science education, it wasn't about meritocracy. You completely missed the point.
I actually agree with your article, but you can't seriously take Jeff Atwoods title seriously unless you also mean us to take your title seriously - so are you now telling us that we shouldn't become anything? Especially not programmers? I mean, it says it right there.
I'll reiterate that I do agree with most of what you wrote and I upvoted this submission because of what you wrote, I just don't think the stance in this (and other) comments is at all valid given the title of your own article.
But it IS a life skill. It's not comparable to reading or writing maybe, but it is comparable to financial planning. People don't learn to write budgets properly so they go broke. People don't know how computers work, even just the basics, but operate these machines every day as part of their work and their home life. Knowing how to use a command line to look for viruses, how to monitor your home network, or even what a bit of code looks like - enormously useful skills that make you a more savvy, thoughtful, and protected citizen.
See, that is a thoughtful, reasonable argument. No ad hominem attack, suggesting someone "[gets] off on making beginners feel like they're worthless for attempting something".
Consider writing a blog post that actually responds to Jeff Atwood's post, rather than a straw man constructed from his title?
Wherever you want. It's your life, learn what you want to. You don't have to wait for some internet celebrity to tell you what you should or shouldn't be learning.
Herein lies the rub, though. We have to choose what we want to teach our kids. That's how the current system is established anyways.
The current system does not let you "learn what you want to."
It teaches you an established core curriculum.
Personally I think an overhaul of the education system would be far more productive than letting internet celebs duke it out until their agenda gets pushed down the throats of K-12 students.
> Even though he doesn't say those very words, that's what he's saying.
Partially yes, partially no, and for different reasons than claimed in this article. He does argue that fewer people should pursue programming, yes, but it's because they would be more effective elsewhere. His thesis is that people decide that the solution is for them to write code before they know what the problem is, and that some people make careers that follow that trail of thought. From a purely efficient viewpoint, a work force is more effective when there are fewer people mis-fit into it.
A guess about his motivations? So basically, this was a strawman to vent frustration onto?
He didn't state that people should not become programmers, he stated that people who do not intend to become programmers wouldn't benefit much more from a "coding" course than from a plumbing course, and could instead for example use some knowledge of how to find or build a solutions to their problems in an easy way without actually programming it. I do not necessarily agree with him everywhere, and I do greatly respect your work on "Learn X the hard way", but in my opinion you completely misrepresented what he has written and trivialize a point that actually is interesting and worth thinking about.
You are missing the point of his post which I believe is valid- that programming in and of itself is nothing but a skill to carry out a task. He isn't dissuading beginners from learning to code or suggesting that people shouldn't. Just that you shouldn't learn to code just for the sake of knowing how to code.
I get it. There are worse hobbies you can have and it can solve problems and spread information, etc., etc. The point is that programming should be viewed as a means to an end. Too much focus is put on coding as an end goal and writers on TechCrunch whom I suspect have never coded anything in their lives talk about how learning to code is the hot new thing and everybody should be doing it. I think it is far more useful to learn a variety of subjects, figure out what it is you want to do, and if building software is the way to achieve it, then go learn to code. But learning to code well is an enormous investment of time, so to learn to code you are choosing not to do other things that could be far more valuable to you.
A lot of people start with learning to code and then look everywhere for a problem to solve with their new skill set. That is the reverse of how problems should be solved. The technology is irrelevant. The skills are irrelevant. The problem is what should dictate the work.
I just re-read Mr. Atwood's post, and I'm not sure that's what I get out of it. He talks about people learning to code to do it for a living, not just doing it as a hobby/learning experience. Though he starts by saying code is just one skill among many, his arguments centers around people doing as a career ("we don't need more bad programmers" and "programmers should be writing less code").
I suspect that really, Jeff and Zed might actually agree that people should be free to tinker, and resources should be available for them to learn to tinker (see Jeff's plumbing analogy--would the Jeff Atwood of plumbing tell me not to learn how to fix my leaky faucet because there are already enough bad plumbers in the world?).
Certainly, some people learn to code for the wrong reasons, and they see every problem as a program to be written. But hey, if they want to do that in their basement (or even as part of their job), let them--we've all had to learn one way or another that the world doesn't work that way.
I agree with him largely. Then he goes and wrecks his argument by stating that the "Gang of Four" is an "antiquated tome". I can't work out where this resentment business is coming from here.
It's 17 years old, dry and contextless. It can be useful, but it'd be way down on the list of books I'd hand to someone and not only because I'm assuming anyone starting out today is programming in Python, Ruby or JavaScript. It certainly isn't necessary reading to be a good programmer, by any means.
So what it it's 17 years old? I read it, but it's not contextless, nor is it dry. It has plenty of context - albieit in an older form - the creating of a word processor. You can still grasp this today! In fact, the information on Factory patterns is still used today, same with Singletons and a raft of other items - including Prototypes, which is what Javascript uses.
Please note that I didn't say that I'd provide it to a newbie coder. I merely pointed out that it's not an "antiquated tome". It's very definitely useful, and has been so for some time and remains that way. In fact, I actually think that Zed nailed it on many points in that article.
I find it very interesting that my comment was downvoted merely because someone disagreed. There was nothing inflammatory about my response, nor was there anything factually incorrect. I offered a differing opinion, of which someone decided they would hit the downvote button, instead of doing what they should do - post a response.
It is funny to see how different people interpreted the original post.
For me it was about coding being a craft and not a necessary skill like arithmetics, reading or a secondary languages.
(This is true not only for coding but for nearly every craft there is.)
So I think it was more a post against the "Every one should learn to code, for a better world" movement (if there is such a thing) than a keep on doing what you do and stay away from my craft post.
While I thing bloomberg should be able to do what ever he wants in his free time. I agree with the assessment that it will be highly unlikely that leaning to code will make a difference in his daily work.
So while this reaction was a entertaining read I think it was reacting to something that wasn't be said.
Craft requires skill and the two are deeply intertwined. In opinion, if you think that programming is some mystical "craft" that can't be taught, then you simply just don't know enough about it.
Again funny how people read different things from the same text :-) . That's not what I was trying to say. On the contrary to master a craft you will need to learn several different skills and a craft is something thing that you can learn, but more importantly must learn and study to master. I'm not saying this should be out of reach for most people as is any craft, if you want to learn something you should be able to and I applaud any afford to make it more affordable and easier . but contrary to reading and arithmetic etc it is not something you must learn to be a productive member to society. This is true not only for coding but for any craft, be it plumbing, sewing carpentry, Medical professions etc.
I need some sort of AI filter for HN that will not only hide blog posts from a particular domain, but hide other people's blog posts "responding" to those blog posts and then submitted as separate articles.
You should, then give it to me so I can sort out the comments that don't add to the discussion, but keep the replies telling people they aren't adding to the discussion.
No. A strawman is when you give your opponent an argument other than the one s/he is making and refute that instead of the real argument. In other words, you created a strawman and knocked him down, claiming victory while the real man remained standing.
Really, because of resentment? Really, sometimes I think people read way too much into people's commentary. How do these petty war of words make it to the top of Hacker News anyway.
Great post. I have an awful lot of respect for Zed Shaw and what he's done (and, no, not for "Rails is a Ghetto" but for his directed learning programming books, which IMHO are probably the best approach for newcomers).
I'm disappointed that Jeff has taken what is essentially an elitist and exclusionary view. Programming is not a zero sum game. Every new programmer isn't a threat to your livelihood and your existence (unless, you know, you suck at your job).
There's a lot of wisdom in the last two paragraphs. Another facet of this is those (typically young) programmers who treat any criticism of their ideas to criticisms of themselves as people (of course this isn't unique to programming).
You need to get over that as it is an impediment to becoming more proficient at your chosen craft. Your work isn't your identity. Don't treat it as such.
I don't believe this post gets the real reason why Jeff said what he said.
In my opinion, Jeff projected some of his issues with the current state of the software development profession (mainly the "hack fist, ask questions later" aproach). The idea that bothered him wasn't born from elitism, identity, or the fact that people were learning to code, but the idea that, to him, this makes this issue worse.
It's true that he is making an implicit leap from "everyone should learn to code" to "everyone should be a programmer". I personally don't agree, but maybie he has a good argument. Maybie he should try to explain that connection a little further.
Except that Jeff would still be wrong on this count. If more people were trying to learn how to program, there would be a lot more effort devoted to figuring out how to teach coding better.
This is a terrible post. He wildly exaggerates Jeff's statements and completely misses the point of it, which was not in any way "no one should learn to program", but rather "don't learn specialized skill sets you don't need". Jeff's point focused on whether programming was the best path to solving a problem for most people, and whether they would actually gain anything from it. His main argument was that programming was just a tool for problem solving, and it didn't solve problems that most people would need to. Rather than do a half-baked job of writing some code, people should take a different, more effective route.
I don't necessarily agree with that, but that's what he said. And this post completely misses the point and makes Jeff's post out to be something it was clearly not meant to be.
The title was meant as an attention grabber, but the text does not suggest that NO ONE should learn to code. The text only disputes that EVERYONE should learn to code.
back up 200 years and replace plumbing with reading...
Your argument isn't evidence for anything at all. There's a big difference between reading and coding: reading is a very useful method of communication. Everyone should be literate just like everyone should be able to speak. Coding, on the other hand, is much more along the lines of plumbing than language.
There was a book written by Douglas Rushkoff called Program or be programmed[1] wherein he asserts quite a compelling argument for why learning at least a basic understanding of programming and how a computer works actually is (or very soon will be) just as important as being able to read.
The basic crux of the issue for me is this: you can control a society via the flow of information through that society. Both reading and more recently, programming are activities intimately connected to the flow of information through modern society. Along with an understanding of programming comes a greater understanding of computers to computer networks to privacy issues and all manner of things that more people should be thinking about more conciously, regardless of whether they wish to program as a career.
While no doubt the flow of material through plumbing pipes is also quite important for societies in general, I don't think an understanding of plumbing affords quite the same insights and protections against being potentially manipulated by the powers that be as one might acquire through the pursuit of reading and programming.
Of course people will need to be informed on security and privacy on computers, but that doesn't require an understanding of coding. I know how to safely drive a car, for example, but I have no idea how it works under the hood (and frankly, I don't have the time or energy to learn this).
Coding really is a specialized job. For sure, some people would be better off learning it because it can be useful, but everyday people don't need to know how to code just like they don't need to know how a car works. All they need to know is how to drive safely, or use the computer securely.
And really, I don't get this whole "learn to code, learn how your computer works" idea. When I first learned ruby, I didn't magically gain an understanding of filesystems and networks and all those other things. My dad, on the other hand, who doesn't know how to code, in fact he didn't even know what a kernel was, can fix your computer up in a jiffy (hardware and software both, particularly windows). He's in fact still better than me at this, because he knows all the intimate little details of the windows UI and what each thing does, what each error probably means.
So the point is, you don't need to learn how to code to know how to use a computer well, and learning javascript won't really help you with that either. If all you want is to know how to protect your computer from the powers that be, don't learn to code; just listen to what the experts have to say on the subject.
Many programs are tiny, written in poorly-regarded languages (Excel, app macros, shell, etc.), and written by people without the title of "software engineer." Many times the number of well-known products like Word or Stack Overflow. But that doesn't mean they are not programs and it doesn't mean they are not serving useful purposes. And the number of areas where little programs could help in the future is huge.
Programming is not a specialized job and it does not require specialized knowledge. Even idiots can program. The fact that you can program shows that you had interest and access to computers but it does not put you in a special club. Programmers ARE everyday people, not a priestly caste who can be distinguished from birth. And in the last few decades their numbers have dramatically increased - with each generation's clueless and accidental beginners becoming the next generation's experts.
We don't tell people "please don't learn any math" or "please don't learn any geography" even though most people will not become specialists or need a specialist's understanding. These are still generally useful things and things which make you an educated and modern person. We don't know where they will be useful or to whom. It benefits many more individuals to know something about these, and it greatly benefits our society that many individuals know something about them.
"just listen to what the experts have to say" is something that started to change as of the Gutenberg Bible, thank God.
Very well said.
My understanding of computers came far before my understanding of code.
I think people are falsely equating all the marks of a good programmer as being the benefits to learning how to program.
"It makes you logical, methodical, organized", etc etc.
Yes, these are all qualities you'll find in a good coder. However I don't think programming is a good way to teach these thoughts! NOT AT ALL!
I learned all those things by writing English papers. I had lots of problems writing in my early years, so I studied, and worked hard. I learned how to outline my thoughts. I learned how to properly revise a work. I learned how to organize my thoughts into logical units. I learned how to make those logical units flow into one another. I learned how to arrange those units so that they each make sense in context. I learned how to target a unit to a specific audience.
I think programming would've been a terrible way to learn those skills. English is at least somewhat forgiving. Even if your sentences aren't perfect, the general idea still comes across.
Learning to program involves weird and obscure syntax, you're constantly fighting with the compiler, you're dealing with stack-traces a mile deep every time you make a mistake.
Programming is an incredibly challenging way to learn problem solving.
Obviously I found that challenge to be worthy of pursuit. Certainly we shouldn't be discouraging anyone from learning how to code. At the same time though, I think it's incredibly offensive to say that everyone should know|learn how to code.
I don't think even Rushkoff would disagree that not all people have the drive to learn programming. And I would agree that programming is not the only way that one can learn the knowledge that one should have in the modern world so that one can be adequately informed on security/privacy issues and so on. But it certainly helps. Coding is becomming a less specialised job by the decade regardless of what any of us think about it. If one espouses the idea that 'programming is as important as reading' even if it may not yet be literally or globally true, then we are aiming for the stars and in the process, at least perhaps hitting a mountain.
No doubt your father is an acomplished man, but he would be a better Windows power user or sys admin if he was comfortable with PowerShell. One of my pet peeves are server admins who don't thnk they need to know any programming and thus don't truly understand the requirements of the developers who interact with their servers.
I feel that we're discussing things (if you'll excuse the cliché) too far inside the box. If one has a very blinkered view of the advantages that programming can provide then yeah, it's just a highly specialised tool, useful only to a few. But that's not what programming is to me. To me, its about communication, expression of ideas and discovery.
You say that learning JavaScript won't help you to understand your computer better. I disagree. By learning JavaScript, you will involuntarily learn more about one or more web browsers and perhaps from there, you may become more informed on how information is transmitted across the web and perhaps from there, you may learn to better protect yourself through more consistent use of encrypted data transfer, just as an example. You are right when you say learning to program does not magically impart knowledge of file systems or networking but when I learned Ruby, I would have had to try pretty damn hard not to learn by osmosis at least something I didn't know before about these topics while I was learning the language.
So yes, in the narrowest sense, programming is not currently as important as reading. But what does the public potentially gain if we suggest that it is? And I predict that the distance between ideal and reality will close as the decades pass.
Good point and one of the things the powers that be hated about Gutenberg and those who wanted to print Bibles in the vernacular - was they did not want the hoi poli learning to read and getting ideas above their station.
More recently similar arguments were made against educating freed slaves in the USA
Life was hard 200 years ago. Taking the time to learn to read would have been a major hardship for some people, and many (most of whom could not afford books) may not have used the skill much.
I think it was reasonable for some people not to learn to read 200 years ago.
England had a literacy rate of 62% around 1800, so no, it was not reasonable for some people not to learn to read 200 years ago.
The American Revolution was spread through pamphlets passed out at the local tavern. Newspapers played a major role in educating the people about the Revolution and passing around the text of the Declaration of Independence, Articles of Confederation, and Constitution, so no, it was not reasonable for some people not to learn to read 200 years ago.
By the way, if Gutenberg's Printing Revolution made the written word so cheap that pamphlets could be handed out to as many people as possible, I don't think there would have been many who could not afford books 200 years ago. If there were many who didn't use the reading skill much, then there wouldn't have been all the hoopla over the Stamp Act the British imposed on the American colonies. You sorta need to know how to read to make any use of stamps 200 years ago.
That is an interesting question, because so many people claim to have read his post yet have no idea what he actually said. Please re-read it.
The post title was an exaggeration, like almost all of his blog post titles are. If you actually read the content of the post, you realize that he clearly wasn't actually saying.
When you say it like that it sounds it is bad to be biased in this particular situation.
First of all it sounds much better than "I read it, he is correct. This is why I wrote mine." considering that he is refuting the idea presented.
Being biased is simply being opinionated and luckily Zed Shaw's opinion is that everyone should/can learn code. This is why he has free books, which actually teach some programming to everyone.
The thing being argued here isn't whether Jeff or Zed is right, the thing being argued is that Zed Shaw grossly misinterpreted what Jeff was saying, which he did.
You did read it, and he's wrong, and that's why you wrote an article that did not respond to his (supposedly wrong) arguments at all, and instead presented an ad hominem attack saying he "[gets] off on making beginners feel like they're worthless for attempting something"?
Not all insults are ad hominem. For this to be ad hominem, he would have to be saying that the reason Attwood was wrong was because he "gets off on making beginners feel like they're worthless..."
Here's a quick illustration:
Ad Hominem:
Jeff Attwood gets off on being an ass. Therefore he is wrong.
Not Ad Hominem:
Jeff Attwood gets off on being an ass. Incidentally, he is also wrong.
Technically you may be right, if one is in a debate club perhaps. In a real world debate the close position of two elements, especially when one is composed of emotional content, draws a strong implied link between the two points even if they are separate. It's not a compelling defense to say that everyone should be an expert at logical debate and should know to ignore the insults one heaps on one's opponents.
You need to learn the difference between insults and logical fallacies. This has nothing to do with whether or not insults are bad in a discussion (they almost always are), it has to do with the poster citing the ad hominem fallacy incorrectly because they think using Latin words will strengthen their point.
We should start a movement to persuade everyone to learn logical fallacies. Then we'll get some other guy begging everyone to stop following the fad and not learn logical fallacies. After that, we'll get a third guy writing a response saying the other guy is wrong. Finally, we'll get a lot of people illogically applying logical fallacies, and we'll get them then!
Seriously, understanding of logical fallacies seems to be in very short supply around HN. If I didn't know any better I would think I'm over at Reddit.
Ad hominem (argumentum ad hominem) is a specific term of art to describe arguments that try to counter a thesis by attacking the character, qualifications, standing etc of the person claiming the thesis.
It does not mean an argument in which a person insults the person claiming the thesis. Insults rarely add anything to an argument but that is a different matter.
Also note that an ad hominem doesn't need to be insulting - it could be a very polite statement such as "This argument is incorrect because Mr Atwood is unqualified to discuss matters of education as he is not himself an educator". This is not really insulting (though I would argue that Jeff is in a way an educator) but is still an ad hominem.
"Never listen to people who try to make beginners feel like losers."
I didn't see anywhere in Jeff's post where he was saying he wanted to make beginners look like losers. What he is saying is that it isn't necessary for everyone to learn how to code, that a lot of people seem to have a passing interest in it but aren't really serious about it. His example is the fact that Mike Bloomberg is using it as a cheap political stunt, that his time as Mayor would be better spent accomplishing other things. Now, that's somewhat a matter of opinion, maybe Mike Bloomberg really is serious about wanting to learn how to code, but somehow I doubt it. This is a far cry from Jeff wanting to make people feel like losers.
"He's telling other people's kids to not learn to code. He's telling adults who want to improve their lives, or just learn something new. He's telling people from other professions that no, programming won't help them. Why? Why would Jeff tell people to quit and just let the professionals do this? Because of resentment."
That's a complete assumption, in no way backed by anything Jeff said. I didn't see any "resentment" in that post, but you can read into anything you want and make any wild assumptions you want, as long as it makes your post more sensational.
He's not saying that your's or anyone's kids shouldn't learn how to code, he's saying that he doesn't see it as a basic skill we should be teaching children, along with reading, writing, and math. I don't necessarily agree with this, but I get where he is coming from and I'm not going to grossly exaggerated Jeff's position just to make my point.
So, yah, maybe Jeff is wrong, but you're post certainly didn't address what he was actually saying.
Well what's wrong with people having a passing interest in it learning it?
His example seems to be more him having a bone to pick with Mayor Bloomberg. Maybe, having a mayor that extols the virtue of learning something will help improve student absenteeism. Who knows?
Yes, it does. Jeff's article then proceeds to present a very reasonable argument to consider for why you might not want to code, specifically, there are many useful skills in the world and maybe there's one that would serve you better than coding. Your article completely ignores Jeff's article and presents what amounts to an ad hominem attack on Jeff, claiming he's trying to make beginners feel like losers.
Do you honestly believe so many people on here are so bad at reading comprehension that they can't parse the phrase "Please don't learn to code"? I think you're smarter than that. I think we both know that's a straw man. What actually happened was that many people read Jeff's post and realized that the title "Please don't learn to code" was not a summary of his article, it was a title, presenting the highlight of his article, which is that there are some people in some situations in which he'd tell them, "don't learn to code, learn this other thing that will be more useful to you".
To be fair, titles should give some idea of what's in an essay or post. If you use a linkbait headline is it that unreasonable to address the more ridiculous point made by the headline?
To be fair, people should read AND understand what they're raging against, BEFORE they post to the net. Is it too much to ask that bloggers actually comprehend what they're raging against?
>Jeff's article then proceeds to present a very reasonable argument to consider for why you might not want to code, specifically, there are many useful skills in the world and maybe there's one that would serve you better than coding.
Programming is a super-power, even if you only know a little bit. Knowing how to program gives you abilities to create unequaled in the history of the world. I think that the more people who know how to program, the better, even if they "suck" by comparison to a rock star programmer (or alternately a fat guy who knows C++ [1]).
Maybe 95% of people will never be lead programmer on a commercial product, but almost everyone ends up, e.g., searching Google -- and not being afraid of complex search results can mean the difference between digging through six pages of garbage and getting relevant results right away because you weren't afraid to use the minus operator or other more "advanced" search features.
And probably most people in the workplace have to deal with an Excel spreadsheet from time to time -- being willing to dig into creating more complex formulas because they aren't afraid of lists of functions with parameters would be an obvious side effect of knowing a bit of code.
Regardless, Zed is saying that no one should be telling you that you SHOULDN'T learn to program, period. And I agree.
While I didn’t like Jeff Atwood’s post, I didn’t take the title literally. To me it seems obvious that it can also be read as "Please don't >learn to code<", meaning that we (people who understand and write code) might be wrong in assuming that it’s a skill on par with algebra or cooking in importance and are therefore in no position to lure people into learning programming as if it were the one big roadblock separating them from enlightenment. Or something like that.
Natural languages are ambiguous. One of the reasons why they’re more fun than programming languages.
Apparently you. Have you thought about reading the post, rather than just the title? The same exact statement could be applied to the title of your post "Please don't become anything, especially not a programmer"
Nice article by the way, and thanks for your work.
> "don't learn specialized skill sets you don't need"
Even that would be stupid. You probably don't know if you need it before you know it.
Also it could be argued that everybody "needs" to know how to code, in that pretty much everyone spends a good portion of their lives in front of a computer, and knowing how to automate its behavior would make life easier for a lot of people.
The funny thing is, pretty much everyone needs plumbing skills too. That doesn't mean everyone is gonna learn them, or should become a master plumber. But knowing a thing or two about it certainly can't hurt.
Zed doesn't exaggerate Jeff's statements. The original statements are already exaggerated and caricatural, portraying reality as a binary thing : either you can program, or you can't. Things are not that simple
This is the first post that I would down vote if I could. Learning might not be binary, but the industrial revolution was built on the division of labor, and all Jeff was saying is that not everyone needs to learn how to code. If computer scientists/programmers/coders do their job properly, people with absolutely no understanding of the workings of their computers will be able to drive effectively, just as people can drive without understanding how a car works. Some level of encapsulation is a good thing, and while learning how certain things work is generally a good idea, it comes with an opportunity cost, which is especially high when we are talking about the mayor of NYC. Should Obama be learning how to code? Absolutely not. I agree with most of Zed's argument, however he does not respond to Jeff at all.
"Please don't learn to code" is not a useful or kind thing to say. If he did not mean to say that, then he shouldn't have said it.
Technically most people can get by without literacy, general education, birth control or hand washing. But it's just offensively elitist to say that "most people" don't need things which enrich life and improve opportunities significantly, in aggregate.
How do you know who should be permitted to learn to program (or apply the calculus, or read)? Who are you to say what is a "more effective route"?
Nobody has said anything about doing a half-baked job. Nobody was born an expert, not even you. It's ridiculous to aim elitist bully talk like "half-baked job" at beginners when writing shit code is an unavoidable developmental stage every programmer goes through.
While we are discussing half-baked jobs, let's talk about a status quo where huge numbers of people are doing piles of mind numbing, annoying labor (and making mistakes) just because programming has not been applied. In many cases the funding and justification are not there to improve the process, in no small part because of a traditional culture which tends to programming as effete play or impossible wizardry or both. Do you really mean to suggest that there is NO value in automating or improving processes (or constructing things for yourself) unless you are working full time as a 'professional' developer? The technology is getting easier and easier for people without deep computer science background, so you are on the wrong side of history.
Programming is an incredibly valuable development of this century. It's as much part of the modern human heritage as banking or oral contraceptives. It should be applied in MANY more areas than it is applied.
This macho, elitist attitude is one of the biggest things which keeps a ton of women out of programming and related fields. Treating programming as some kind of venue for manhood comparison, and excluding people who do it for the love and the pursuit of knowledge, is detrimental to the art. It's a bad and unproductive attitude and it should stop yesterday.
What do you mean by useful ?
Seriously what is really useful in all that "Please code / Please don't code" story ? In itself nothing, it's all a matter of opinion. That doesn't make it less interesting.
So putting the sentence "Please don't learn to code" out of context is just not fair and misleading. He wrote this post like he wrote everything else he does, with his style. You have the right not to like it but please do not state your opinion as fact. How does the post is more useful ?
The idea that everyone should learn to program doesn't disturb me at the least but it's just a waste of time.
Comparing programing langage with english, french, russian or whatever is just a joke. The day the first words of a baby will be the binary representation of "Mommy" I'll rethink about it.
In truth those who want to get involved in programming for whatever reason (as a hobby, professionally, by curiousity ...) are those who should learn to program. So let's drop the hype, pleadge and let's keep those good websites which help to get started.
I find knowing how to program really useful, empowering, fun and challenging but not everyone has to feel the same way and not every programmer feels like I do. That is what Jeff Attwood tells in this post, while humouring himself with the movement.
So please learn to code, if you want to but you'll still be cool if you don't.
Programming is praised as a must-have life skill by... programmers. Comparison of programming with plumbing draws fierce condemnation as elitism. News at 11.
I agree with you completely, I do not know much about Zed Shaw, being a fairly new and somewhat young programmer but the post leads me to believe that programming should be a part of our general education along with math and the sciences. One does not have to make a career out of it, but having basic understanding of programming and just the general technologies that dominate our lives today can go a long way in securing a strong future for individuals and society as a whole.
I've always believed that one should not use labels. They are self imposed limits.
Writing computer programs is not something out of the ordinary. Sure, it is applied math, but it is not quantum physics.
I want people to learn. The more people know to code, the more innovation we will all enjoy.
There is a generation that is growing up with the power of computing. This is a first in history. We (as a race) will be able to do so many things thanks to it.
But we need people to learn. Good/bad code, its all the same. All it matters is that the ideas are implemented.
Great post Mr. Shaw. I've always looked up tp you, as a person and coder. Thank you.
What we call physics is not math. Math is how we interpret them. Just like code is how we interpret ideas in a manner that a computer can process.
Quantum physics is not even aptly defined because no one understands them. Sure, we may have some insight into how some things work at the quantum level but we have not a clue.
My point, which I reason you missed, is that people find math hard yet they manage to learn how to program. These days, one can make a reasonable living as a coder without knowing much math.
I'm not even going to pretend to be a genius, not even smart. But I can sure understand that programming is not what fellow engineers make it out to be.
It is neither Quantum physics nor hard. It is, in my opinion, simple (and beautiful).
Discouraging people from learning how to code is akin to discouraging people from learning how to speak.
In a world where the Internet is the only mass medium of communication, knowing how to code enables freedom of thought, and speech.
I really don't see what the fuss is all about. It is just like any other field. Programming is not an easy task. People are not suddenly going to turn into a Linus, a Knuth or a Guido. IMO if you feel threatened because more people are learning to code, you're probably not good enough in the first place.
Additionally, since when have people listened to what you should or shouldn't do? Just because Jeff says that you shouldn't code won't stop the ones who really want to. The inverse is true as well.
Like everything in life, only 1 out of 100 will excel at what they do, 90 will drop out before they even start and 20 will become average coders (yeah I suck at math).
But we all have to try even if we fail, the world needs that unique specimen to move us all forward.
The only thing all these counterpoint blog posts are proving is that while programming may or may not be important for everyone to learn in the future, being able to hold and understand cogent arguments most certainly is. I've read at least two blog posts today making counter arguments to points the op wasn't even making (op being Jeff).
I have a feeling a big part of it is the blogger proclivity to make link bait headlines that are somewhat related at best, deceptive at worst, giving rise to knee jerk reactions.
See this is the crux of what I thought this movement was about. Logical and Algorithmic thinking is what people should be getting from learning to code. This is a fundamental thing like critical thinking which schools have a really hard time making kids learn.
Plus I have to agree with you that today I wouldn't recommend my path to others trying to learn to program. It wouldn't make any sense.
I have to disagree with the sentiment that programming has anything to do with logical thinking. You can write awesome programs on feeling alone. For example, when I'm debugging, I don't think, I simply let my mind explore the catacombs and the solution bubbles up from my subconscious. The benefit which logic brings to the table is being able to communicate your ideas clearly.
Critical thinking is useful but it's not a golden hammer and, in this community, is vastly overrated. Balance between thinking and feeling, on the other hand, is of vital importance.
Get a copy from your nearest library. You are operating in the same mode as most creative mathematicians. My girlfriends at University had to cope with a shorthand pad and pen on the bedside, and being totally ignored for 24 hours at a stretch when the ideas came.
The subconscious only works when fully primed by the way. You must know your code very well for the links to 'bubble up' like that.
Definitely grabbing a copy of that, I had no idea.
Incidentally, I'm one of those developers who hate intellisense and prefer to memorise the code structure, I guess that's where the priming is happening.
I definitively don't think it displaces creativity. I think it actually improves it in a sense. Hones creativity and makes it sharper. And as you said it makes it easier to communicate ideas more clearly. Definitively something important for programming.
I don't see any of these things being on their own the golden hammer. I like to view these skills (creativity, critical thinking, logical thinking...) as empowering each other. Programming is how I believe I got a lot of those things. Maybe I'm wrong and it's not the best way to go to get these for others.
" I simply let my mind explore the catacombs and the solution bubbles up from my subconscious."
I think the subconscious can be trained and get better.
I think you're applying boolean logic where there is none.
I wouldn't say that people should always totally be logical. That's stupid because logic ignores context which is very relevant in the real world.
I would say that one of the skills it teaches is the ability to think more logically. I also actually don't think that's the best skill it teaches. I think it gives people a bunch of other skills, and that "logic" is kind of secondary to the others.
"I wouldn't say that people should always totally be logical."
Oh no, I didn't mean to imply that. What I meant is I believe it's a skill everyone should have, using it or not is a situation based thing.
I believe learning to program is a good vehicle to learn that skill in school.
"I would say that one of the skills it teaches is the ability to think more logically. I also actually don't think that's the best skill it teaches. I think it gives people a bunch of other skills, and that "logic" is kind of secondary to the others."
I agree, it's definitively not the only thing it teaches. Same as Math not just being about learning to count, add, multiply... Yet you should know how to do those things.
>being able to hold .... points the op wasn't even making (op being Jeff).
It seems you argue they should refute Jeff's arguments using logic. But how could they when Mr Atwood did not use logic in the first place to support his opinion; I cannot find any of it in his arguments and I doubt you can. He used rhetoric to appeal to people's mind, and every one else who is writing is doing the same thing.
This was a good post, but the entire thing may not be worth as much as the first sentence. So much of learning is about how you approach the state of ignorance in yourself and others.
"Never listen to people who try to make beginners feel like losers"
Zing. A great litmus test that's simple and has results too.
Too many programming communities, including the most popular web frameworks that are the be all and end all to everything have elements of this.
It's not something to be proud of to feel better about yourself by putting others down, telling others what they do, or how they do it, or who they ultimately are isn't as capable.
It's not just programming. I run into this with guitarists too. I mostly play for my own enjoyment, but I constantly run into guitarists who get off on treating beginners like crap. Even in music schools they do this, and for some weird reason they think that this is how you make students awesome.
Ultimately, these kinds of behaviors in teachers don't make better students, they just kill off the more fragile ones who might have been awesome with some help.
Correct. It isn't just programming. You actually summarized it well when you wrote that people need to do other things (besides programming or besides whatever it is they identify so closely with) so that they don't resent others for "sliding" into their world.
People with more than one passion will generally find less time to resent and more time to educate :)
Really true Zed. Was trying to keep it relevant to hnews as the programming framework/language fanatics are everywhere, including here from time to time :)
224 comments
[ 4.8 ms ] story [ 304 ms ] threadYou wrote this post at a right time with right points. My appreciation is triple-folded. Take a bow, Zed.
Of course that doesn't matter to you. You got to create a sensational headline and a fiery rant to please your fanboys.
Edit: Well, pardon me for having an unpopular opinion. I have no intention of apologizing. Perhaps your opinions will change when you see the damage that incompetence can cause.
But, ultimately, it's not the teacher's right to decide who's "passionate" enough or not. Trust me, if my teachers had any say in my success I'd be digging ditches.
I disagree. In order to do well at a subject in an academic setting, you need the upper classmen to be very comfortable with the basics. "Weeder" courses are always (almost always?) in subjects that are basic foundations for the field. The idea is that if you can't pass it, the things that build on it aren't going to make it any easier. As well, they ingrain a good understanding of the content in those who do pass it.
Since schools tailor content difficulty to the ability of the students, lower ability levels of the upper classmen mean that the class difficulty needs to be lowered. If you're in a competitive college that's trying to teach as much as possible, it definitely their call to only filter people with a certain level of ability. Unless you're at a hyper-elite very aggressive school, I doubt that the content is only designed for an ability level that comes only to naturals. It's generally just designed for "people who can do it well". (Obviously, naturals make up a decent portion of it.)
In addition to that, many other subjects have branches devoted to studying the best way to teach that subject. Computer science is largely missing this, baring some work at universities like CMU and parts of Europe (that I know of).
Until computer science actually starts actively researching how to teach computers science and can produce real research (not their weird non-statistics non-experiments) then these kinds of claims are unfounded. In that event I have to rely on similar research from things like Math and Physics Education which both disagree with you.
In the lower division (first two years), there is often a separation of core classes between math majors and non-math majors. Calculus, for example, and linear algebra. They served as weeder courses for the math majors so that those who couldn't do good math wouldn't advance onto the upper division courses were they would continue to not do well. In addition, there was a somewhat misc. logic class for math majors that was very strict and served as a choke-point weeder class taken just before you would go onto upper division work.
For non-math majors, the Calculus classes were kind of weeder classes, but that wasn't their purpose. If you were an engineering, the engineers had their own real classes that were their own weeder classes. Etc.
But the two tracks disappeared after lower division. Once you were in 3rd year, there was largely only one set of classes. A couple of them had less rigorous counterparts for those only pursuing a teaching certification, but that was about it.
You are right that CS stands out. It's an unorganized field that is still trying to define itself. (Consider how young it is, relatively speaking.) Some schools want it to be mostly theory, others mostly software engineering, most are somewhere in between. There's disagreement over which languages to teach, how to teach them, etc. It's all somewhat awkward, and it needs to be reformed. I'm hoping that eventually we can split it into two separate fields, like CS theory and software engineering, and do a better job teaching both. (FWIW, I also majored in CS, so I saw both sides of the coin.)
However, whoever is downvoting opinions that they don't like - will they cut it out? Seriously, I'd love to know who downvotes because I've noticed a lot of it is unjust. If you notice, there are a lot of considered responses to this considered reply. The debate has continued - trying to censor the opinion of others is pretty horrendous IMO.
You could do anything you want if are passionate about something, ignore everyone claims you can't.
That said, learning coding is self-limiting activity; those who enjoy it and have a knack for it will continue, those that don't will stop.
My only concern, which is a general one, is that humans are pretty good at self-deception, especially in subjective areas. Look at how many people think they can sing, for example. The shattering of their illusions has been turned into entertainment, and for many people this is obviously traumatic.
I have a completely non-technical friend trying to learn javascript. When I asked why, she told me she wanted to write games. As her friend, should I save her feelings and say nothing (and let her squander her time and end up confused and frustrated) or try and reason with her (and then look like a killjoy for seemingly criticising her efforts)?
Currently I've taken the former option, but still agonise over whether this is the 'right' way or not.
I bet you were in the same situation at some point in your life.
If you want to give her a constructive advice tell her that she can use JavaScript with Unity3D for e.g. I bet you will be amazed at how productive one can became when one is passionated about something.
Thanks for the tip, I'll pass it on to her.
Passion means willingness to work your hands to the bone for the startup. Nobody here actually gives a shit about the craft itself. The only aspect of a professional discipline worth being passionate about it its ability to deliver the pie in the sky.
Also people who won't listen to Jeff anymore because of this post, or are really angry at him, are likely being hypocritical. He's making the same sort of a mistake as a blogger that many will make as a programmer, especially if we don't discriminate who gets to try their hand at programming. He didn't ship this out to some scary production place where the blogging equivalent of exposing private data for thousands of user accounts might happen. He just blogged it. Likewise, for the most part, new programmers will be limited in the amount of damage they can do.
Edit: I thought the blog post was civil. The talk on twitter isn't civil, though (in fact it seems Zed is the only one of the two who crossed that line). https://twitter.com/#!/zedshaw/status/202473102674894848
For example, I think people should spend their lives learning new things. After I write a few more comments on HN, I'm going to grab my guitar and go learn a new scale. :-)
edit: an elaboration
I'm trying to figure out what exactly Jeff wrote that you hate so much. You don't even consider his arguments, you just have "a guess about Jeff, and a general message about other people who feel the same way."
Jeff wouldn't write something like this:
"Don't listen to the hipsters who claim that coding is as vital as reading, and who claim that for the first time in the history you can learn to code, because now we have an online JavaScript course that we call "Code Year" or something like that.
But that is what I've got from his post. He's not against people learning to code, he's against making it into something that it simply isn't - a vital life skill.
Also, it's not an attack, it's a counter-attack. People really need to get their order of events in the right order of events.
I've been teaching for 25 years in post 18 colleges in the UK, and I have the granddaughter of one of my first students in my class now (god I feel old, my consolation is that granny was a mature student in her late 20s/early 30s when she did maths with me).
Many of my students are earning money from jobs that did not exist when I was teaching them.
Stuff changes, but learning how to think does not. There is a tension between the synthetic and the analytic, and we need both. Teenagers need to learn attention to detail, and the big picture, and time planning, and the focusing of attention. The school syllabus in every country is a political compromise that shifts over time.
I think a little space for end user style programming might help with the analytic and synthetic modes a little.
Challenge: Learn Puredata the hard way, let's do the attention to detail thing your books do to music by constructing sound?
It seems to me that is the exactly the type of article you'd want to attack in that way.
If you won't attack arguments with faulty logic on logical grounds, and you can't (correctly) attack arguments with correct logic on logical grounds, that implies you can never refute anyone logically, and that all your arguments will be ad hominems and suchlike.
It is perfectly possible to both learn programming and also have other skills. Who knows, maybe you'll be able to do something crazy like apply lessons from one field to another.
Jeff's point is that while certain tools (writing, arithmetic, etc.) are indeed of extremely relevant use no matter what you do, programming doesn't fall in that category, and anyone arguing that all should learn to code regardless of what they do is falling in that fallacy.
(i'm not saying I agree or disagree with that, that's just the way I perceived the post. That being said, Zed's post, especially the last paragraph, is of great value.)
You say one thing, then say another thing. The other thing kind of negates the first thing you said, so, by repeating the recipe, in a short while you have said everything about your topics and you have also said nothing.
Not all writers are like that of course.
But, I think people are sort of misunderstanding Jeff's post. I didn't get the impression that he was trying to dissuade kids from learning how to code in some kind of effort to keep his uniqueness as a programmer. I think the point was just that this whole _everybody_ should learn how to code thing is a little odd.
If you want to code because you think it's cool and you want to become a good coder, then great, learn to code. But I think Jeff's point is that we shouldn't make coding out to be this essential skill that absolutely everybody should learn. If you weren't otherwise inclined to learn to code, don't do it just because someone told you you should.
Not that I completely agree with that sentiment either, I guess. One of the top comments by Fuzz [1] on that github gist is a pretty good tl;dr I think:
"Saying people should not learn how to code is like saying people should not learn how to speak a second language."
I'm sure learning a second language is fun, but I get annoyed when people try and make it seem like it's absolutely vital to do so.
[1] https://github.com/fuzz
I'm guessing you're a native English speaker? Because I can tell you that in many parts of the world, learning a second language is essential if you want a decent job and access to the vast amounts of knowledge, culture and people that the Internet provides.
But where I live, I notice very clearly the difficulties and disadvantages that not knowing English has, and even being able to read is not enough: my parents, for example, are certainly not uneducated people, yet they're not able to fully understand much of spoken English, which means they're restricted to subtitled content - fewer films, no free university lectures, no Khan Academy, almost no podcasts, etc.
And I'm in an European country!
What's a better way to learn C than reading K&R?
I was close to giving up on C till I picked up "C Programming a Modern Approach" and Zed's "Learn C The Hard Way". They were phenomenal.
After finishing them I tried K&R again but was still not digging the style so I did a few of the exercises but not much else. I get that it's a classic but it was written before I was born so I didn't find it all that well written. That's just my opinion though.
I make computers do what I want. Often people pay me to make computers do what they want instead. Lately unity3d.com is doing that a lot.
(http://lucasmeijer.com/)
The resentment comes from me talking to many programmers who say the same thing. Consider it a guess about Jeff, and a general message about other people who feel the same way.
But Atwood didn't say that. All he said was that it's a trade like Plumbing and not a life skill like being able to read.
>The resentment comes from me talking to many programmers who say the same thing.
But programmers DON'T mostly say that. In fact, I had a very animated discussion with Randy Stross of New York Times at YCombinator where EVERY programmer around was arguing that programming has become an important life skill and should be taught in high school. Of course, this is anecdotal but even the recent articles refuting this on HN shows most programmers are for everyone learning programming.
I don't know you as well as other members of the community here but this article seems to be really harsh and doesn't even touch the argument that Atwood made in his article.
Wow, alright I'm just going to stop replying to people who can't even read the title, but still claim it's not saying what it says.
The title is a highlight of his article. Presenting the title of his article as a summary, as you do in your article and repeatedly in your comments, is disingenuous and misleading.
I didn't think much of it. The tangent about Atwood's son was completely tangential and unrelated. Atwood's argument was not about computer science education, it wasn't about meritocracy. You completely missed the point.
I'll reiterate that I do agree with most of what you wrote and I upvoted this submission because of what you wrote, I just don't think the stance in this (and other) comments is at all valid given the title of your own article.
Consider writing a blog post that actually responds to Jeff Atwood's post, rather than a straw man constructed from his title?
But so is basic electronics and basic electrical engineering. Where do we draw the line in the modern world?
The current system does not let you "learn what you want to." It teaches you an established core curriculum.
Personally I think an overhaul of the education system would be far more productive than letting internet celebs duke it out until their agenda gets pushed down the throats of K-12 students.
Partially yes, partially no, and for different reasons than claimed in this article. He does argue that fewer people should pursue programming, yes, but it's because they would be more effective elsewhere. His thesis is that people decide that the solution is for them to write code before they know what the problem is, and that some people make careers that follow that trail of thought. From a purely efficient viewpoint, a work force is more effective when there are fewer people mis-fit into it.
A guess about his motivations? So basically, this was a strawman to vent frustration onto?
Jeff's post: Please Don't Learn to Code
Zed's books: Learn To Code The Hard Way
I get it. There are worse hobbies you can have and it can solve problems and spread information, etc., etc. The point is that programming should be viewed as a means to an end. Too much focus is put on coding as an end goal and writers on TechCrunch whom I suspect have never coded anything in their lives talk about how learning to code is the hot new thing and everybody should be doing it. I think it is far more useful to learn a variety of subjects, figure out what it is you want to do, and if building software is the way to achieve it, then go learn to code. But learning to code well is an enormous investment of time, so to learn to code you are choosing not to do other things that could be far more valuable to you.
A lot of people start with learning to code and then look everywhere for a problem to solve with their new skill set. That is the reverse of how problems should be solved. The technology is irrelevant. The skills are irrelevant. The problem is what should dictate the work.
I suspect that really, Jeff and Zed might actually agree that people should be free to tinker, and resources should be available for them to learn to tinker (see Jeff's plumbing analogy--would the Jeff Atwood of plumbing tell me not to learn how to fix my leaky faucet because there are already enough bad plumbers in the world?).
Certainly, some people learn to code for the wrong reasons, and they see every problem as a program to be written. But hey, if they want to do that in their basement (or even as part of their job), let them--we've all had to learn one way or another that the world doesn't work that way.
Please note that I didn't say that I'd provide it to a newbie coder. I merely pointed out that it's not an "antiquated tome". It's very definitely useful, and has been so for some time and remains that way. In fact, I actually think that Zed nailed it on many points in that article.
I find it very interesting that my comment was downvoted merely because someone disagreed. There was nothing inflammatory about my response, nor was there anything factually incorrect. I offered a differing opinion, of which someone decided they would hit the downvote button, instead of doing what they should do - post a response.
For me it was about coding being a craft and not a necessary skill like arithmetics, reading or a secondary languages. (This is true not only for coding but for nearly every craft there is.)
So I think it was more a post against the "Every one should learn to code, for a better world" movement (if there is such a thing) than a keep on doing what you do and stay away from my craft post.
While I thing bloomberg should be able to do what ever he wants in his free time. I agree with the assessment that it will be highly unlikely that leaning to code will make a difference in his daily work.
So while this reaction was a entertaining read I think it was reacting to something that wasn't be said.
Atwood: > don't advocate learning to code just for the sake of learning how to code.
Shaw: > Never listen to people who try to make beginners feel like losers
The OP here is non sequitur at best and strawman at worst. Certainly not a model for constructive contribution to a conversation.
The entire affair from here seems to be a nearly-pointless dramatic back-and-forth between loud people. I read HN for critical insight, not bickering.
http://en.wikipedia.org/wiki/Strawman
I'm disappointed that Jeff has taken what is essentially an elitist and exclusionary view. Programming is not a zero sum game. Every new programmer isn't a threat to your livelihood and your existence (unless, you know, you suck at your job).
There's a lot of wisdom in the last two paragraphs. Another facet of this is those (typically young) programmers who treat any criticism of their ideas to criticisms of themselves as people (of course this isn't unique to programming).
You need to get over that as it is an impediment to becoming more proficient at your chosen craft. Your work isn't your identity. Don't treat it as such.
In my opinion, Jeff projected some of his issues with the current state of the software development profession (mainly the "hack fist, ask questions later" aproach). The idea that bothered him wasn't born from elitism, identity, or the fact that people were learning to code, but the idea that, to him, this makes this issue worse.
It's true that he is making an implicit leap from "everyone should learn to code" to "everyone should be a programmer". I personally don't agree, but maybie he has a good argument. Maybie he should try to explain that connection a little further.
I don't necessarily agree with that, but that's what he said. And this post completely misses the point and makes Jeff's post out to be something it was clearly not meant to be.
Your argument isn't evidence for anything at all. There's a big difference between reading and coding: reading is a very useful method of communication. Everyone should be literate just like everyone should be able to speak. Coding, on the other hand, is much more along the lines of plumbing than language.
The basic crux of the issue for me is this: you can control a society via the flow of information through that society. Both reading and more recently, programming are activities intimately connected to the flow of information through modern society. Along with an understanding of programming comes a greater understanding of computers to computer networks to privacy issues and all manner of things that more people should be thinking about more conciously, regardless of whether they wish to program as a career.
While no doubt the flow of material through plumbing pipes is also quite important for societies in general, I don't think an understanding of plumbing affords quite the same insights and protections against being potentially manipulated by the powers that be as one might acquire through the pursuit of reading and programming.
1. http://programorbeprogrammed.com/
Coding really is a specialized job. For sure, some people would be better off learning it because it can be useful, but everyday people don't need to know how to code just like they don't need to know how a car works. All they need to know is how to drive safely, or use the computer securely.
And really, I don't get this whole "learn to code, learn how your computer works" idea. When I first learned ruby, I didn't magically gain an understanding of filesystems and networks and all those other things. My dad, on the other hand, who doesn't know how to code, in fact he didn't even know what a kernel was, can fix your computer up in a jiffy (hardware and software both, particularly windows). He's in fact still better than me at this, because he knows all the intimate little details of the windows UI and what each thing does, what each error probably means.
So the point is, you don't need to learn how to code to know how to use a computer well, and learning javascript won't really help you with that either. If all you want is to know how to protect your computer from the powers that be, don't learn to code; just listen to what the experts have to say on the subject.
Programming is not a specialized job and it does not require specialized knowledge. Even idiots can program. The fact that you can program shows that you had interest and access to computers but it does not put you in a special club. Programmers ARE everyday people, not a priestly caste who can be distinguished from birth. And in the last few decades their numbers have dramatically increased - with each generation's clueless and accidental beginners becoming the next generation's experts.
We don't tell people "please don't learn any math" or "please don't learn any geography" even though most people will not become specialists or need a specialist's understanding. These are still generally useful things and things which make you an educated and modern person. We don't know where they will be useful or to whom. It benefits many more individuals to know something about these, and it greatly benefits our society that many individuals know something about them.
"just listen to what the experts have to say" is something that started to change as of the Gutenberg Bible, thank God.
I think people are falsely equating all the marks of a good programmer as being the benefits to learning how to program.
"It makes you logical, methodical, organized", etc etc.
Yes, these are all qualities you'll find in a good coder. However I don't think programming is a good way to teach these thoughts! NOT AT ALL!
I learned all those things by writing English papers. I had lots of problems writing in my early years, so I studied, and worked hard. I learned how to outline my thoughts. I learned how to properly revise a work. I learned how to organize my thoughts into logical units. I learned how to make those logical units flow into one another. I learned how to arrange those units so that they each make sense in context. I learned how to target a unit to a specific audience.
I think programming would've been a terrible way to learn those skills. English is at least somewhat forgiving. Even if your sentences aren't perfect, the general idea still comes across.
Learning to program involves weird and obscure syntax, you're constantly fighting with the compiler, you're dealing with stack-traces a mile deep every time you make a mistake.
Programming is an incredibly challenging way to learn problem solving.
Obviously I found that challenge to be worthy of pursuit. Certainly we shouldn't be discouraging anyone from learning how to code. At the same time though, I think it's incredibly offensive to say that everyone should know|learn how to code.
No doubt your father is an acomplished man, but he would be a better Windows power user or sys admin if he was comfortable with PowerShell. One of my pet peeves are server admins who don't thnk they need to know any programming and thus don't truly understand the requirements of the developers who interact with their servers.
I feel that we're discussing things (if you'll excuse the cliché) too far inside the box. If one has a very blinkered view of the advantages that programming can provide then yeah, it's just a highly specialised tool, useful only to a few. But that's not what programming is to me. To me, its about communication, expression of ideas and discovery.
You say that learning JavaScript won't help you to understand your computer better. I disagree. By learning JavaScript, you will involuntarily learn more about one or more web browsers and perhaps from there, you may become more informed on how information is transmitted across the web and perhaps from there, you may learn to better protect yourself through more consistent use of encrypted data transfer, just as an example. You are right when you say learning to program does not magically impart knowledge of file systems or networking but when I learned Ruby, I would have had to try pretty damn hard not to learn by osmosis at least something I didn't know before about these topics while I was learning the language.
So yes, in the narrowest sense, programming is not currently as important as reading. But what does the public potentially gain if we suggest that it is? And I predict that the distance between ideal and reality will close as the decades pass.
More recently similar arguments were made against educating freed slaves in the USA
I think it was reasonable for some people not to learn to read 200 years ago.
The American Revolution was spread through pamphlets passed out at the local tavern. Newspapers played a major role in educating the people about the Revolution and passing around the text of the Declaration of Independence, Articles of Confederation, and Constitution, so no, it was not reasonable for some people not to learn to read 200 years ago.
By the way, if Gutenberg's Printing Revolution made the written word so cheap that pamphlets could be handed out to as many people as possible, I don't think there would have been many who could not afford books 200 years ago. If there were many who didn't use the reading skill much, then there wouldn't have been all the hoopla over the Stamp Act the British imposed on the American colonies. You sorta need to know how to read to make any use of stamps 200 years ago.
http://www.mcsweeneys.net/articles/literacy-rates
The post title was an exaggeration, like almost all of his blog post titles are. If you actually read the content of the post, you realize that he clearly wasn't actually saying.
First of all it sounds much better than "I read it, he is correct. This is why I wrote mine." considering that he is refuting the idea presented.
Being biased is simply being opinionated and luckily Zed Shaw's opinion is that everyone should/can learn code. This is why he has free books, which actually teach some programming to everyone.
Here's a quick illustration:
Ad Hominem: Jeff Attwood gets off on being an ass. Therefore he is wrong.
Not Ad Hominem: Jeff Attwood gets off on being an ass. Incidentally, he is also wrong.
Seriously, understanding of logical fallacies seems to be in very short supply around HN. If I didn't know any better I would think I'm over at Reddit.
It does not mean an argument in which a person insults the person claiming the thesis. Insults rarely add anything to an argument but that is a different matter.
Also note that an ad hominem doesn't need to be insulting - it could be a very polite statement such as "This argument is incorrect because Mr Atwood is unqualified to discuss matters of education as he is not himself an educator". This is not really insulting (though I would argue that Jeff is in a way an educator) but is still an ad hominem.
I didn't see anywhere in Jeff's post where he was saying he wanted to make beginners look like losers. What he is saying is that it isn't necessary for everyone to learn how to code, that a lot of people seem to have a passing interest in it but aren't really serious about it. His example is the fact that Mike Bloomberg is using it as a cheap political stunt, that his time as Mayor would be better spent accomplishing other things. Now, that's somewhat a matter of opinion, maybe Mike Bloomberg really is serious about wanting to learn how to code, but somehow I doubt it. This is a far cry from Jeff wanting to make people feel like losers.
"He's telling other people's kids to not learn to code. He's telling adults who want to improve their lives, or just learn something new. He's telling people from other professions that no, programming won't help them. Why? Why would Jeff tell people to quit and just let the professionals do this? Because of resentment."
That's a complete assumption, in no way backed by anything Jeff said. I didn't see any "resentment" in that post, but you can read into anything you want and make any wild assumptions you want, as long as it makes your post more sensational.
He's not saying that your's or anyone's kids shouldn't learn how to code, he's saying that he doesn't see it as a basic skill we should be teaching children, along with reading, writing, and math. I don't necessarily agree with this, but I get where he is coming from and I'm not going to grossly exaggerated Jeff's position just to make my point.
So, yah, maybe Jeff is wrong, but you're post certainly didn't address what he was actually saying.
His example seems to be more him having a bone to pick with Mayor Bloomberg. Maybe, having a mayor that extols the virtue of learning something will help improve student absenteeism. Who knows?
Do you honestly believe so many people on here are so bad at reading comprehension that they can't parse the phrase "Please don't learn to code"? I think you're smarter than that. I think we both know that's a straw man. What actually happened was that many people read Jeff's post and realized that the title "Please don't learn to code" was not a summary of his article, it was a title, presenting the highlight of his article, which is that there are some people in some situations in which he'd tell them, "don't learn to code, learn this other thing that will be more useful to you".
But it's silly to criticize people's reading comprehension on the basis that they read the article rather than just the headline.
Programming is a super-power, even if you only know a little bit. Knowing how to program gives you abilities to create unequaled in the history of the world. I think that the more people who know how to program, the better, even if they "suck" by comparison to a rock star programmer (or alternately a fat guy who knows C++ [1]).
Maybe 95% of people will never be lead programmer on a commercial product, but almost everyone ends up, e.g., searching Google -- and not being afraid of complex search results can mean the difference between digging through six pages of garbage and getting relevant results right away because you weren't afraid to use the minus operator or other more "advanced" search features.
And probably most people in the workplace have to deal with an Excel spreadsheet from time to time -- being willing to dig into creating more complex formulas because they aren't afraid of lists of functions with parameters would be an obvious side effect of knowing a bit of code.
Regardless, Zed is saying that no one should be telling you that you SHOULDN'T learn to program, period. And I agree.
[1] http://betabeat.com/2012/05/04/pro-tip-from-silicon-valley-s...
Natural languages are ambiguous. One of the reasons why they’re more fun than programming languages.
Hint: other people's articles, just like yours, consist of more than a title.
Nice article by the way, and thanks for your work.
Even that would be stupid. You probably don't know if you need it before you know it.
Also it could be argued that everybody "needs" to know how to code, in that pretty much everyone spends a good portion of their lives in front of a computer, and knowing how to automate its behavior would make life easier for a lot of people.
The funny thing is, pretty much everyone needs plumbing skills too. That doesn't mean everyone is gonna learn them, or should become a master plumber. But knowing a thing or two about it certainly can't hurt.
Zed doesn't exaggerate Jeff's statements. The original statements are already exaggerated and caricatural, portraying reality as a binary thing : either you can program, or you can't. Things are not that simple
Technically most people can get by without literacy, general education, birth control or hand washing. But it's just offensively elitist to say that "most people" don't need things which enrich life and improve opportunities significantly, in aggregate.
How do you know who should be permitted to learn to program (or apply the calculus, or read)? Who are you to say what is a "more effective route"?
Nobody has said anything about doing a half-baked job. Nobody was born an expert, not even you. It's ridiculous to aim elitist bully talk like "half-baked job" at beginners when writing shit code is an unavoidable developmental stage every programmer goes through.
While we are discussing half-baked jobs, let's talk about a status quo where huge numbers of people are doing piles of mind numbing, annoying labor (and making mistakes) just because programming has not been applied. In many cases the funding and justification are not there to improve the process, in no small part because of a traditional culture which tends to programming as effete play or impossible wizardry or both. Do you really mean to suggest that there is NO value in automating or improving processes (or constructing things for yourself) unless you are working full time as a 'professional' developer? The technology is getting easier and easier for people without deep computer science background, so you are on the wrong side of history.
Programming is an incredibly valuable development of this century. It's as much part of the modern human heritage as banking or oral contraceptives. It should be applied in MANY more areas than it is applied.
This macho, elitist attitude is one of the biggest things which keeps a ton of women out of programming and related fields. Treating programming as some kind of venue for manhood comparison, and excluding people who do it for the love and the pursuit of knowledge, is detrimental to the art. It's a bad and unproductive attitude and it should stop yesterday.
So putting the sentence "Please don't learn to code" out of context is just not fair and misleading. He wrote this post like he wrote everything else he does, with his style. You have the right not to like it but please do not state your opinion as fact. How does the post is more useful ?
The idea that everyone should learn to program doesn't disturb me at the least but it's just a waste of time. Comparing programing langage with english, french, russian or whatever is just a joke. The day the first words of a baby will be the binary representation of "Mommy" I'll rethink about it.
In truth those who want to get involved in programming for whatever reason (as a hobby, professionally, by curiousity ...) are those who should learn to program. So let's drop the hype, pleadge and let's keep those good websites which help to get started. I find knowing how to program really useful, empowering, fun and challenging but not everyone has to feel the same way and not every programmer feels like I do. That is what Jeff Attwood tells in this post, while humouring himself with the movement. So please learn to code, if you want to but you'll still be cool if you don't.
Writing computer programs is not something out of the ordinary. Sure, it is applied math, but it is not quantum physics.
I want people to learn. The more people know to code, the more innovation we will all enjoy.
There is a generation that is growing up with the power of computing. This is a first in history. We (as a race) will be able to do so many things thanks to it.
But we need people to learn. Good/bad code, its all the same. All it matters is that the ideas are implemented.
Great post Mr. Shaw. I've always looked up tp you, as a person and coder. Thank you.
Quantum physics, and all other forms of physics are applied math.
Quantum physics is not even aptly defined because no one understands them. Sure, we may have some insight into how some things work at the quantum level but we have not a clue.
My point, which I reason you missed, is that people find math hard yet they manage to learn how to program. These days, one can make a reasonable living as a coder without knowing much math.
I'm not even going to pretend to be a genius, not even smart. But I can sure understand that programming is not what fellow engineers make it out to be.
It is neither Quantum physics nor hard. It is, in my opinion, simple (and beautiful).
Discouraging people from learning how to code is akin to discouraging people from learning how to speak.
In a world where the Internet is the only mass medium of communication, knowing how to code enables freedom of thought, and speech.
A freedom we cannot let die.
Additionally, since when have people listened to what you should or shouldn't do? Just because Jeff says that you shouldn't code won't stop the ones who really want to. The inverse is true as well.
But we all have to try even if we fail, the world needs that unique specimen to move us all forward.
I have a feeling a big part of it is the blogger proclivity to make link bait headlines that are somewhat related at best, deceptive at worst, giving rise to knee jerk reactions.
But, sadly, I'm a human and not a computer so I tend to write like a human.
Plus I have to agree with you that today I wouldn't recommend my path to others trying to learn to program. It wouldn't make any sense.
Critical thinking is useful but it's not a golden hammer and, in this community, is vastly overrated. Balance between thinking and feeling, on the other hand, is of vital importance.
http://press.princeton.edu/titles/5896.html
Get a copy from your nearest library. You are operating in the same mode as most creative mathematicians. My girlfriends at University had to cope with a shorthand pad and pen on the bedside, and being totally ignored for 24 hours at a stretch when the ideas came.
The subconscious only works when fully primed by the way. You must know your code very well for the links to 'bubble up' like that.
Incidentally, I'm one of those developers who hate intellisense and prefer to memorise the code structure, I guess that's where the priming is happening.
Thanks for expanding my awareness.
I don't see any of these things being on their own the golden hammer. I like to view these skills (creativity, critical thinking, logical thinking...) as empowering each other. Programming is how I believe I got a lot of those things. Maybe I'm wrong and it's not the best way to go to get these for others.
" I simply let my mind explore the catacombs and the solution bubbles up from my subconscious."
I think the subconscious can be trained and get better.
I wouldn't say that people should always totally be logical. That's stupid because logic ignores context which is very relevant in the real world.
I would say that one of the skills it teaches is the ability to think more logically. I also actually don't think that's the best skill it teaches. I think it gives people a bunch of other skills, and that "logic" is kind of secondary to the others.
Oh no, I didn't mean to imply that. What I meant is I believe it's a skill everyone should have, using it or not is a situation based thing.
I believe learning to program is a good vehicle to learn that skill in school.
"I would say that one of the skills it teaches is the ability to think more logically. I also actually don't think that's the best skill it teaches. I think it gives people a bunch of other skills, and that "logic" is kind of secondary to the others."
I agree, it's definitively not the only thing it teaches. Same as Math not just being about learning to count, add, multiply... Yet you should know how to do those things.
It seems you argue they should refute Jeff's arguments using logic. But how could they when Mr Atwood did not use logic in the first place to support his opinion; I cannot find any of it in his arguments and I doubt you can. He used rhetoric to appeal to people's mind, and every one else who is writing is doing the same thing.
Zing. A great litmus test that's simple and has results too.
Too many programming communities, including the most popular web frameworks that are the be all and end all to everything have elements of this.
It's not something to be proud of to feel better about yourself by putting others down, telling others what they do, or how they do it, or who they ultimately are isn't as capable.
Ultimately, these kinds of behaviors in teachers don't make better students, they just kill off the more fragile ones who might have been awesome with some help.
People with more than one passion will generally find less time to resent and more time to educate :)