secret
Last active

  • Download Gist
learntocode.markdown
Markdown

Jeff Atwood has it wrong. He's a writer and programmer that I deeply admire. But his last post, Please Don't Learn to Code, is simply wrong. At least as "wrong" as someone's opinion can be. That is, it rests on a deep equivocation and a deeper underestimation about human thought.

Jeff writes, 'The whole "everyone should learn programming" meme has gotten so out of control ... The "everyone should learn to code" movement isn't just wrong because it falsely equates coding with essential life skills like reading, writing, and math. I wish. It is wrong in so many other ways.' He goes on to enumerate the ways that it is wrong to believe everyone should be able to program.

Now, Jeff is certainly right that not everyone will get jobs as programmers and not every should aspire to this end. In truth, as a pure profession, programming is really only for people who enjoy being skewered between the horns of obsession to detail and ever-changing success criteria. That's beside the point. The question isn't: "Should everyone renounce their careers, put up a poster of Knuth (are there Knuth posters for sale by the way?) and sprout a neckbeard?" The question is: "Should everyone learn to program?" Jeff only gives lip service to this important difference. He equivocates on the point to reinforce a knee-jerk reaction to the recent faddishness of learning to code.

He mixes up points like "can you explain to me how Michael Bloomberg would be better at his day to day job of leading the largest city in the USA if he woke up one morning as a crack Java coder?" (the professional benefits of programming) with points like "Being able to get around on the Internet is becoming a basic life skill, and we should be worried about fixing that first and most of all, before we start jumping all the way into code" (the personal benefits of learning to program). By wandering back and forth between these poles of personal and professional he avoids having to take the argument that learning to program may be tremendously important personally even if you cannot be directly employed to do it.

Jeff equivocates because he has missed the point about why we learn. We learn new things because our perception of the world is shaped by our mental catalogues of what is possible and what it useful. We constantly filtering out perceptual noise on the criterion that it doesn't help us achieve some goal or end. Just think of when you learn a new word. You suddenly hear it everywhere. Not because everyone else just learned it too, but because you had been filtering it out. It didn't help you get around because you didn't know how to use it.

If you don't know how to program, you filter out all parts of the world that involve programming. You miss the loops and divide-and-conquers of everyday life. You cannot recognize programming problems without the understanding that outlines these problems against the noise of useless or random information. Sure, when I see a loved one slavishly reordering a list of contacts by hand, I recognize a programming problem. It's second nature to understand the reason that the form didn't submit or that page couldn't load. Yes, I can "see the code" behind my phone and know that poor memory management, not the mercurial favor of the Gods caused that app to crash hard. But this is only because I understand programming. I am only able to function in this digital wasteland of convenience -- and not be dragged along sipping a slurpy -- because my search space for problem solving and perception has been expanded by my learning to code.

Now, Jeff mentions that we should have some base level of digital literacy. But I am hard-pressed to figure out how I would explain REST in a vacuum (how I explained REST to my wife notwithstanding) or describe what's causing that Android phone to throw a "null pointer exception". I don't know how to teach someone to recognize that a problem is caused by or can be solved by programming without teaching them programming. Maybe that makes me a bad teacher but I find that the abstract notion of, say, an if-then statement is far more sophisticated than, "Hey try this 'if' and a bunch of curly brackets and parentheses in your console".

Jeff writes, "But I can also recognize plumbing problems when I see them without any particular training in the area." This isn't right. He may not have had formal training (the professional/personal equivocation again) but he has been trained by an unruly digestive movement, a low water tank and the horrible things 18-22 year-olds do to and around toilets. My dad showed me how to fix a broken chain in the tank. Before I learned that, toilets had three states: working, cloggged and broken. After learning to fix the chain, I added a new state to which my toilet-perception could resolve: loose or broken chain. Again, the ability to take in, cut up and categorize the world is a product of the things learned.

