{
  "attachments": [],
  "layout": "post",
  "title": "Please Do Learn To Code",
  "tags": [
    "coding",
    "learning",
    "work",
    "webdev",
    "mozilla"
  ],
  "published": true,
  "date": "2012-05-16T19:00:00.000Z",
  "year": "2012",
  "month": "05",
  "day": "16",
  "isDir": true,
  "slug": "please-learn-to-code",
  "type": "entry",
  "postName": "2012-05-16-please-learn-to-code",
  "html": "<p><strong>TL;DR</strong>: <em>I think coding is an essential skill for modern humans\nsurrounded by code and machines that run it. Please learn to code.</em></p>\n<p><a href=\"http://www.flickr.com/photos/mita/2508770940/?ref=nf\" style=\"display: block; float: right; text-decoration: none; border: none; margin: 0 0 1em 1em; width: 310px;\"><img src=\"http://farm3.static.flickr.com/2001/2508770940_b88b955aaa.jpg\" style=\"width: 275px; border: 2px solid [#ddd](/tag/ddd); padding: 1em; background: [#fff](/tag/fff);\" width=\"\" height=\"\"></a></p>\n<p>I disagree with Jeff Atwood on <a href=\"http://www.codinghorror.com/blog/2012/05/please-dont-learn-to-code.html\">\"Please don't learn to code\"</a>:</p>\n<blockquote>\n<p>The \"everyone should learn to code\" movement isn't just wrong\nbecause it falsely equates coding with essential life skills like\nreading, writing, and math. I wish. It is wrong in so many other\nways. </p>\n</blockquote>\n<p>In fact, I <em>do</em> regard coding as an essential modern skill. Yes,\n<a href=\"http://dmlcentral.net/blog/cathy-davidson/why-we-need-4th-r-reading-writing-arithmetic-algorithms\" title=\"Why We Need a 4th R: Reading, wRiting, aRithmetic, algoRithms\">right alongside reading, writing, and 'rithmatic</a>. At least\nthis part of <a href=\"http://www.codinghorror.com/blog/2012/05/please-dont-learn-to-code.html\">the post</a> had me nodding:</p>\n<blockquote>\n<p>I suppose I can support learning a tiny bit about programming just\nso you can recognize what code is, and when code might be an\nappropriate way to approach a problem you have. But I can also\nrecognize plumbing problems when I see them without any particular\ntraining in the area.</p>\n</blockquote>\n<h2 id=\"visible-pipes\">Visible pipes</h2>\n<p>Luckily, pipes are not as occult as code. If you go into a basement or\nopen the door under a sink, you can see them and follow where they go.\nThat's <em>some</em> training, albeit informal or self-directed. </p>\n<p>I'm not sure how you'd get exposed to code in the same way: View\nSource in a browser <em>used</em> to be a decent start on the web, <a href=\"http://saveviewsource.org/\">but\nthat's less helpful lately</a>. Code elsewhere has\ntypically been hard to get at, Open Source notwithstanding.</p>\n<p>Still, I'd bet there are people in the world for whom running water\ncomes from <em>magic</em> and drains into <em>magic</em>.  Where <em>magic</em> means: \"I\nnever thought about it, never needed to, and am sometimes vaguely\nafraid of it.\"</p>\n<p>For that class of homeowner, <a href=\"http://www.gkdating.com/mad-men-lessons-three-men-and-a-sink/\" title=\"Mad Men Lessons: Three Men and a Sink\">the kitchen floods when the sink springs\na leak, until an expert arrives</a>. It's not the end of\nthe world, and plenty of people get by just fine like that. But, I\ncertainly wouldn't agree that \"<strong>Please don't learn about pipes</strong>\" is\ngood advice in general.</p>\n<h2 id=\"learning-by-doing\">Learning by doing</h2>\n<p>Admittedly, \"<strong>learn to plumb</strong>\" isn't the same as \"<strong>learn about\npipes</strong>\". But, is there a difference between \"<strong>learn <em>to</em> code</strong>\" and\n\"<strong>learn <em>about</em> code</strong>\"? I don't think so. Like writing, code doesn't\nseem like a thing that's easy to learn <em>about</em> without <em>doing</em> it.</p>\n<p>When I write \"coder\", I generally mean this: Someone who is capable of\nencoding his or her intent and decision process into a form that can\ndrive a CPU to perform tasks on his or her behalf.</p>\n<p>That's a very broad definition, but it implies a lot. First, you have\nto realize that <em>you</em> can make a CPU can do things on your\nbehalf--it's okay, you won't break it. It's a tool made by\nhumans and you as a human can understand it. Then, you need a notion\nof <a href=\"http://rwxweb.wordpress.com/2012/01/31/teaching-algorithmic-thinking/\">algorithmic thinking</a>, in order to formulate your\nintent and reasoning in a form that a CPU can execute. These are not\nnatural or intuitive things.</p>\n<p>I agree with that it's good to \"<a href=\"http://www.codinghorror.com/blog/2012/05/please-dont-learn-to-code.html\">recognize what code is, and when code\nmight be an appropriate way to approach a problem</a>\".  But,\nif you've never made a CPU do your bidding, it's easy to see it as a\nmysterious black box with a will of its own--possibly malicious or\nat least capricious.</p>\n<p>And, if you've never worked to force your thoughts into to the\nconfoundingly literal and common senseless constraints of computer\nprogramming, it's hard to even imagine how code works. If you can't\nimagine how it works, how do you work it into your mental toolkit for\ngetting things done?</p>\n<p>Learn to code, and a lot of other things get dragged into your head\nalong the way.</p>\n<h2 id=\"who-needs-all-these-coders\">Who needs all these coders?</h2>\n<p>And then, there were these bits from \"<a href=\"http://www.codinghorror.com/blog/2012/05/please-dont-learn-to-code.html\">Please Don't Learn to\nCode</a>\":</p>\n<blockquote>\n<p>It assumes that adding naive, novice,\nnot-even-sure-they-like-this-whole-programming-thing coders to the\nworkforce is a net positive for the world.</p>\n</blockquote>\n<blockquote>\n<p>It implies that there's a thin, easily permeable membrane between\nlearning to program and getting paid to program professionally.</p>\n</blockquote>\n<p>This is looking at work from the wrong angle. It isn't about <em>getting\npaid to program</em>, so much as <em>coding to <a href=\"http://www.codinghorror.com/blog/2004/08/be-good-at-your-job.html\">be good at your\njob</a></em>.</p>\n<p>I'm not talking about Java-heads who live all day in Eclipse.  I'm\ntalking about the Excel-head who used to rock <a href=\"http://en.wikipedia.org/wiki/Visual_Basic_for_Applications\">VBA macros</a>, who\nmaybe just started playing with <a href=\"https://developers.google.com/apps-script/\">Google Apps Script</a>. I have no\nidea how popular Google Apps Script might or might not be, but I've\nseen some crazy amazing things done in VBA by sales and account reps\nwho'd punch you in the nose if you called them geeks.</p>\n<p>As far as I can tell, the future of work is heading toward more work\nwith greater volumes of information and data. Should <strong>professional\nprogramers</strong> be the only people in an organization who know how to\napply computational power to solve problems? Maybe the vendors will\nsweep in, clean up all <a href=\"http://en.wikipedia.org/wiki/Computer_Lib_/_Dream_Machines\">the cybercrud</a>, and get the real work\ndone for us.</p>\n<h2 id=\"programming-should-not-be-a-priesthood\">Programming should not be a priesthood</h2>\n<p>Consider writing: there's a lot to learn and it used to be a thing\ndone only by a few scribes. But, people today get a lot of mileage out\nof just sticky notes and email. Sure, improving your grammar and\nlearning how to structure an essay can help in many, many ways. But,\nyou don't need to be a <strong>professional writer</strong> to be a <strong>professional\nwho uses written language</strong>.</p>\n<p>The same can apply for coding. The problem, though, is that the\nsticky-notes-and-email level of competence barely exists or is near\nimpossible to access. So, not only do I think we need more coders--we\nalso need more tools that support coding and make coding more\naccessible. I think we should support <strong>professionals who use code</strong>.</p>\n<p>More than that, I think we should encourage and support <strong>humans who\ncode</strong>. I really do consider coding next to reading, writing, and\nmath. I don't think we can all rely on someone else to write the\nperfect app for the work we'll need to do in the future. I expect the\nsuccessful people will be those who can apply <a href=\"http://teddziuba.com/2010/10/taco-bell-programming.html\">Taco Bell\nprogramming</a> to reams of data and find answers. We'll need\nto ride <a href=\"http://www.dougengelbart.org/history/pix.html#6\">bicycles, not tricycles</a>.</p>\n<!-- vim: set wrap wm=5 syntax=mkd textwidth=70: -->\n",
  "body": "**TL;DR**: <em>I think coding is an essential skill for modern humans\r\nsurrounded by code and machines that run it. Please learn to code.</em>\r\n\r\n<a href=\"http://www.flickr.com/photos/mita/2508770940/?ref=nf\" style=\"display: block; float: right; text-decoration: none; border: none; margin: 0 0 1em 1em; width: 310px;\"><img src=\"http://farm3.static.flickr.com/2001/2508770940_b88b955aaa.jpg\" style=\"width: 275px; border: 2px solid #ddd; padding: 1em; background: #fff;\" /></a>\r\n\r\nI disagree with Jeff Atwood on [\"Please don't learn to code\"][dontcode]:\r\n\r\n> The \"everyone should learn to code\" movement isn't just wrong\r\n> because it falsely equates coding with essential life skills like\r\n> reading, writing, and math. I wish. It is wrong in so many other\r\n> ways. \r\n\r\n[dontcode]: http://www.codinghorror.com/blog/2012/05/please-dont-learn-to-code.html\r\n\r\nIn fact, I *do* regard coding as an essential modern skill. Yes,\r\n[right alongside reading, writing, and 'rithmatic][rithms]. At least\r\nthis part of [the post][dontcode] had me nodding:\r\n\r\n[rithms]: http://dmlcentral.net/blog/cathy-davidson/why-we-need-4th-r-reading-writing-arithmetic-algorithms \"Why We Need a 4th R: Reading, wRiting, aRithmetic, algoRithms\"\r\n\r\n> I suppose I can support learning a tiny bit about programming just\r\n> so you can recognize what code is, and when code might be an\r\n> appropriate way to approach a problem you have. But I can also\r\n> recognize plumbing problems when I see them without any particular\r\n> training in the area.\r\n\r\n## Visible pipes\r\n\r\nLuckily, pipes are not as occult as code. If you go into a basement or\r\nopen the door under a sink, you can see them and follow where they go.\r\nThat's *some* training, albeit informal or self-directed. \r\n\r\nI'm not sure how you'd get exposed to code in the same way: View\r\nSource in a browser *used* to be a decent start on the web, [but\r\nthat's less helpful lately][saveviewsource]. Code elsewhere has\r\ntypically been hard to get at, Open Source notwithstanding.\r\n\r\n[saveviewsource]: http://saveviewsource.org/\r\n\r\nStill, I'd bet there are people in the world for whom running water\r\ncomes from *magic* and drains into *magic*.  Where *magic* means: \"I\r\nnever thought about it, never needed to, and am sometimes vaguely\r\nafraid of it.\"\r\n\r\nFor that class of homeowner, [the kitchen floods when the sink springs\r\na leak, until an expert arrives][madmen]. It's not the end of\r\nthe world, and plenty of people get by just fine like that. But, I\r\ncertainly wouldn't agree that \"**Please don't learn about pipes**\" is\r\ngood advice in general.\r\n\r\n[madmen]: http://www.gkdating.com/mad-men-lessons-three-men-and-a-sink/ \"Mad Men Lessons: Three Men and a Sink\"\r\n\r\n## Learning by doing\r\n\r\nAdmittedly, \"**learn to plumb**\" isn't the same as \"**learn about\r\npipes**\". But, is there a difference between \"**learn *to* code**\" and\r\n\"**learn *about* code**\"? I don't think so. Like writing, code doesn't\r\nseem like a thing that's easy to learn *about* without *doing* it.\r\n\r\nWhen I write \"coder\", I generally mean this: Someone who is capable of\r\nencoding his or her intent and decision process into a form that can\r\ndrive a CPU to perform tasks on his or her behalf.\r\n\r\nThat's a very broad definition, but it implies a lot. First, you have\r\nto realize that *you* can make a CPU can do things on your\r\nbehalf--it's okay, you won't break it. It's a tool made by\r\nhumans and you as a human can understand it. Then, you need a notion\r\nof [algorithmic thinking][algothink], in order to formulate your\r\nintent and reasoning in a form that a CPU can execute. These are not\r\nnatural or intuitive things.\r\n\r\n[algothink]: http://rwxweb.wordpress.com/2012/01/31/teaching-algorithmic-thinking/\r\n\r\nI agree with that it's good to \"[recognize what code is, and when code\r\nmight be an appropriate way to approach a problem][dontcode]\".  But,\r\nif you've never made a CPU do your bidding, it's easy to see it as a\r\nmysterious black box with a will of its own--possibly malicious or\r\nat least capricious.\r\n\r\nAnd, if you've never worked to force your thoughts into to the\r\nconfoundingly literal and common senseless constraints of computer\r\nprogramming, it's hard to even imagine how code works. If you can't\r\nimagine how it works, how do you work it into your mental toolkit for\r\ngetting things done?\r\n\r\nLearn to code, and a lot of other things get dragged into your head\r\nalong the way.\r\n\r\n## Who needs all these coders?\r\n\r\nAnd then, there were these bits from \"[Please Don't Learn to\r\nCode][dontcode]\":\r\n\r\n> It assumes that adding naive, novice,\r\n> not-even-sure-they-like-this-whole-programming-thing coders to the\r\n> workforce is a net positive for the world.\r\n\r\n> It implies that there's a thin, easily permeable membrane between\r\n> learning to program and getting paid to program professionally.\r\n\r\nThis is looking at work from the wrong angle. It isn't about *getting\r\npaid to program*, so much as *coding to [be good at your\r\njob][goodjob]*.\r\n\r\n[goodjob]: http://www.codinghorror.com/blog/2004/08/be-good-at-your-job.html\r\n\r\nI'm not talking about Java-heads who live all day in Eclipse.  I'm\r\ntalking about the Excel-head who used to rock [VBA macros][vba], who\r\nmaybe just started playing with [Google Apps Script][gas]. I have no\r\nidea how popular Google Apps Script might or might not be, but I've\r\nseen some crazy amazing things done in VBA by sales and account reps\r\nwho'd punch you in the nose if you called them geeks.\r\n\r\n[vba]: http://en.wikipedia.org/wiki/Visual_Basic_for_Applications\r\n[gas]: https://developers.google.com/apps-script/\r\n\r\nAs far as I can tell, the future of work is heading toward more work\r\nwith greater volumes of information and data. Should **professional\r\nprogramers** be the only people in an organization who know how to\r\napply computational power to solve problems? Maybe the vendors will\r\nsweep in, clean up all [the cybercrud][complib], and get the real work\r\ndone for us.\r\n\r\n[complib]: http://en.wikipedia.org/wiki/Computer_Lib_/_Dream_Machines\r\n\r\n## Programming should not be a priesthood\r\n\r\nConsider writing: there's a lot to learn and it used to be a thing\r\ndone only by a few scribes. But, people today get a lot of mileage out\r\nof just sticky notes and email. Sure, improving your grammar and\r\nlearning how to structure an essay can help in many, many ways. But,\r\nyou don't need to be a **professional writer** to be a **professional\r\nwho uses written language**.\r\n\r\nThe same can apply for coding. The problem, though, is that the\r\nsticky-notes-and-email level of competence barely exists or is near\r\nimpossible to access. So, not only do I think we need more coders--we\r\nalso need more tools that support coding and make coding more\r\naccessible. I think we should support **professionals who use code**.\r\n\r\nMore than that, I think we should encourage and support **humans who\r\ncode**. I really do consider coding next to reading, writing, and\r\nmath. I don't think we can all rely on someone else to write the\r\nperfect app for the work we'll need to do in the future. I expect the\r\nsuccessful people will be those who can apply [Taco Bell\r\nprogramming][tacobell] to reams of data and find answers. We'll need\r\nto ride [bicycles, not tricycles][dephotos].\r\n\r\n[dephotos]: http://www.dougengelbart.org/history/pix.html#6\r\n[tacobell]: http://teddziuba.com/2010/10/taco-bell-programming.html\r\n\r\n<!-- vim: set wrap wm=5 syntax=mkd textwidth=70: -->\r\n",
  "parentPath": "./content/posts/archives/2012/2012-05-16-please-learn-to-code",
  "path": "2012/05/16/please-learn-to-code",
  "thumbnail": "http://farm3.static.flickr.com/2001/2508770940_b88b955aaa.jpg",
  "needsBuild": true,
  "prevPostPath": "2011/11/04/social-media-cyborg",
  "prevPostTitle": "Social Media Cyborg",
  "nextPostPath": "2012/06/04/stuxnet-was-awesome-right",
  "nextPostTitle": "Stuxnet was awesome, right?"
}