9 ms·
This is a fantastic move. In this day and age we should treat "everyone needs to know how to to program" just like "everyone needs to know how to read, write, a
by ggambetta 9y ago
This is a fantastic move. In this day and age we should treat "everyone needs to know how to to program" just like "everyone needs to know how to read, write, and do basic maths".
Does everyone need to write code for a living? No, just like we don't expect everyone to be a professional writer or mathematician. But software is so pervasive that within a generation or two, not understanding how it works will put you at a severe disadvantage.
- probablybroken 9y agoYou could say the same about electrical or mechanical engineering, both of which are already pervasive.
- ggambetta 9y agoHmmm. Interesting. I don't need to know much about electrical engineering to use electric and electronic devices all day long. As you say, they're even more pervasive than software. Two ideas come to mind. First, maybe this is because electricity has gone far beyond "pervasive" into "fully invisible". Second, maybe this is because software is inherently more complex and can't be made fully invisible. Maybe both ideas are actually the same, but playing on different points of their lifecycles - will software become so industrialised and standardised within a century that it will become as invisible as electricity? Thinking about early car owners, who needed some non-trivial understanding of how it worked just to be able to use it, or how you needed to know some trivial amount of BASIC to do anything at all with the 80's home computers (<3 ZX Spectrum).
- ldp01 9y ago> Two ideas come to mind. First, maybe this is because electricity has gone far beyond "pervasive" into "fully invisible". Second, maybe this is because software is inherently more complex and can't be made fully invisible. I think your second point is the correct one. Software eats itself as much as it eats anything else. This is the purpose of compilers and high level languages. To someone coding in a high level language, C code, assembly, and the electronic hardware itself are all reduced to invisible infrastructure. (That's the idea anyway, leaky abstractions notwithstanding). So, I would argue low level software is often already invisible in the sense that it is hidden behind the abstraction of higher level languages or user interfaces. But the definition of "low level" changes as more advanced software is created, so it's forever a moving target.
- throwawayjava 9y agoAnother explanation: electricity is dangerous. So are machines. If you can automate some portion of your desk job, you're a much more valuable employee. The same is theoretically true for factory workers and mechanical/electrical engineers, but the barrier to creating your own factory automation is extremely high. And no one is going to let a random factory worker tweak/augment expensive machinery in a novel and untested way. Whereas an Excel macro or quick Python script for parsing some data and doing some computations or sending some emails is very accessible and totally acceptable in many environments.
- marcosdumay 9y agoNot exactly "fully invisible", but it got a much simpler interface than what we have any expectation of ever achieving with software. And some people still die because they used that interface wrongly.
- userbinator 9y agoI don't know in detail what it's like now, but when I was in school (decades ago...) those subjects were covered as part of physics. Whether the majority have retained that knowledge is a different matter, but it was definitely taught; I suppose the same would apply to programming if it were to become part of the mandatory curriculum.
- lordnacho 9y agoAbsolutely. Just as reading and writing is part of current ordinary jobs like consultancy or plumbing, in the future everyone will be working so closely with the machines they need basic skills: - How do various UIs work? This is more of a "power user" type skill but nonetheless it's worth practicing. You'll also need an idea of how things work from the user side to write the UI later on. For example you could learn how iOS and Andriod work by playing around with it, and then having a go at making your own apps. - How does networking work? Stuff will break, just like your plumbing and bureaucracy. You'll need to know at least how to diagnose why you have no internet connection. - Superficially, how does a given algorithm work? The kids don't need to know everything about DNNs but they have to have the overview of what image recognition does, so they can form expectations about how they will interact with it. - Security. There's going to be more and more stories about breaches. Just as we teach them sex ed, they need some basic knowledge about how a password is stored, what encryption is, and so on.
- roel_v 9y agoSo I downvoted first, then decided to reverse to reply why I think what you're describing is exactly what we should not be doing (and what isn't being done in this space, luckily). Early age computational thinking is not about using computers, like how to use various operating systems or setting up networks or what is a good password or things like that. When I talk to teachers/school administrators but also other parents they are all excited and give these things as examples of how the curriculum (at my kids' school) could be extended. I think this is because to them, that's 'advanced computing' so that's what children need to know. As to you - I presume since you're here that you work as a programmer, so in that sense you're kind of throwing off my theory... Either way, what is being done in this sort of programs, is teach elementary thinking skills. For many, you don't even need a computer. It's about the concept of breaking down a task into very small subtasks that you can describe exactly, without ambiguity, and while still covering corner cases. That is 'computational thinking', and it's so far removed from the everyday world of current adults (who are not at least somewhat programmers) that they usually have a very hard time even understanding what it's about. How you configure your internet connection is nothing like that, and such menial skills have no place in elementary school classrooms. There are only so many hours in each day, we need to make optimal use of them. Teaching these fundamental skills can be done e.g. using robots like Beebot or Cubetto or similar; using simple programming environments like Scratch; or on paper / in real life like getting someone to describe how to sort other children from small to large in a generic way (and having it play out in front of them); or with board games that incorporate elements of it. There's a lot of experimentation being done how to best teach these things, and the things you'd think of as the 'obvious' way is quite often wrong (for example, getting a 5 year old to drive a robot and introducing conditions and iterations is quite easy and can happen in a few hours; but usually they won't be able to generalize that knowledge. So you need to dress it up into something immersive, to 'soak' them into this way of thinking essentially, and not just a trick they know how to do).
- robert_tweed 9y agoI think they are aiming for exactly the right target, not teaching HTML or somesuch: "children should learn how to break tasks down into step-by-step instructions, test those instructions and correct them." Not all will go on to become professional coders. Not all will be very good at it, just as some people aren't great at spelling, or basic maths. But this lays the groundwork for logical thinking with a scientific approach to validating assumptions. Getting this down at an early age, when kids are learning fundamentals like counting and spelling, will give them a really strong foundation for developing advanced thought-based skills later. That is far more important than the specifics of knowing how to code.
- watwut 9y agoI agree. Moreover, if you can "break tasks down into step-by-step instructions, test those instructions and correct them" then learning HTML or anything is truly learnable by yourself - even if young. You can reusebius that core skills in many contexts - including non-programmer software like excellent. It does not work other way round. In my experience, it is precisely the difficulty with breaking tasks into step by step instructions that makes difference between people who have easy time learning it vs hard time learning it.
- 0xcde4c3db 9y agoExactly. Programming at this level should be thought of less as "learning how to code" and more as "learning how to give clear instructions", which is a skill set that has value in general communication, management, etc.. A surprising number of people make it to adulthood and sometimes even management positions without really appreciating the possibility of their instructions being ambiguous or incorrect.
- sopooneo 9y agoAs a former teacher, I found that it was easier to teach kids concrete things and try to get them to glean the abstract then vice versa. In other words, you might learn how to code in order that you then know how to give clear instructions.
- userbinator 9y agoBut software is so pervasive that within a generation or two, not understanding how it works will put you at a severe disadvantage. Unfortunately the corporations seem determined to put a stop to that sort of pervasive knowledge, if only for the purpose of controlling and monetising their users. They don't want people to know how easy it is to do things like strip DRM or remove artificial limitations from software. [See Stallman's famous story, or the Cory Doctorow articles on the demise of general-purpose computing.] And thus most of the "learn to code" efforts I've seen have seemed to focus on some ultra-high-level language, removed from reality and often sandboxed, so that while people do learn the very-high-level concepts of how computers work, they are no less unclear about the functioning of the actual systems they use daily --- or how to use them fully to their advantage. In some ways, they're trying to teach how to write programs without understanding existing ones. The document said children should be writing programs and understand how computers store information by their final years of primary or intermediate school. However, this sounds more promising. Especially if they're starting more along the lines of this book: https://www.amazon.com/Code-Language-Computer-Hardware-Software/dp/0735611319 https://www.amazon.com/Code-Language-Computer-Hardware-Softw...
- deleted 9y ago[deleted]
- SamReidHughes 9y agoActually no, the nature of "learn to code" efforts has nothing to do with some corporations' monetization schemes.
- FranOntanaya 9y agoI would look at it from an even more basic perspective. We look at children learning to play chess as good for their cognitive development. Learning programming could likely play the same role, with the added bonus of having a practical purpose. For that reason I think it'd be misguided to lean too heavily on testing their performance — kids learning chess aren't required to reach certain level at the end of the year, the goal is to go through the training itself.
- zdkl 9y agoYour metaphor makes sense, but I'd argue programming is more aligned with subjects like say physics, where you need to give at least a basic understanding of the fundamentals. I mean this in opposition to the more optional side of chess club. Sure we don't expect all participants to become outstanding engineers in either physics or programming but I'd argue it'd be a good thing to require at least some level of understanding of the underlying "sciencey" (or engineering) qualities.
- sametmax 9y agoThis is nice in theory, but I would like kids to be able to actually read, write and do basic maths correctly today instead of trying to add things. Cause last time I checked a crazy numbers of them lack basic skills after they got out of high-scool. That's is a terrible and grave problem we should try to solve in an emergency before doing anything else fancy. Stuff that anybody should be able to do WAY before being able to code: - make the summary of a text - calculate % of something - understand correlation is different from causality - read graphs and maps - follow instructions in a book to do a simple task - write a letter explaining directions in a clear way - being able to demonstrate causality on a simple system they just witness working without using an example in their demonstration - calculate the cost of buying a car or having a baby when given the proper metrics and projecting on that Those are stuff our system is supposed to succeed in teaching at a very young age and many adults don't even have such basic skills. We have a problem here.
- silassales 9y agothis is an oddly specific set of tasks
- zdkl 9y agoSurely you sense the common theme? It's not expected of everyone to demonstrate outstanding mastery of literary or numerical skills, however some tasks are generally useful and require a basic understanding of the fundamentals. The list above illustrates a sane basis I'd expect from the people in my community for one. Many other skills are window dressing as they say. Teachers, especially here in France it seems have taken to the notion that one teaches better through abstraction and unrelenting positive encouragement. I don't want to be the grumpy old fart, but maybe a stricter enforcement of realistic & basic requirements like those listed in your parent are a good first step. Let those who want a diploma/certificate work for it and encourage students by all means, but sometimes not good enough is just not good enough and that should be OK for national education to recognise and adapt to.
- sametmax 9y ago