Jeff makes some good points in his list of reasons why people shouldn't learn to program. Unfortunately, none of them are relevant:

  • More code is not necessarily desirable: Jeff goes on to refute this in the next bullet point. This is a strawman. No one wants to write lines of characters. Everyone wants to solve problems and the desire to create code for code sake is a problem in the profession as well as outside of it.
  • See above.
  • It puts the method before the problem: this is cognitively wrong. You can't figure out your problem without the understanding of what possible problems there might be. Learning these possibilities is learning to code.
  • Most programmers aren't good enough to do their jobs: So we shouldn't have new ones? That's like saying the solution to schools failing because of teachers underperforming is to stop training teachers. As if we can eradicate bad teachers/programmers by simply eradicating them all.
  • You might not get rich and famous: We didn't start programming because we loved money. We are smart enough to become bankers or silk merchants. We became programmers because we are obsessed with learning and changing and making machines learn and change.

In summary, learning to program is not the same thing as training for a programming career. Learning new skills opens up new perceptual avenues and cognitive spaces. I'm learning to sew right now, not because the world needs another tailor but because I want to be able to recognize quality in clothing and create pieces that I can't find. Novice coders feel the same way about their digital goods and should be encouraged to continue. Learn to program.

This is finally right post. Can't believe Jeff wrote that post.

Shorter version: Saying people should not learn how to code is like saying people should not learn how to speak a second language.

I believe that Jeff Atwood has it right, actually. I do agree that everyone should be able to program in the same way that, as in your example, everyone should be able to sew. However, I don't particularly enjoy sewing, and I rarely find myself wishing that I were better at it. I think that you've missed the point of Jeff's article. Sure, everyone could benefit from learning to code, but not doing so will not affect you in the same way as, say, not learning to read. In fact, I think it might effect you in a similar way as not learning to sew, or not learning to cook.

One more thing - why would you need to explain REST to someone who doesn't write code?

All I have been reading is pretty much equates to this --> http://www.youtube.com/watch?v=TG4f9zR5yzY

Why are "power user" and "programmer" being equated?

Really? We all know that what we are really hoping for is more power users, but you're all using the techbubble/paradigmshift/etc interest in programming to hoist "power user" to mean "programmer."

Power Users can do advanced search, organize their bookmarks, understand basic CLI commands, etc. Programming assumes this, but most people aren't even power users. Yet we expect them to just go whole hog into programming?

I get what you're all trying to do "hack your friends." But seriously, none of these arguments seem valid, or well expressed. Seriously.

That's interesting, nerdfiles, but why is there a necessary distinction? If power users need to learn code to use powerfully, sed/awk for command line stuff, js for web scraping, is that any less learning to code? I agree that "going whole hog" into programming is wrong-minded for many people. But you don't need to go whole hog to teach yourself how to loop over some divs, count numbers of lines in a file, etc. And to say that is less "learning to code" is just an arbitrary distinction, no?

@trey-jones, you are right on. If the point of the Atwood post was that learning to code is getting in the way of learning to read, then I would whole-heartedly agree with you. Maybe that's the bigger point, that we should consider coding as essential as reading or writing (though one day it might be). But is anyone really making the argument that coding literacy should replace regular literacy?

On explaining REST (just the HTTP version), it all started when my girlfriend needed a form submit on her website. She couldn't understand why the place a form hits is different in a sense, POST v GET, than what she does when she navigates to a page. Sure, she didn't need to understand all of REST but she did need to understand that a form doesn't make things happen by magic. It just hits an address with some information. Helped her grasp the world she was diving into.

I believe Atwood is correct. It's simply ridiculous to think that "everyone" should learn to code, you should learn to code if you feel your life can be enriched some way by doing so. These sort of blanket statements should be reserved for ideas that truly apply to everyone, regardless of the perceived value of said idea. Something like "Everyone should have access to clean drinking water" makes more sense.

I believe everyone is entitled to one's opinion, so I do not think you should say whether Jeff is right or wrong.

I share Jeff's belief that "everyone code" has gotten out of control. It's fantastic to see that everyone has the ability to code if one desires, but I don't think you or anyone else should tell them that they should code because you believe it's so awesome. That's your point-of-view, I believe there are a lot of things that can benefit someone, from cooking to carpentry - but you do not have the time to learn everything to make you really good at that craft to be worthwhile. I think this can be said of programming - this is a profession that can be tremendously rewarding if you stick to it and make it a fine craft. But I do not recommend it as a "ZOMG I NEED TO LEARN PERL."

