19 votes

I’m a developer. I won’t teach my kids to code, and neither should you

40 comments

  1. [10]
    ClearlyAlive
    (edited )
    Link
    I see a lot of pushback against teaching people to code because not everyone will (need to) be a software developer, but I feel this fundamentally misses the point. Not everyone will be a...

    I see a lot of pushback against teaching people to code because not everyone will (need to) be a software developer, but I feel this fundamentally misses the point. Not everyone will be a scientist, but we all still learn science in school because it's important to know how our world works; similarly, due to the reliance on computers, I think knowing programming is important because it enables one to understand how our computers work.

    It's true that most programs a child will write will not be reliable or efficient, but many times that simply isn't important even in the professional world (i.e. simply scripting). As an analogy, the author could be complaining about children learning Art, they won't paint breathtaking, technically rich paintings, but that's fine, the important thing is that children are creating.

    In this article the author specifically pushes back at the notion that learning syntax is not the key element of being a programmer. I mostly agree with this position, which is why I believe that most people should learn Lisp before due to the vastly simpler syntax. Compared to languages like Java or Python I make far fewer syntax errors when writing Lisp. I have a friend who tried to learn python but really struggled with it, but took to Lisp very quickly because of how simple the syntax is; indeed, right now they're learning Java as part of a Uni module and finding it very frustrating[0].
    For her, the fundamental issue (I think) is that she's essentially required to do two things, learn programming and learning the syntax. Lisp saves us from the syntax.

    [0]: Clarification: She only did around Lisp for a few days before uni started which is why she didn't manage to learn much to help her with Java.

    ETA: Another point I should make is that the necessity of basic coding skills has significantly increased among professions. All STEM students need to know how to code (for things like data analysis), but nowadays many people outside STEM also require the same skills such as the humanities (statistical analysis) or journalism (I was friends with a journalist who had to learn some Web dev skills). For those people having a small foundation in school probably would be helpful, just like we teach people some science or newspaper writing in school.

    I think schools should teach people enough programming skills that they are able to make medium level Siri Shortcuts.

    Were we to have such a course in schools, I’d like it to include a module on the physical design of computers and their components, formal logic, Boolean algebra in addition to simply programming. Ideally it would be joint between science and mathematics so formal logic and Boolean algebra is first studied in mathematics.

    18 votes
    1. [4]
      cptcobalt
      Link Parent
      I massively agree with this. I am in a job where I don’t need to know how to code, but my knowledge better informs my work and my ability to communicate with our engineers. I don’t even think that...

      I massively agree with this.

      I am in a job where I don’t need to know how to code, but my knowledge better informs my work and my ability to communicate with our engineers. I don’t even think that you need to go too in depth: introducing kids to procedural programming with basic types is more than enough to spark creativity and start breaking complex technical solutions into building blocks for analysis, problem solving, and creativity. (In fact, my current huge programming project is exactly that. Procedural, basic types, not object oriented.)

      If a kid exposed to programming is destined to be a programmer, the spark may light and they’ll grow from there. It is an art that you can teach yourself, after all. If not, well, they can at least get a sense of code and complexity and be able to have a bit of working knowledge that may help them in scores of situations in the real world.

      6 votes
      1. [3]
        ClearlyAlive
        Link Parent
        Do you agree with my analysis on which programming language to learn? Most of my points aren’t super controversial but I thought that one might be.

        Do you agree with my analysis on which programming language to learn? Most of my points aren’t super controversial but I thought that one might be.

        1 vote
        1. [2]
          Comment deleted by author
          Link Parent
          1. ClearlyAlive
            Link Parent
            Definitely, I just think that will become easier because you'll already understand what the program is doing so when learning the new language you can focus on syntax more since you already...

            The only problem I see with with learning lisp, even if it's "easier" syntactically, is that you will eventually have to learn the Fortran-C (imperative?) family of language syntax anyways.

            Definitely, I just think that will become easier because you'll already understand what the program is doing so when learning the new language you can focus on syntax more since you already understand the basic programming concepts.

            In the status quo, people are forced to learn both programming concepts (conditions, loops etc) at the same time as the syntax which can really frustrate people. I agree with the author that the syntax is not really that important to learn as the underlying skills are.

            FYI While Scheme is focused on being functional, Common Lisp and other dialects are multi-paradigm and indeed CL is very imperative.

            So you are just delaying the necessary struggle with syntax for another point down the road. Does learning lisp really ease that?

            My experience has been that my second programming language was much easier than my first because I understood all the concepts and I was mostly just learning a new syntax (and some extra features/difficulties in the case of JS). In terms of helping my friend with learning Java, she doesn't exactly get what each part does as well as the syntax.

            A data scientist needs to know how to manipulate their data with modern tools, which will inevitably use a modern and widespread language.

            The issue I have with this is that it's difficult to predict which language will actually be modern and in use in the future. I'm sure Fortran isn't and so focusing on a specific language won't be that useful as paradigms change very rapidly; indeed, today we're seeing a move to the functional paradigm of programming. That's why I'm very focused on the teaching of programming concepts such as looping, conditions, variables.

            They don't necessarily need a low level understanding of what the machine is doing

            I'm not promoting an assembly or C level understanding of the what the machine is doing, but I think there are some skills you need to program computers that are independent of programming language that we can teach them.

            4 votes
        2. cptcobalt
          Link Parent
          Yes, but more so because I have an irrational vendetta against python. I also don’t care too much for the preferred programming language argument, but what does get in my way is a language with...

          Yes, but more so because I have an irrational vendetta against python. I also don’t care too much for the preferred programming language argument, but what does get in my way is a language with strongly held opinions that make me remap my brain to converge with a language’s own opinions—and I’m aware this is a weak argument. I think a programming language should work for its user, and what works for one person may not work the same for another. FWIW, I work mostly with PHP with a side dose of Lua (on an embedded platform, no less!) at the moment.

    2. [2]
      mrbig
      Link Parent
      It’s quite possible to have a general understanding of how computers work without ever writing a single line of code. Just ask the thousands of gamers that plan, purchase and assemble their...

      I think knowing programming is important because it enables one to understand how our computers work

      It’s quite possible to have a general understanding of how computers work without ever writing a single line of code. Just ask the thousands of gamers that plan, purchase and assemble their desktop computers every year.

      And yeah, I suppose programming might help problem solving overall, but it’s certainly not the only resource.

      3 votes
      1. ClearlyAlive
        Link Parent
        The same is true of Art or Science (noöne needs to do a science lab), but just like painting or a science lab, coding is more fun. When I say “how computers work”, I don’t mean just the physical...

        It’s quite possible to have a general understanding of how computers work without ever writing a single line of code.

        The same is true of Art or Science (noöne needs to do a science lab), but just like painting or a science lab, coding is more fun.

        Just ask the thousands of gamers that plan, purchase and assemble their desktop computers every year.

        When I say “how computers work”, I don’t mean just the physical hardware, I also mean the software, the programs, the algorithms.

        And yeah, I suppose programming might help problem solving overall, but it’s certainly not the only resource.

        No of course not, but we try to teach children these skills with a variety of sources.

        Also see my edit.

        5 votes
    3. [3]
      Turtle
      (edited )
      Link Parent
      How is it important to know how computers work? Additionally, will learning basic Python really teach you much about how they work? Honestly I am very skeptical of this "learn to code" movement.

      How is it important to know how computers work? Additionally, will learning basic Python really teach you much about how they work? Honestly I am very skeptical of this "learn to code" movement.

      1. [2]
        ClearlyAlive
        Link Parent
        When I said this I meant “computation”. I think because more and more things in our democracies are shifting to being computerised people need to understand how computation works to avoid treating...

        How is it important to know how computers work?

        When I said this I meant “computation”. I think because more and more things in our democracies are shifting to being computerised people need to understand how computation works to avoid treating them as infallible, or also being unnecessarily distrustful.

        Additionally, will learning basic Python really teach you much about how they work?

        I mean I’ve already mentioned I’m against teaching Python but I do think learning how software is made will give children a better idea of computation. Remember we’re talking about children here, I don’t think dry class discussions will really engage them that much; this is why we do science labs in school.

        4 votes
        1. mrbig
          (edited )
          Link Parent
          That’s entirely achievable without coding. I’ve had this understanding since I was a teenager and only started coding here and there in the last 5 years of my adulthood. I also fixed and took care...

          people need to understand how computation works to avoid treating them as infallible, or also being unnecessarily distrustful

          That’s entirely achievable without coding. I’ve had this understanding since I was a teenager and only started coding here and there in the last 5 years of my adulthood. I also fixed and took care of programs for relatives since I was 13.

          Not that I’m necessarily against learning programming at a young age,I just oppose the idea that it is a necessary requirement of “digital literacy”.

          1 vote
  2. skybrian
    Link
    It's a contrarian headline (as is usual from Slate) but the article is sensible. I doubt they'll refuse to teach their kid programming.

    It's a contrarian headline (as is usual from Slate) but the article is sensible. I doubt they'll refuse to teach their kid programming.

    13 votes
  3. [3]
    Anwyl
    Link
    I feel like you should teach kids to hack. The household skill is to just go into some code and make a tweak, or compile some source. Teaching your kids carpentry is different from teaching your...

    I feel like you should teach kids to hack. The household skill is to just go into some code and make a tweak, or compile some source. Teaching your kids carpentry is different from teaching your kids to use a hammer.

    10 votes
    1. Akir
      Link Parent
      I thought that we were already doing this. Why else is it so easy to circumvent the restrictions for public school computers? :P

      I thought that we were already doing this. Why else is it so easy to circumvent the restrictions for public school computers? :P

      5 votes
    2. mrbig
      (edited )
      Link Parent
      I might be okay with that, especially if we’re not talking about very young kids. My 10-year-old sister is more than capable of learning the fundamentals.

      I might be okay with that, especially if we’re not talking about very young kids. My 10-year-old sister is more than capable of learning the fundamentals.

      2 votes
  4. [6]
    vakieh
    Link
    There is a big push right now for people to learn 'transferable skills' of which problem solving is one. The big issue with the 'lets break out from the paradigm' crowd is that they fail to grasp...

    There is a big push right now for people to learn 'transferable skills' of which problem solving is one. The big issue with the 'lets break out from the paradigm' crowd is that they fail to grasp the simple need for having a tool kit, even if that tool kit isn't full of transferable skills..

    There is nothing wrong with teaching kids to code, because there is nothing mutually exclusive to it vs teaching them to problem solve. On the contrary, if they can code, they can often do problem solving in and with their code as they code.

    I also have an issue with

    Coding is like that. Try something. See if it works. Try again.

    This is what I see in godawful students that fail. If there's a time crunch like a server going down it's somewhat understandable to play coding shotgun, but trial-and-error programming is normally what you do when you have failed at being a good programmer. The correct way to do it is to analyse the problem, diagnose the issue, and fix it. You should know that it is fixed before you run it unless you screwed up. Now, screwing up is not such a bad thing, but it should be known for what it is (something you want to avoid), rather than some desirable process.

    5 votes
    1. [5]
      Wes
      Link Parent
      Maybe? But this assumes you have all the information already. Sometimes diagnosing the problem requires running it in different configurations, if only to see how it behaves.

      You should know that it is fixed before you run it unless you screwed up.

      Maybe? But this assumes you have all the information already. Sometimes diagnosing the problem requires running it in different configurations, if only to see how it behaves.

      4 votes
      1. [4]
        vakieh
        Link Parent
        If you're talking sysadmin work, yes. If you're talking programming, definitely not.

        If you're talking sysadmin work, yes. If you're talking programming, definitely not.

        1. [3]
          Wes
          Link Parent
          If the contention is that you shouldn't ever need to run code to learn from it, then I disagree. While you could come to understand a program by studying every line in its codebase, this requires...

          If the contention is that you shouldn't ever need to run code to learn from it, then I disagree.

          While you could come to understand a program by studying every line in its codebase, this requires a lot of time, effort, and mental headroom to keep it all in. Sometimes simply running the program with different inputs or configurations can get you the answers much faster. "Let's see what happens if we turn that off" is a perfectly valid way of seeing if something is affecting an outcome. This helps you narrow in on the problem quickly.

          The other consideration is that you don't always have the full picture. If you're loading someone else's library, it isn't practical to read every line of code just to understand how to interoperate. No, you'll probably just look at the docs and run a few tests to make sure it works like you'd expect it to.

          There's similarly uncertainty in parsing user input, dealing with APIs, or talking to a server. Will it send strange HTTP codes? Maybe, let's find out!

          If just reading code were enough, we'd have no need for breakpoints because we could perfectly predict every state of the program. But breakpoints are useful because they allow us to study the program's state while it's running. We can solve problems quickly without having to build an extensive mental model of state and control flow.

          Computers are a lot better at reading code than we are. There's no reason not to take advantage of that shortcut.

          7 votes
          1. [2]
            vakieh
            Link Parent
            The author is making a clear case of what you do after you've learned to program, rather than ways to learn. As for breakpoints and other debugging methods, there is a distinction to be made...

            to learn from it

            The author is making a clear case of what you do after you've learned to program, rather than ways to learn.

            As for breakpoints and other debugging methods, there is a distinction to be made between using those as exploration and diagnosis tools vs running the code with your 'bugfix' to see if that was what was required. If you are using a debugger to step through to find the bug, there is nothing functionally different to looking through the code yourself. But once you find that bug, your expertise takes over as to what to do about it, and you should be certain that a) the change you made was necessary, and b) the change you made is going to correct the error you discovered. Now, you may find there are other errors as well, or in fixing an error you may expose a previously hidden one, but what you shouldn't find out (unless you screwed up) is that what you thought was an error and what you thought needed changing was not correct.

            3 votes
            1. Wes
              Link Parent
              Then I think maybe we're not disagreeing at all. I'm arguing that running code can be useful to aid in debugging, and helping you understand the problem. But yes trying a variety of fixes in hopes...

              As for breakpoints and other debugging methods, there is a distinction to be made between using those as exploration and diagnosis tools vs running the code with your 'bugfix' to see if that was what was required.

              Then I think maybe we're not disagreeing at all. I'm arguing that running code can be useful to aid in debugging, and helping you understand the problem. But yes trying a variety of fixes in hopes it solves the problem wouldn't be very productive at all (even if it works, do you understand why?).

              In my experience, finding the problem is often harder than finding the solution. That's the stage that running code can be the most useful - narrowing in down to find where the problem occurs. Once you do that, then I'd agree that skilled programmers should generally only need 1 or 2 attempt to implement the fix. Unless that fix means a massive refactor, anyway.

              3 votes
  5. mftrhu
    Link
    To be honest, I agree with the headline. It took me a long while, because I used to be all about teaching people how to code, but I'm starting to appreciate how hard getting anything useful done...

    To be honest, I agree with the headline. It took me a long while, because I used to be all about teaching people how to manipulate Friend Computer code, but I'm starting to appreciate how hard getting anything useful done can be.

    Yes, you can teach people how to code: the syntax, at least, and the basic logic behind it. I think anyone, adult or child, could wrap their head around basic programming, and understand how a toy CPU works. But.

    I have been working as a teacher before the whole coronavirus debacle. A lab teacher, and this was my first year working in school, so even if I was - my contract did not expire yet, but I cannot do anything - a glorified babysitter I still get emails from my school, my union, and a couple of newsletters I don't remember ever subscribing to. One of them was trying to sell me a course they called "essential": 150 hours to be spent on learning "Coding and computational thinking". I poked around the 'net a bit about it, and it seems that those 150 hours would be spent on learning how to use Scratch to solve very simple problems.

    This course is for teachers and - leaving aside my cynism about people half-assing it and trying to use what little they learned in class - I don't believe it can actually help very much. Summing a list of numbers and finding their maximum? It just doesn't come up very often in day-to-day life, and when it does any random spreadsheet remains a better fit.

    Sure, it's a stepping stone, and the perks you get at level 20 can be very rewarding, but to get there? You have to slog through the marches of SyntaxError, test your mettle against hordes of bugs, learn from the hidden scrolls of the Standard Library, equip yourself with the right algorithms, and your reward? It'll be a paltry amount, that you'll have to look for in the evershifting maze of Everything Else Outside Your Damn Compiler.

    That is to say, getting to the point of being able to solve a part of the problems life throws your way? It's hard. It's frustrating. It takes a long time, because you don't just have to learn a programming language, but your editor, your programming environment, the environment you might have to deploy your program on, what you need to interface yourself with...

    If it should be done, it should be done right: you can't just stop at the basics, which is what most of the proposals I see seem aimed at, you'll have to carry on with it for years. I don't see any shortcuts, and I don't think we have enough teachers to make this feasible on a large scale.

    Yes, of course adding even an introductory class to the curriculum could help. A fraction of a fraction of the whole is bound to be greater than relying on happenstance for people to get interested. Still, I can't help but think it will just end up being Yet Another Chore, Something You Do At School, and that is not, in my experience, a very pleasant thing for an activity to be associated with.

    4 votes
  6. mrbig
    Link
    I answered comments but never stated my position. I think 6 years olds are probably too young to learn programming. Not that they’re not capable, I just don’t think it’s worth it. I also think...

    I answered comments but never stated my position. I think 6 years olds are probably too young to learn programming. Not that they’re not capable, I just don’t think it’s worth it.

    I also think kids can be very different. Some might fare better with sports and other kinds of physical activity. Others may love music or drawing. Some might simply enjoy videogames. And some might express a genuine desire to understand how videogames, computers or other electronics work.

    I believe only the last group should be thought to code during childhood. I don’t know what to think about teenagers, but I tend to favor a vocational approach.

    1 vote
  7. [13]
    mrbig
    Link
    @hungariantoast I must say I disagree with the edit on the title. I found it unnecessary, overzealous and too editorializing.

    @hungariantoast I must say I disagree with the edit on the title. I found it unnecessary, overzealous and too editorializing.

    2 votes
    1. [13]
      Comment deleted by author
      Link Parent
      1. nacho
        Link Parent
        It's much better to have a descriptive title than adopting a clickbaity title because the original publication used it. That is not a good reason for having a title. A submission having a good...

        It's much better to have a descriptive title than adopting a clickbaity title because the original publication used it. That is not a good reason for having a title.

        A submission having a good title is way more important than who wrote that title, when it was applied etc.

        The second clause that essentially says "before teaching creativity" gives way more information and context to readers when they decide if the piece is worth clicking or not. I find it hard to argue against giving readers that extra information.

        12 votes
      2. aphoenix
        (edited )
        Link Parent
        I hate the clickbaity title, and the one you supplied is so immeasurably better. What a stupid fucking title they (Slate / the author, I mean) decided to put on this.

        I hate the clickbaity title, and the one you supplied is so immeasurably better.

        What a stupid fucking title they (Slate / the author, I mean) decided to put on this.

        8 votes
      3. [9]
        mrbig
        Link Parent
        I don’t feel strongly about that title. IMHO title changes must be made only when necessary, not when we think the original title is not very good. IDK if there’s a rule about that, so I’m putting...

        I don’t feel strongly about that title. IMHO title changes must be made only when necessary, not when we think the original title is not very good. IDK if there’s a rule about that, so I’m putting it here just as a matter of opinion.

        2 votes
        1. [7]
          Comment deleted by author
          Link Parent
          1. LukeZaz
            Link Parent
            For what it's worth, I'm with you on this one. The title as the article put it is ridiculously clickbaity, and I was rather peeved when upon reading the article I found out that I had, in effect,...

            For what it's worth, I'm with you on this one. The title as the article put it is ridiculously clickbaity, and I was rather peeved when upon reading the article I found out that I had, in effect, been duped.

            10 votes
          2. [5]
            mrbig
            (edited )
            Link Parent
            I don’t really care about the authorship of a title and it was not my intention to defend that there’s some kind of purity in the original that must be maintained at all costs. But an edit is an...

            I don’t really care about the authorship of a title and it was not my intention to defend that there’s some kind of purity in the original that must be maintained at all costs. But an edit is an action, and I believe there must be something about an edited title that distinguishes it from the others that is not entirely subjective.

            And I thought the edit in this particular case was heavy handed and unnecessary. I believe an edit must be warranted in some form or shape, and the reason must also be reasonably strong. So it seems I disagree with Deimos on that instance.

            1 vote
            1. [3]
              cfabbro
              (edited )
              Link Parent
              IMO at the very top of this comments section is a perfect illustration of precisely why editing clickbait headlines is absolutely warranted. All that leaving them as is does is encourage responses...

              IMO at the very top of this comments section is a perfect illustration of precisely why editing clickbait headlines is absolutely warranted. All that leaving them as is does is encourage responses focused on disputing the headline to take the lead, while discussion on the substance of the article (even if the substance is good) is typically forced to take a backseat.

              Now you may be thinking, "but it's only one comment"... but Tildes is still small, so imagine 100x the volume of comments and then how far down the comment page do you think you're going to have to go before you find any responses that aren't focused almost entirely on the title?

              Based on my experience with reddit (and to a lesser extend HN), I would guess having to go down at least 3-4 top level comments (each with dozens of replies), in a moderately active topic, before actually being able to find a comment which doesn't spend the majority of its time focused on addressing the issues with the headline. So personally, I would rather a mod just edit the title to be more reasonable as soon as they notice it, or even encourage OPs to do it themselves, so that the discussion isn't derailed immediately.

              3 votes
              1. [2]
                skybrian
                Link Parent
                If you mean my comment which is currently voted to the top, I posted it to say the article is good despite the headline, to head off any further disputes about the headline and hopefully focus...

                If you mean my comment which is currently voted to the top, I posted it to say the article is good despite the headline, to head off any further disputes about the headline and hopefully focus more on content. But I guess that failed pretty spectacularly. :)

                I'm not at all against editing titles, but if the UI called out edits better then we could have avoided a meta-discussion. Mostly it's just surprising when it changes.

                1 vote
                1. cfabbro
                  (edited )
                  Link Parent
                  You may have been trying to stave off further disputes on the headline, but that still required disputing the headline. :P And I wasn't saying your comment was bad, BTW... but shitty headlines...

                  You may have been trying to stave off further disputes on the headline, but that still required disputing the headline. :P And I wasn't saying your comment was bad, BTW... but shitty headlines beget responses (both good and bad) about said headlines, instead of about the contents of the article, which was my main point.

                  if the UI called out edits better then we could have avoided a meta-discussion.

                  I don't know about that. Calling even more attention to any edits may do the exact opposite, and actually cause even more meta discussions and arguing than it potentially prevents, which is precisely why the noise label is no longer visible like it was in the beginning. It might be worth having a meta-discussion on ~tildes to discuss this though.

                  2 votes
            2. wakamex
              Link Parent
              I agree completely to set a higher bar for edits to someone else's submission title. I'd get the best of both worlds if someone just made a comment saying "I read the article and I'd better...

              I agree completely to set a higher bar for edits to someone else's submission title.

              I'd get the best of both worlds if someone just made a comment saying "I read the article and I'd better summarise it as X" in this case X being "Teach your children creativity and quality before you teach them programming".

              When the original title isn't outright terrible or wrong (to some relatively bar), I much prefer this approach.

              1 vote
        2. [2]
          streblo
          Link Parent
          I know on HN they editorialize clickbait titles because all they do is provoke a response from people who often don't even read the article.

          I know on HN they editorialize clickbait titles because all they do is provoke a response from people who often don't even read the article.

          9 votes
          1. [2]
            Comment deleted by author
            Link Parent
            1. streblo
              Link Parent
              Haven't we seen enough internet to know the honor system doesn't work?

              Haven't we seen enough internet to know the honor system doesn't work?

              7 votes
      4. NaraVara
        Link Parent
        When it's on slate.com people should just be aware that this is par for the course. It is known. There was a whole meme about it.

        I found the title unnecessarily "baity", confrontational, and completely irrelevant to the actual content of the article

        When it's on slate.com people should just be aware that this is par for the course. It is known. There was a whole meme about it.

        1 vote
  8. [5]
    mrbig
    Link
    I’m confused. Did I paste the title wrong or did someone change it? That’s not the title AFAIK.

    I’m confused. Did I paste the title wrong or did someone change it? That’s not the title AFAIK.

    1. [2]
      Liru
      Link Parent
      /u/hungariantoast changed it, according to the topic log.

      /u/hungariantoast changed it, according to the topic log.

      4 votes
      1. mrbig
        Link Parent
        Can’t say I appreciate the change and how it’s not evident from a quick look.

        Can’t say I appreciate the change and how it’s not evident from a quick look.

        2 votes
    2. [2]
      skybrian
      Link Parent
      Probably edited by a moderator. It would be nice if the UI showed history for this.

      Probably edited by a moderator. It would be nice if the UI showed history for this.

      1 vote
      1. Wes
        Link Parent
        It's listed in the Topic log in the sidebar. The log is available for 30 days (though after topic submission or last action, I'm not sure).

        It's listed in the Topic log in the sidebar. The log is available for 30 days (though after topic submission or last action, I'm not sure).

        8 votes