{"id":127,"date":"2017-09-05T15:57:22","date_gmt":"2017-09-05T15:57:22","guid":{"rendered":"https:\/\/www.thecoderschool.com\/blog\/what-coding-language-should-my-kid-learn-first\/"},"modified":"2022-10-13T20:50:19","modified_gmt":"2022-10-13T20:50:19","slug":"what-coding-language-should-my-kid-learn-first","status":"publish","type":"post","link":"https:\/\/www.thecoderschool.com\/blog\/what-coding-language-should-my-kid-learn-first\/","title":{"rendered":"What Coding Language Should My Pre-Teen\/Teen Learn First?"},"content":{"rendered":"<h1>A Teen&#8217;s First Coding Language<\/h1>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/www.thecoderschool.com\/wp-content\/uploads\/2017\/09\/img.jpg\" alt=\"\" \/><\/p>\n<p>Parents who want their teens to learn to code are often curious what coding language their kids should start with. \u00a0Python? \u00a0Java? \u00a0Scratch, Lisp, or something else? \u00a0There are a lot of options out there, but our experience tells us there are generally a few answers better than others.<\/p>\n<p>First, let&#8217;s qualify the kind of students we&#8217;re talking about. \u00a0We&#8217;re not necessarily talking about kids 10 and under &#8211; for the most part, those kids should be using Scratch, Snap!, App Inventor, or other drag&#8217;n drop language. \u00a0We&#8217;re talking about slightly older kids, about 10 or 11 and up, that aren&#8217;t necessarily going to become a Computer Science major. \u00a0In other words, it&#8217;s most teens and pre-teens! \u00a0With that in mind, let&#8217;s get started.<\/p>\n<h1>Part 1 &#8211; What Does it Mean to Learn to Code?<\/h1>\n<p>There&#8217;s a bit of a myth that learning to code is like learning a new language. \u00a0Yes, there are different coding languages, and yes, it&#8217;s all greek to a lot of folks who aren&#8217;t coders. \u00a0But unlike learning French or Mandarin, the most important aspect of coding is not the syntax. \u00a0It&#8217;s not about whether the word &#8220;computer&#8221; translates to &#8220;ordinateur&#8221; (French), or &#8220;dian nao&#8221; (Mandarin) &#8211; it&#8217;s about how you put those words into a sentence. \u00a0In coding, it&#8217;s about *how* you string &#8220;words&#8221; together, and not the words themselves. \u00a0In other words, it&#8217;s about the <strong><em>logic<\/em><\/strong>.<\/p>\n<p>In that sense, it doesn&#8217;t matter so much whether your child is learning Python or Scratch, Javascript or Java, the logic is the same. \u00a0Computers in the end, work the same way &#8211; you must provide logical steps for them to understand. \u00a0Languages are simply different ways to give the same instructions to the computer.\u00a0\u00a0By understanding the logic of coding a language &#8211; any language &#8211; the student is understanding the fundamental way to code, which can be fairly easily translated into ANY language in the future.<\/p>\n<div style=\"font-family: courier; background-color: #dddddd; padding: 10px; margin-bottom: 20px;\">\n<pre>###### THIS IS PYTHON\nfor x in range(1, 11):\n    print \u201cCount is: \u201c,x\n<\/pre>\n<\/div>\n<div style=\"font-family: courier; background-color: #dddddd; padding: 10px;\">\n<pre>\/\/\/\/\/\/ THIS IS JAVA\npublic static void main(String[] args){\n    for(int i=1; i&lt;11; i++){\n        System.out.println\n           (\"Count is: \" + i);\n    }\n}\n<\/pre>\n<\/div>\n<p>Python and Java Examples<\/p>\n<p>Here&#8217;s an example of two languages that count from 1 to 10 &#8211; Python and Java. \u00a0The words are different, but the logic is the same &#8211; the &#8220;for&#8221; loops is a coding concept used in all languages. \u00a0This example shows how to count from 1 to 10 &#8211; and if you look closely, you&#8217;ll see that logically, they are both doing the same thing. \u00a0The logic thought process is the same &#8211; it&#8217;s just the words that are different. \u00a0Learn one, and it&#8217;s much easier to pick up the other.<\/p>\n<h1>Part 2 -What About the Language?<\/h1>\n<p>Part 1 was admittedly a little over-simplified. \u00a0While it&#8217;s true it&#8217;s all about the logic, our experience shows there are some languages better suited as a beginner language. \u00a0Those languages &#8211; you might have guessed &#8211; really allow the students to focus on the *logic* of the code, and not on the nit-picky syntax of the language.<\/p>\n<p>Before we go on, it&#8217;s interesting to note that there isn&#8217;t a &#8220;right answer&#8221; here, in fact you may find this is a bit of a philosophical two-sided coin. \u00a0Some folks (typically academia or hard-core comp sci) believe a more &#8220;hardcore language&#8221; like Lisp (for data structures or recursion concepts) or Java (for object oriented concepts) are better to learn early, as it helps cement fundamental computer science concepts. \u00a0Fundamental as in real core Comp Sci degree stuff, low level how-a-computer-works kind of stuff. \u00a0While there&#8217;s a good argument to that, we don&#8217;t think everyone needs to be a Comp Sci major, so we believe a step back to a common denominator makes the most sense. \u00a0A common denominator that&#8217;s useful for any career &#8211; plain old logic.<\/p>\n<div style=\"background-color: #dddddd; border: 1px solid black; padding: 10px;\"><strong>Try it Yourself<\/strong><br \/>\nHow would you write a &#8220;program&#8221; to print the Fibonacci number sequence, using plain English? \u00a0Congrats, you&#8217;re &#8220;coding&#8221;!<\/div>\n<p>Speaking of plain old logic, there&#8217;s nothing wrong with a 15 year old starting to learn code with Scratch, Snap!, or any other drag and drop language. \u00a0In fact, one very powerful and even more basic way to learn is pure pseudo-code &#8211; basically logic written in plain English. While both are powerful ways to push the logic learning, in practice, we use these techniques more sparingly as kids get older because languages like Javascript and Python afford a closer experience to pure coding without hindering their learning at that age. \u00a0That said, even a 25 year coding veteran like myself still has a ton of fun, and lots to learn, when coding logic games and programs in Scratch!<\/p>\n<p>So let&#8217;s go back to our example of the two languages from Part 1, above. \u00a0Notice how Python is alllllmost readable as english text. \u00a0For x (the variable) in a range of numbers, print &#8220;Count is 1&#8221;, &#8220;Count is 2&#8221; and so forth. \u00a0Pretty logical right? \u00a0Now what&#8217;s up with Java? \u00a0You&#8217;ve got a public function with an array of args, a System.out.println, a static void main&#8230; \u00a0Not the easiest to read is it? \u00a0A lot of typing to do the same thing, right? \u00a0While each of these are important concepts in understanding computer science, we feel instead these concepts become a distraction when learning to code (c&#8217;mon, admit it, it was distracting to you too, right?!)<\/p>\n<p>We&#8217;re in the camp that feels that kids tend to learn better when they&#8217;re able to get things done quickly, build their confidence, and not be frustrated by distracting concepts early in their coding journey. \u00a0If they have the desire to dig deeper, it&#8217;ll always be there &#8211; but to start with a language like Java or Lisp, we&#8217;ve found, is typically more a hindrance than a help.\u00a0 It&#8217;s something we&#8217;ve seen time and again at theCoderSchool, and has really become a part of our teaching philosophy.<\/p>\n<p>So what camp do you fit in? \u00a0Either way,\u00a0pick a language and let&#8217;s get our next generation ready! \u00a0Learn to Code. \u00a0Chang the World. \u00ae<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Not sure what programming language your teen\/pre-teen should learn first? &nbsp;Python? &nbsp;Java? &nbsp;See what we think and have seen from our experience.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[68],"class_list":["post-127","post","type-post","status-publish","format-standard","hentry","category-coder-blog","tag-advice-for-parents","entry"],"_links":{"self":[{"href":"https:\/\/www.thecoderschool.com\/blog\/wp-json\/wp\/v2\/posts\/127","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.thecoderschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.thecoderschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.thecoderschool.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.thecoderschool.com\/blog\/wp-json\/wp\/v2\/comments?post=127"}],"version-history":[{"count":1,"href":"https:\/\/www.thecoderschool.com\/blog\/wp-json\/wp\/v2\/posts\/127\/revisions"}],"predecessor-version":[{"id":12052,"href":"https:\/\/www.thecoderschool.com\/blog\/wp-json\/wp\/v2\/posts\/127\/revisions\/12052"}],"wp:attachment":[{"href":"https:\/\/www.thecoderschool.com\/blog\/wp-json\/wp\/v2\/media?parent=127"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.thecoderschool.com\/blog\/wp-json\/wp\/v2\/categories?post=127"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.thecoderschool.com\/blog\/wp-json\/wp\/v2\/tags?post=127"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}