I see learning as something you do to better yourself in the profession that you're in. Like Jeff, I don't think it's necessary for the Mayor to learn JS - I believe his time can better be spent learning that will benefit his work. If you're unhappy at what you do and think that programming can lead you to happiness (as it has for me) then it's great.

And if you are still incredibly passionate about people learning programming, what language do you suggest they learn? What is right?

Btw, the money thing is quite the opposite - the reason for the rise of "brogrammer" is the allure of fast-money and internet-fame. With constant news stream of start-ups being bought for 8-9 figures is a constant temptation for young people - you can't argue with that.

Everyone is correct. Now can we just leave it and the rest of the world to get on with each other. I think tech circles are a little too inward looking at times. All of my non-technical friends really couldn't give a shit about 99.9% of this stuff. I work at a digital agency and half the staff look at you funny if you ask them what browser they use. They've about as much interest in programming, actually, forget programming, they barely want to bother to learn how to use the table of contents tool in google docs let alone macros.

I'm slowly learning to have detox days off hackernews et al to remind myself what the actual planets inhabitants care about. Which invariably isn't computers. This coming from a hardcore nerd... just an increasingly realistic one.

You hit the nail on the head with "We learn new things because our perception of the world is shaped by our mental catalogues of what is possible and what it useful."

This is the gain that Atwood and others are completely ignoring. I think pretending that coding is some skill that only a certain elite group needs to be bothered with is akin to saying that learning to read and write was something only scholars need to be bothered with. There was a time when survival was not factored around literacy and if people employed the type of attitude certain people are putting out there towards literacy, we would live in a very different world.

It seems that many people don't understand what 'coding' is. Perhaps it is an artifact of the actual language, but let's reframe the problem as 'programming' . Programming is not simply the rote act of adding characters to a file to do magic. The truth is, programming is problem solving, and enhancing problem solving skills is unquestionably a lifelong personal improvement, for everyone. All of the arguments provided thus far seem unable to elicit this element, and it is in my opinion, the most important element. When hiring a programmer, it is rare to be questioned on syntax, or verbiage such as is common in language, but it is far more common to be asked difficult lateral thinking puzzles. Why? Because it is a programmer's ability to solve these problems, and express their solutions in the simplest language possible, that is valuable.

I think everyone should be always trying to learn more - a new language, more advanced cooking skills, basic plumbing, or whatever. We should instill our kids with a burning desire to keep learning even when they've graduated school and are in the workforce. I think over time, with that desire to learn something new, basic programming skills will be picked up by more and more people, along with basic car repair skills and basic carpentry. But everyone doesn't have to learn how to do it.

@esmooov I agree for the most part; however, I'd like to preserve not necessarily a distinction, but rather a difference. I'm looking at "information wealth" generally speaking, which is what I truly believe is what compels us to talk where we make analogies comparing drinking water or reading. Being "information wealthy" is important, but I do not believe being a programmer is necessary. Understanding flow controls, data structures, algorithms, etc. often gets lumped into "programming." Perhaps what I am saying is that I'd like to see a richer analytical practice to this argument, where what we want is rigorously defined. Most of my friends who are unknowing of CISPA, NDAA, GMOs, stem cell research, cancer research, foreign policies, the middle east, AIDS/HIV research, SpaceX, etc, etc. are hurting me not because they're bad programmers or non-programmers. TV pundits don't need data structures surely, but whatever we typically expected of power users, I believe, is what we're truly aiming for with our concerns as web programmers, CSers, SEO/copyrighters, etc.

@nerdfiles This is great. I'd love to read a rich, analytic assessment of our vocabulary around programming. As @wcdolphin rightly mentioned above, our current lexicon is sloppy and oversimplifies. It works against us too. We can't ask someone to learn program without invoking the fear of hoodie-d folks plugged into the matrix and malloc'ing their brains out. I would move that we can democritize the digital world by enriching the way we talk about it. "Scripting" was the first attempt to demystify "programming" but even that has the taste of scriptkiddiez and lulz. What's more, the more granular vocabulary would impart programming concepts formally, by way of its structure. If you have different words for things, you can recognize a difference. This is the first step to learning.

I don't understand why any of this stuff is worth arguing about. Why does Atwood care what people do with their free time? It seems there are a lot of assumptions being made about the motivations of these aspiring programmers. I see nothing wrong with CodeYear. I see nothing wrong with everyone knowing something about programming (hell, it'll give me more to talk about at parties), just as I see nothing wrong with everyone knowing a little something about singing. Singing isn't an essential skill for everybody's daily lives, and neither is math, really, but they both make life more interesting and are worth knowing about. These topics have the potential to enrich our lives, so why not learn about them?

Sorry, but Jeff got this right in his post. If you are a programmer then you already have lost perspective about what programming offers to a person who is not or will never really be a programmer. The best schools cannot teach this stuff to a very high percentage of people! Don't hack your friends (this little movement to turn friends into coders) unless they show a deeper interest and desire to understand problem solving through programming. It's somewhat of a dead end job anyway as we self cull our ranks and If we continue to do our jobs right won't we will eventually make ourselves obsolete anyway? The point isn't to make people better at adapting to machines, it's to make the machines adapt to the needs and desires of everyday people, to improve and enhance the human condition, not mire all humans (or even your geeky friends) in an extrapolation of logical instructions that will be outdated in a year, and all but forgotten in less than a decade (to eventually be a footnote in an intro to computers course). Latin, French, Mandarin Chinese, and even English are not likely to become just a historical footnote in less than many centuries so please stop comparing code to real languages. Code as a language has none of the mental, emotional, cultural or social benefits that learning a second language does (Mostly, only programmers are capable of missing the point and thinking it does).

Love your post. You totally nailed it. Jeff actually made a lot of good points, it seems like he takes "code" too seriously, when what Codecademy and other services are doing is to increase everyone's digital literacy and help give the people who could be great programmers but might not have found their way into the field on their own, a leg up.

This is exactly why we've built Skillcrush--to increase the number of web crafters and help people better understand the technology that impacts their lives on a daily basis. We are particularly interested in reaching audiences that have traditionally been left out, and its so important that messages like yours get out to them: learning some code will help so much with your understanding of all tech and empower you to better navigate this new tech-driven world.

And, since you're learning how to sew, we thought you'd enjoy learning about a little about Lily Pad Arduino (http://skillcrush.tumblr.com/post/23100887397/the-magic-of-lilypad-arduino).
Now that you've mastered basic stitches, you can put those skills to use sewing your own circuit boards :)

Perhaps more important than knowing how to code is reading comprehension. I've developed a quick Quiz for any readers of the Atwood article:

  • 1. Did Mr. Atwood state or imply that learning new things is bad?
  • 2. Is "computer literacy" the same thing as "computer programming" ?
  • 3. Is problem solving / analytical thinking the same thing as computer programming? If not, is one a superset of the other? If so which?

Answers: 1. No. 2. No. 3. No, Programming consists of many things, of which problem solving is one. So Programming is a superset of problem solving. Not the reverse as many commenters seem to believe ( that without programming one cannot think anlalytically or solve problems)

I think the majority of people who disagree with Mr. Atwood disagree when he says that programming is not an essential skill such as math and reading. But immediately after making that statement, in the very next sentence in bold-face he presents the challenge which I've yet to see any of dissenters pick up successfully:
can you explain to me how Michael Bloomberg would be better at his day to day job of leading the largest city in the USA if he woke up one morning as a crack Java coder?

But I think what's wrong with Atwood's perspective is the idea that the "learn to code" movements aimed at laypeople are attempting to turn them into a crack Java coder - they're not.

I totally agree with @schell here:

Why does Atwood care what people do with their free time? It seems there are a lot of assumptions being made about the motivations of these aspiring programmers.

In my opinion programming can be a hobby like anything else, I don't see what's the point discussing this!

@cperkins These are interesting points but I would like to submit you to a similar quiz.

  1. Did I say that Mr. Atwood said learning new things is bad?
  2. Did I bring up computer literacy or did I address concepts imparted exclusively by programming literacy?
  3. Do I believe that problem solving is a superset of programming, viz. that all problems need computer programming to solve?

I am not disagreeing that math and reading are more essentially, especially because they are preconditions to learning computer programming.

I am arguing that programming can give you a broader analytic toolset to work from when perceiving and synthesizing the world and that, in itself, is a virtue of learning programming. This is not different than learning most things, actually. Programming just has the added utility of being able to service and ever-more digital world.

Your last challenge is another good one. It's true, that really is the challenge of refuting Mr. Atwood. So, I'll offer two responses: the dodge and the less satisfying, realer answer.

The dodge: This isn't really what the article ends up attacking. It attacks code year culture and the evangelism about coding and the expectation of a coder's salary. It doesn't actually wind up arguing why Bloomberg would be hurt, more than helped, by learning to code.

The less-satisfying, realer answer: He employs programmers to work in his mayors office. It would help him manage project expectations, know what is possible to ask of his digital team, know how to better cater to the east coast tech scene that is bringing his city lots of money. Sure, he could have advisors that do this but, in the example, he is a crack Java coder. He knows data structures inside and out, he has the institutional knowledge of the long hours of focused terminal activity, what the human costs and psychological pressures of coding are. Also, he could say in detail, I'm going to want my constituents to have complete transparency of my administrations agenda. To this end, I require easy to plug-into APIs for download x,y,z. Perhaps it is a stretch. If so, see my dodge. Ha!

I'm someone who is learning to code, and I can see both sides of this argument. I think Jeff is wrong in many ways, but I think his error is one of perspective rather than logic. I've actually written about an instance in which the process of learning to code showed me something about the world that I wouldn't have been likely to grasp otherwise (http://raphaelluckom.com/?p=24).

I work as a writer, not a coder. And I've often had a similar idea to Jeff's--I've wanted to say 'not everyone should spend much time worrying about spelling and grammar past the amount they need to be understood.' As a writer, I can say that a lot of grammatical rules in English are arbitrary, contested, and unimportant. What's correct depends on who you ask and when. For most jobs, It Just Doesn't Matter (tm) whether you can write a five-paragraph essay that would pass even a high-school freshman class.

But where I stop short of saying 'don't learn to write' is when I realize what writing has given me--the way it has affected my view of the world. I love that language evolves and changes, that people find so many new ways to understand and make themselves understood. I love that I can understand both 'bff' from a text message sent in 2012, and the way Sherlock Holmes would describe Watson as 'my intimate companion' or some such in a Conan Doyle story. Those are remarkable linguistic constructs that tell me a fantastic amount about the people and societies that produce them. Would I think less of someone who didn't appreciate things like that? No way. There are far too many interesting subjects in the world for everyone to be familiar with my pet obsession. But would I discourage someone from learning that on the grounds that they don't need it? Of course not. And that's where I see Atwood's point--he's taking a subject that is in some ways his pet subject and saying, "look, this works for me and a lot of other people, but if you aren't inclined to it yourself, it's not a wall you should be too concerned with banging your head against*." He's not arguing that learning to program is bad, but that it's overhyped and shouldn't be forced on people who don't take to it. I couldn't comment on the overhyped part, but I agree that it shouldn't be forced on people who don't incline toward it.

*To prove an earlier point, I think it was William Zinsser, who, in his classic On Writing Well, wrote, "I think a preposition is a fine thing to end a sentence with."

I don't understand why people get so upset by the truth. Truth is 99.9% of the people that "learn" to code by this campaigns end up learning just the top of the iceberg. They don't have the other stuff that is necessary to fully understand programming. Let's say 50% of those comming from this "courses" start to looking for jobs in the IT area. What good does that make? We'll have even more bad programmers and even lower salaries for the real programmers. It might not be the reality in USA but outside, even the good programmers suffer because of that. Maybe in the US all the good programmers get the salaries and recognition they deserve, but not everywhere.

This is why you don't see online courses to "learn to be a doctor with glowing badges!". People know they don't have the base skill sets needed to be a doctor, that's why they go to med school before they do that. When you say you can learn to be a programmer online, you're lowering the profession's standards and saying "anyone" can learn how to program. It's a lie people tend to believe more often than they should.

100% agree with Jeff. People should learn the basic of the internet and how it works, not how to program.

@esmoov:

"I am arguing that programming can give you a broader analytic toolset
 to work from when perceiving and synthesizing the world and that, 
 in itself, is a virtue of learning programming."

I cannot tell from your last post whether you are backing up your position or backing away from it. A failure, perhaps, of my reading comprehension. But we've arrived at one of the legs of this table. In your quote above, are you saying that programming gives you a broader toolset ...like many other activities such as knitting, dancing, sculpture, and plumbing? Because if that is your position, then you should concede the point to Mr. Atwood. If programming is just one of many activities that will broaden the mind and make you see the world in a different light and think about things in a new way, then the whole Learn To Code evangelism has got to stop.

Or, are you saying that programming is fundamentally special, or important . If so, I would say that extraordinary claims require extraordinary evidence and the latter is absent. And before replying with evidence think about this: there have been some truly extraordinary thinkers in human history (like Isaac Newton or Plato) if you listed out the top 20 I doubt there is a programmer in the lot.

Like you and probably everyone who commented here I love programming and consider it to be my life's work and achievement. But I am under no illusions that programming is something that someone who is not inclined to it must learn. Nor do I think that programming has the monopoly on problem solving, or analysis. In fact I strongly doubt that if one was trying to learn problem solving that coding would even be a good way to go about it.

@cperkins I think you nailed the crucial point to be made of all this. I am indeed saying "saying that programming gives you a broader toolset ...like many other activities". But I don't think that I'm backing away from my point. I was just trying to make a broad point about perception and understanding that I think Jeff's piece missed. I wasn't trying to attack him though for failing to exalt programming. I could rewrite my piece all over about why you should learn to do anything. However, the one bit of "special value" I would give to programming is that it is not easy to learn enough programming by just being in the world. I mentioned elsewhere that you don't run into lambdas walking down the street or have to fix a leaky subprocesses or even hem your ratty old controllers. That makes it harder for us to broaden our perceptual/analytic horizons into programming without taking some time to explicitly learn it.

I don't really want to "concede the point" though because I maintain he has missed the why of learning to program and his argument had some holes in it. But I still think it was an important piece. And it got us talking about a lot of, in my opinion, interesting issues around pedagogy and language. Cheers!

@draiken:

What truth are you referring to? The truth that it's false to think "anyone" can learn how to program? How is that a truth? Have you done extensive empirical research on the matter? Are you some sort of cog-sci that has scientific backings for these claims? I think it's so hilarious when people try to further their opinions by slapping stupid labels like "truth" on it - couldn't make your points less worthy of being taken seriously.

Those disputing Atwood's view are doing so in support of the idea that there's more to teaching someone how to code than trying to jump start them into becoming programmers professionally.

Moreover, comparing this to learning to become a doctor is silly. Codecademy teaches a lot of good fundamentals, but last I checked, they don't try to teach you how to unit test, how to design complex systems, use version control or a score of other skills that ultimately contribute to one being a capable programmer professionally.

Conversely, as someone who doesn't hold a profession in the medical industry, just because I'm not a doctor doesn't mean there are no benefits to my having a better understanding of how the human body works.

I'm sorry but people preaching the idea that those democratizing this knowledge to the layperson are doing something wrong and should stop wasting people's time and offering false hopes need to get over themselves.

@drewdev no... the truth is, if you read what I typed, that 99% of the people that learn programming without proper backings don't really learn how to program.

Why is it silly to compare it to a doctor's work?
Is software programming not essential nowadays? You can argue it doesn't save lives (even tho it probably does), but it's as complex as being a doctor.

I never said you shouldn't have better understanding of how programming works. But that is NOT learning how to program.

You learn how to prevent diseases, some simple treatments, but you're not learning how to be a doctor.

@draiken this is so funny to me because I did read what you typed and nowhere do I see any factual support for these sensationalized statements you're purporting as "truth". 99% of people who learn without proper backings don't really learn?! Where's the evidence for that? And more importantly, what constitutes a "proper backing"? Are you saying that unless you spend four years at a university then you're not a real developer? Last I checked Wozniak dropped out of college and Crockford graduated with a degree in Radio and Television. So these aren't "real" programmers?

And if a university program is not the only requisite for giving one a "proper backing" then what is? And more importantly, why is something like Codecademy not one of those things? Have you even evaluated the program they offer? In fact, have you even visited their site? Here's what I see them saying about what their program provides:
"Codecademy is the easiest way to learn how to code"
"Learning with Codecademy will put you on the path to building great websites, games, and apps."

Last I checked, opening up an internet browser and working through guided lessons covering some core concepts for what's involved in making our digital world tick is infinitely easier than enrolling in a university program or scouring the internet for articles and books on how to learn the fundamentals from square one - the right way, no less.

And in the second statement it sounds like they're saying that learning with them puts you on the "path", not that you just wake up one day with a bunch of badges for lessons you've completed and magically you're writing elegant software.

I guess what really fires me up about this attitude that people like Atwood and yourself are propagating is that before innovators like Codecademy started disrupting this space those that did want to code and lacked the means for a "proper backing" likely turned to places like W3Schools or copied and pasted a bunch of JavaScript they found wrought with global variables, eval calls, and no semi-colons. Is that what we want, more mindless developers posting stupid questions on StackOverflow and breaking the internet with crap code?

@drewdev
Well, about the great developers that dropped out, yes, they do exist,
that's why I said 99% and not 100%.

Evidence? I've been in the software industry for a while and found plenty
of people that "learned" on this kind of online courses. Guess how good
they were? Guess how many were laid off because of incompetence?

Yes there are a lot of people that do well after this kind of learning, but
as I stated, it is the minority. Places like Codeacademy are great for
people that want to make simple websites and have a better understanding of
how things work. I'm sorry if in your opinion knowing how to use some
javascript and HTML is being a programmer, but it's not my opinion. Again,
no truth involved here, it's an OPINION.

Many of the people that come from this new breed of "self taught web
learners" think that programming is making websites. And where is my
backing to that? Jeff cites that old article of his where people with no
idea how to code would try to get jobs as Programmers. Couple of days ago I
found a publication saying HTML was a programming language, and citing
Codeacademy on their resources to "learn how to program for free".

You learn basics of a programming language, NOT how to program.

I completely agree that the internet today makes it easier for people at
the real beginning of their programming journey to learn. My opinion is
based on my experience and I still have never found a good programmer
coming from this learning methods. Again, back to that 1%... they DO exist,
but they are VERY few.

Don't get me wrong, I've graduated from a small class of 22 and I'd only
recommend 2 of those for a job in programming. Going to collage is not the
ultimate answer, that's why I never once mentioned college. I said
BACKINGS. Having backings in programming is what made the few good
programmers I know (IRL of course) good. Down the road those 4-5 years you
spend learning assembly and compilers, software design, etc. does
eventually pay off.

What I don't like is sites selling the lie of people becoming programmers
from 1 month courses. It just cannot happen! You can learn the basics, you
can make the code compile, but you still have no clue how to actually
program.
Proof of that is all the bad software me and tons of other programmers have
to fix and maintain that were clearly made by inexperienced people that
thought they knew how to code.

As for your last statement, no, I do not want more bad programmers, and
having or not an easy internet learning tool is not gonna make them good
programmers. Maybe less bad, but not good. Good programming comes from
experience, attitude and several other factors. Not from a step by step how
to program.

I don't think I'm an awesome programmer or think that I'm above someone
that learned from these sites. My opinion is simply based on pure facts
that I have experienced in my career as a programmer.

Feel free to rage at me, it's simply my opinion.

On Tue, May 15, 2012 at 7:33 PM, Drew <
reply@reply.github.com

wrote:

@draiken this is so funny to me because I did read what you typed and
nowhere do I see any factual support for these sensationalized statements
you're purporting as "truth". 99% of people who learn without proper
backings don't really learn?! Where's the evidence for that? And more
importantly, what constitutes a "proper backing"? Are you saying that
unless you spend four years at a university then you're not a real
developer? Last I checked Wozniak dropped out of college and Crockford
graduated with a degree in Radio and Television. So these aren't "real"
programmers?

And if a university program is not the only requisite for giving one a
"proper backing" then what is? And more importantly, why is something like
Codecademy not one of those things? Have you even evaluated the program
they offer? In fact, have you even visited their site? Here's what I see
them saying about what their program provides:
"Codecademy is the easiest way to learn how to code"
"Learning with Codecademy will put you on the path to building great
websites, games, and apps."

Last I checked, opening up an internet browser and working through guided
lessons covering some core concepts for what's involved in making our
digital world tick is infinitely easier than enrolling in a university
program or scouring the internet for articles and books on how to learn the
fundamentals from square one.

And in the second statement it sounds like they're saying that learning
with them puts you on the "path", not that you just wake up one day with a
bunch of badges for lessons you've completed and magically you're writing
elegant software.

I guess what really fires me up about this attitude that people like
Atwood and yourself are propagating is that before innovators like
Codecademy started disrupting this space those that did want to code and
lacked the means for a "proper backing" likely turned to places like
W3Schools or copied and pasted a bunch of JavaScript they found wrought
with global variables, eval calls, and no semi-colons. Is that what we
want, more mindless developers posting stupid questions on StackOverflow
and breaking the internet with crap code?


Reply to this email directly or view it on GitHub:
https://gist.github.com/0f61db65bbd2d2cb681a

Luiz Felipe G. Pereira

@Draiken - how quickly the language changes from "truth" to "opinion". I'm sorry you feel I'm "raging" at you. I thought this was a healthy discussion and at the end of the day I totally respect your opinions and those of Jeff Atwood. I just don't like it when people present their opinions as some sort of glorified truth. When people do make such assertions, I think it's fair to push back on them and I'm glad I've pushed back on you because it's clear you're judging this book by its cover based on the ones you've read in the past.

Codecademy covers a lot more than than what you appear to think and it's simply not a month-long endeavor - their program started at the beginning of the year and they're still adding new lessons each week. I don't think their site or sites like LearnCodeTheHardWay are really making these inflated claims that people are saying they are.about how becoming a good developer is as simple as pressing a magic button. What I think you and I can both agree on is the fact that great programmers emerge from hard work and dedication. The thing that's funny is that I think people like Zed Shaw and Zach Sims would be the first to agree with this - if you read their perspectives on bringing coding to laypeople I think you'll be hard pressed to find them trying to mislead anyone into thinking the learning process is simple, easy or quick.

What they are saying is that anyone can do it if they are motivated and willing to put in the time and I think Jeff Atwood is totally in the wrong to try to distort that idea for those beginners out there that truly want to learn.

Atwood is a Visual Basic nerd. What do you expect from him?

Great line: "In truth, as a pure profession, programming is really only for people who enjoy being skewered between the horns of obsession to detail and ever-changing success criteria."

The question shouldn't be: "Do or don't code", but how much. Teaching secondary students bound to study English Lit in college, a month of text processing code, could help them write their thesis or find that reference they need. There is some efficient intersection for everyone between the time / opportunity costs of learning to operate a computer better and the PV[benefits] of that degree of knowledge.

Atwood has jumped the shark. Advocating against learning is beyond the pale in a world where so many problems are caused by a lack of learning habits. It's even worse if the topic in question is increasingly important and accessible.

@drewdev
I'm sorry I said you were raging at me, I just felt that way after reading that answer before.

Hey I don't think it's a glorified truth. He just pissed off a lot of people because a lot of people fit into what he criticized, that's why there are more than 3 articles against him created in the last 24 hours :o

But if people want to lie to themselves and think they will actually learn to code from a few javascript lessons, it's their problem, right? Well, no! It affects me and the whole environment of programming. It's my opinion that learning simple javascript programs is not learning to program, but the fact that it is the tip of the iceberg it's still that, a fact. Truth.

People hate being telled the truth. Truth hurts, and at the end of the day, the world is not a glowing star made of little stars. No, not everyone is a star, or as I read somewhere, the special snowflake.

I'd love to have a Codeacademy to play around when I was 13 and I wanted to learn how to program. But for the tool, not for the propaganda. I might have been too cocky after doing such courses and simply say "who needs a college? I can already program on my own!". That's the thing I hate about this initiatives. They inspire this feeling of "everything is easy" and it is not!

I bought a C++ for beginners and couldn't really understand much, but after getting into college I read it again and suddenly I was years ahead. I understood and I loved it. But that only happened after years of playing around with programming.

Saying that me and Atwood are just writing off glorified truths is a big fat lie. He wrote an opinion based on facts, and facts are truths. The same way I write this with my life experience backing me. It's not a glorified truth, it's an inconvenient truth that people took it personally. So personally they had to buy a domain and try to mock a very good article.

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.