Should Johnny Learn to Program?

Last week I shared a link on Facebook - Why Johnny Can't Program: A New Medium Requires A New Literacy – that makes that case that everyone should learn how to program.  Philip A DesAutels, my good friend and one of the smartest people I know,  replied in Facebook with a long well-though out reply. With his permission I copied it below as a sort of guest post. I would love replies either to the origional article or to Philip’s reply. Who is right? Philip or Douglas Rushkoff? Should everyone learn to program and if so how much? Or should we only push a few into programming? [EDIT: The ACM and CSTA have a new report out about computer science education in the US. I blog about it here.]

Philip wrote:

I truly understand the place of CS in HS and so, I feel the need to rail against this article... Let's start with a line that sums up the central premise - "Digital tools are not like rakes, steam engines, or even automobiles that we can drive with little understanding of how they work." Ummm, hello Douglas, first each of these technologies - hand tools, steam engines and automobiles transformed humanity, each had a very dedicated training program for professionals and users and each was encapsulated to the point where it the technology (or its meta-equivalent - is now so well hidden that only a few experts need the professional design skills while the mass of users can apply the technology with some technical skills and deep domain skills. Let me explain.

Rakes, aka hand tools - I am trained at the nation's premier craft school, the North Bennet Street School, in the art of using hand tools to build wood structures. I was in a class of 12 Preservation Carpenters who know how the make (not buy) moulding, who can build a timber frame and who can carve a Corinthian Column capital with an appropriate acanthus spinosus leaf detail. And if I continued in that profession, I would have been in a minority of carpenters, practicing an art form. Our chief competition and the reason most in the 'real carpentry' trade can't charge someone the $80 an hour is what I would term modernization... aka the Big Box and the lumber yard. Sally homeowner can run to Ikea and buy cabinets that she can put up herself, she can go to home depot and buy wood flooring that is prefinished and a sink that requires no open flame to install. Why would she call me unless she lives in a period house and wants to preserve an art form? Technology has encapsulated my skills (learned in two hard years of apprenticeship) and made them available to the masses. Is there still a need for real carpenters, not just assemblers as I call what most 'pros' and homeowners are (intentionally derogatorily since I am a real carpenter...)? You bet! But we do not have nor need tens of thousands of students studying the fine art of carpentry in its Vetruvian classical form. We need students studying modern building codes and sustainable building practices for the modern age. If they can't shoot a moulding by hand or tell you the appropriate ratios for moulding in a room, does it matter? NO... If these modern carpentry students can't use that encapsulated technology to build modern structures that are safe, energy efficient and stylish then we and they have a problem. Even if a few very skilled in the carpentry profession are creating the encapsulated components, there won't be anybody to apply them.

I could make the same ranting point about steam engines - not many of us firing up the coal boiler to make steam to open the garage doors today...or the automobile - when was the last time YOU even checked you oil let alone adjusted the timing or valves... The points I make here are that 1.) Technology encapsulates, 2.) Encapsulated technology requires domain skills combined with a new type of technical skill to apply encapsulated technologies to modern problems. And.. herein lies the problem with the argument presented in this article and the call for more CS programs in High School. To what end? Is this like a call for more carpenters to learn how to make mouldings by hand? More HVAC professionals to learn how engines are designed? I THINK SO.

There are students for whom programming is a desired skill. They want to be developers. Great for them. The giant hole in our workforce isn't entry level developers who can hash out c code and write a compiler from scratch. It is for people with combined skills who can APPLY encapsulated technology (lots thanks to companies has been encapsulated) to specific domains.

So I offer up a different call. In high school, teach students how to apply technology. Teach them how technology fits with their domain of interest. Teach them how to use the components not how to build them. Those students that want to become more technical can choose to learn down the stack to real engineering (aka CS, CE, EE) or up the stack to become expert in technical domain applications (IS, CIS, Project Management, Bioinformatics).

There are FAR FAR FAR more jobs out there today for someone with the technical skills to build a SharePoint portal, or light up a CRM instance or build a bioinformatics database than there are for someone who can build the next Python compiler. Let's stop trying to train the mass of high school students to become preservation carpenters, and instead make them very good contractors.

Comments (29)
  1. David H says:

    How many people need to program?  Anyone who uses a spreadsheet.  Anyone who wants to customize a web page.  Anybody with the horrible task of customizing generic business software to work for a small business.  And to borrow one of your examples, anyone creating a Sharepoint portal would benefit from a bit of programming experience.

    Many tasks in the modern world are just programming in disguise, often not very well-disguised.  Alongside Firefox, Safari, Microsoft Word, and other programs that show off man-decades of professional UI design effort to hide the nature of the machine from users, regular people must also use many programs that expose the logic of programming, either intentionally (Microsoft Excel, Microsoft Access, even Word macros) or unintentionally (hordes of poorly or hastily designed business applications.)

    The work of providing polished, usable user interfaces for every computer system will never be done.  The world moves too fast.  Imagine a world not with smoothly humming cars, but with tens of thousands of different car-like devices, many of which were patched together in a month by a poorly paid college intern.

    Also, don't forget that changing a spreadsheet, configuring software for a small business, or editing the rules governing what happens to a sales invoice are all poorly-disguised programming tasks and will always require a certain analytical mindset, right up until the computers are ready to take over those tasks and reduce us to fetching coffee.  Programming is a great preparation for those tasks, just like writing history papers is a good preparation for writing business memos.  That's how school works:  we don't force high school kids to write business memos and customize enterprise business software.  We teach them more abstract tasks that are less mired in real-world complexities:  how to do research, how to write well-structured papers, and (hopefully) how to build and control simple computer systems.

  2. Fokion Zervoudakis says:

    The author's comparison of programming to carpentry is misleading, misguided, mis… er, plain wrong. Programming is an art, but also an engineering, mathematical and scientific discipline. The author claims carpentry to be an art, as well as a technical skill. Surely, but, no offense to the author, if all carpenters were to change profession tomorrow, the world would survive. The same cannot be said for programmers, which drive a 400 billion dollar industry, and sustain a growing dependence on software.

    As Bjarne Stroustrup (inventor of C++) once noted in Technology Review, "The idea of programming as a semiskilled task, practiced by people with a few months' training, is dangerous. We don't have as an aim that architecture (of buildings) and engineering (of bridges and trains) should become more accessible to people with progressively less training." He ends with: "let's not let most people loose on the infrastructure of our technical civilization".

    Sorry Philip, bad example. Not horrible, offensive, etc., but misleading and rather naive.

  3. Alan Kleymeyer says:

    I agree with Phillip.  I would recommend a deeper understanding of computing for the USER.  People don't have a clue of the very basics of computing.  

    How many people click on an attachment to save and can never find it again?  People don't understand the concept of CC vs BCC.  Folks don't not the difference between  an Operating System, a browser, and a website.  Learning how to program is NOT something everyone should learn.  Phillips is right on the mark in suggesting we adjust the education system to teach application of encapsulated technology.  A good book on the subject is Daniel Pink's A While New Mind.

  4. Chris says:

    I, on the other hand, very much agree with Philip's example.  I also agree with his conclusion, but am unsure how to put it into practice.  That is, I don't know how to teach students to "use technology" in ways that will be tranferable to technologies of even 5 or 10 years hence.  Partly there is an issue with abstraction.  The kind of transfer we want depends on a degree of abstraction that many high school students are not yet developmentally ready for (see Piaget and others).

    Of course, the same point applies to the pro-programming camp.  We, the experts, see all the many ways in which programming skills transfer to the modern world.  But, I believe the evidence strongly shows that novices, who have taken perhaps one semester of programming in Alice or Scratch or Java or whatever, cannot make this transfer.  That is, taking one or two courses in programming will not necessarily prepare students to accomplish the tasks mentioned above (eg, customizing a spreadsheet or configuring software).  It is not until a greater level of expertise is developed that we will see the kinds of benefits from transfer that we want.

  5. MehGerbil says:

    If the public school system could teach kids to not open every freakin' email attachment they get I'd be delighted.

    We don't need everyone to know how to program.  What the modern workplace (and home) needs is people aware of Anti-Virus Pro, Nigerian Princes, and other tech hoodlums/scams.  Teach the kids how to identifiy spoofed pages and that links can take you somewhere other than advertised.

    Just like drivers training doesn't teach you about the engine but rather, how to use the power of a car safely, even so we need people who are aware of how to use technology safely.

  6. Andrew says:

    I agree with Philip in this, it seems reasoned to say in many technologies we start with a complex beast that few understand and use. Gradually this beast becomes mainstream then more and more people want to build and maintain their own instance of it. Once we understand the technology we need only to amend it to our needs, not redesign from scratch.

    A weaving machine is a perfect example, you may need them in a company but a generic machine that can be configured to create the weave you want is easier and less expensive than attempting to create your own weaving machine each time you create a new design weave.

    This analogy can be applied directly to software, we have a core set of people who have a deep understanding of creating applications for a PC, they then expose a simple interface that allows a user to configure it to their needs, although example of this are not so easy.

    Schools have development tools now where you can drag and drop a component of functionality, such as "for every item it have, do something". In simple terms they express what they want to do and the complexity of how it is done is hidden by the professional developers.

    Is this not just a case of a language specific to your skills:

    A writes in assembly to create a low level O/S

    B writes in c++ to create a GUI for the OS

    C writes in C# to create applications that run on the OS in the UI

    D uses that application to build their process upon

    At point A you need a thorough understanding of the hardware and architecture with out knowing the specific purpose for which it will be used.

    At point D you know nothing of your hardware, how to retrieve data from a database with SQL, etc. But you do know what you want to do.

    Surely we are back to the abstraction of complexity we see in so many other real world systems. Maybe we just need to ask is there really two different disciplines here:

    Application programming

    Process programming

  7. Mohammad Denmark says:

    I just want to comment on this part

    "Teach them how to use the components not how to build them."

    I totally agree on this. I have experienced the same thing at the University. I was forced to learn how a network functions, not how to crate one, or configure one. Regarding security I learned all kinds of differnet algoritmns

  8. Omer says:

    I am not opposed to what Phillip says here, yet I don't see how this article contradicts Douglas Rushkoff's. That article is not about teaching high school children create compilers or operating systems, it is not even about making them professional programmers. It just claims that for people to have a better idea to utilize and understand the technology that use extensively each day, a programming starter course in high school is necessary. At least that is what I understood from it.

    The carpentry example just doesn't fit to the current argument in many ways. The knowledge of carpentry to sit on a chair is not necessary, because chairs or buildings or hardwood floors are not things that you tweak or configure to your liking to be used efficiently. The original article only says that we use web sites or tools like MS Excel everyday whether we want to or not. The technology we use every day is getting highly interactive and to be able to interact with it, or even just use it securely we need to understand how it is done. It is not saying that we need to learn how to write it from scratch.

    People don't know how to connect modems, they don't know what is a registry and why certain operating systems gets slow as they use it. They don't know what is a virus, or an anti virus, they don't know what is a session or security. I know that programming course won't teach these but even computer science majors don't teach these, it just that as you learn programming you get interested and learn it yourself. It is just telling the students that this computer thingy with bright lights is something that you can talk to, and they are just programmed to do things they do by people like them.

  9. Terry M says:

    I disagree with Philip.

    I agree with the idea that we don't need to pump out trained carpenters, because we have new technology that has advanced that craft. However programming does not fit in that category.

    With carpentry, we don't need to learn the old ways because we have new ways, but we are also well versed in those new ways. If we wish to advance carpentry, we need people to learn the mass production techniques we use today, and then push that technology forward to stay on the forefront of carpentry.

    However, the internet and computers in general are still advancing via good old fashioned software development. New paradigms and advancements come from software development shops. If we wish to stay at the forefront, we need programmers, not techs who's only training is domain specific knowledge. That knowledge will be useless if a new piece of software replaces the previous.

  10. technogeist says:

    The whole point of object-oriented programming was supposed to solve the need for *deep* understanding & low-level coders.

    Instead letting experts in a particular field bolt together components, much the same as an architect designs buildings from pre-fabricated materials. Rather being tediously bogged down with making the building's component parts.

    What we have ended up with is experts on a particular programming language (C++ etc) and very few experts on the problems that need solving.

    Maybe there's an element of job protection that has maintained the developer status quo for the last 20-25yrs.

    It has to stop, give us the tools to solve problems simply and without the need for C++ gurus.

  11. Molly says:

    Teaching programming at high school or college for those who don't aspire to be developers show people how a computer is working–it removes the mystery and shows them that they're the ones controlling the computer.  I realize that it's not something that can be quantified as I learned while working on my Master's thesis–where I taught a computer literacy course that had programming in it (14 years ago).  The programming portion was taught at the beginning of the course and I saw students try things that went covered in class (e.g. using Access versus dBASE IV for the database portion–keep in mind, this was 1996:-)

    I did the same thing as a full-time instructor at a community college for another type of course and saw the same thing.  The best part that happened there that I saw–students wanted to major in it or take more computer science courses as electives (kind of goes along with Omer said–about getting interested).

    I've been working as a developer for the past 10 years and I've worked with all kinds of users and yes, when it comes to speadsheets, web pages, and databases–both for work and personal use–people are doing programming.  

    I say let's make better power users of the future and teach programming in high school.

  12. Jeff says:

    Philip is basically correct.  But at the same time, he misses an important point.

    We don't learn ancient carpentry techniques so that we can become masters in the art of ancient carpentry and make a profession of it.  (At least not the vast majority of us who have no desire for that.)  We learn ancient carpentry techniques so we can learn how to learn, have an appreciation for various fields of study, and learn to view problems from different perspectives.  And sometimes for the pure enjoyment of it.

    This is the reason I Home Ec in High School, and the reason I studied anthropology, and music, and the reason I play chess and poker.  And each of those things has made it easier in the long run to learn other new things, and each has given me important lessons I can apply in other areas, and each has given me an appreciation for differerent perspectives.

    Philip is correct that we should definitely teach students to apply technology.  But we should also teach them specific technologies.  It's interesting to note that the majority of civilization knows how to use a computer and cell phone, but probably could not survive if left alone on a tropical island.

  13. Jeff says:

    Chris said, "I, on the other hand, very much agree with Philip's example.  I also agree with his conclusion, but am unsure how to put it into practice.  That is, I don't know how to teach students to "use technology" in ways that will be tranferable to technologies of even 5 or 10 years hence."

    And that is the reason, Chris, that we should teach them to program (and other things.)  So that they learn how to learn.  So that they can learn to use technology on their own and adapt.

  14. Jeff says:

    "The whole point of object-oriented programming was supposed to solve the need for *deep* understanding & low-level coders."

    I don't agree at all with that (except to the extent that all "high level" languages eliminate the need for "low level" code.)

  15. Joe B says:

    Interestingly enough I agree with both sides of this debate.  We certainly need to offer more technical courses in high school that will help lead students down a path to success.  We do not need to offer them en mass however.

    I think back to when I went to high school and many of the students took typing (as in with a typewriter).  Was this a useful skill for everyone? No.  As a result not every student needed to take it, only those who wished to excel at it.

    All student where however required to take a gym class where they were exposed to different forms of physical fitness.  Why?  Simply because it is best that we have fit teenagers rather than ones who are unfit.  It helps them to remain healthy; it lowers the burden on society when they become ill from diseases that strike the unfit.

    Now you may be asking why do I bring these things up? Simply to point out that some things are necessary and others are not.  Programming is something that some students will find interesting and as such may lead them into CS course of study later in life.  Others may choose to ignore it as they desire other skills such as working with their hands.  In other words let it be an elective course, do not ram it down the throats of the students.  They will learn better this way and enjoy the study rather than shun it.

    Finally I have been exposed to situations in my study of Information Technology where students were required to learn programming.  Many had a difficult time with it, whether it was in Visual Basic or bash scripting.  Many of us are not "built" to program.  Our brains are not wired for it.  Will many of the younger generations pick it up easily, YES!.  But many will not.  We do not want automatons in this world that all can do the same thing as this will ultimately stifle invention and advancements.  Let each decide their own path and learn the skills they choose.  We will all be happier well adjusted individuals for it!

  16. Billy H says:

    Maybe it is because I didn't read the original article, but am I the only one that realizes that teaching programming in high school isn't about learning to program?  Like many other things you learn in high school, it's not the actual material you learn that is so valuable.  It is the opening your mind to different ways of tackling a problem.  My point is not even limited to Math and Science.  We learn history to understand design patterns that have worked and common mistakes made otherwise.  We learn English from a grammatical sense to know how to achieve our goals from a verbal or written standpoint.  We learn English in a literary sense to be able to understand messages that people try to convey when they use the aforementioned grammatical skills to communicate with us and so that we can reply effectively in return.  If you disagree with my points, the easiest example comes from the cliche dealing with math formulas.  Are you restricted in the world from looking up these formulas when you need them?  Not at all.  Most people have an internet search engine on their phone if they need one not to mention relevant reference books that they would purchase for their jobs.  The importantance of learning the formula in the first place is to understand how you got there and how to use it to tackle bigger problems.  Phillip argues that application should be taught, but that has always been the point of schooling.  Unforutnately, our current public school system has no grasp of this notion and never will as long as NCLB is in effect.

  17. Jeff says:

    "Teaching programming at high school or college for those who don't aspire to be developers show people how a computer is working–it removes the mystery and shows them that they're the ones controlling the computer."

    That is a great point.  I've seen so much paralysis due to fear of the unknown when it comes to computers.

  18. AJD says:

    We should teach programming.  It's not about learning the languages.

    It's about learning the thought process behind the coding.  Similar to why kids learn Chemistry and Physics.  Most of them aren't going to be chemists.  But they can use the logical principals taught there to figure out different things.  I credit an interest in Math and science at that age with turning me into a programmer.  I liked the scientific thought process and learned it there.  I may not be mixing X parts Hydrochloric acid with X parts of something else then figuring out the reaction, but I learned the thought process I use daily in that classroom.

    Add to this the benefit that teaching programming may inspire a kid who is REALLY good at it.  I have a friend who has built several high profile applications and got started in our 10th grade programming class.  Would he have gotten started without that inspiration?  Who knows, but it helped.  

  19. Charley Williams says:

    Completely agree with Billy H and AJD — Teaching CS in HS is NOT about preparing future programmers, although we do open the doors to kids who discover they want to pursue this as a career or serious hobby.

    Much more importantly, we're teaching critical thinking, how to model a problem and create an algorithm to solve it, and how to experiment with solutions in a safe environment until we find out that works (…and then understand it well enough to apply it to other problems!).  

    A well taught Computer Science course (especially with today's high-level languages and tools) just happens to provide OUTSTANDING ways to teach these skills that really apply throughout our lives.  The development environment is interesting and motivating to many kids.  It gives immediate personalized feedback, allows the kids to be creative in their solutions, but you as a teacher can still impose objective minimum requirements that a solution must meet.  If used well, a programming environment is simply a great educational tool for teaching kids how to think.

    Too many people consider high school CS as job training.  If taught well, CS isn't about the computer.  It's about using the computer as a tool to get kids excited about learning.  (…and indeed to "trick them" into thinking math and logical thinking can be fun!)

  20. Charlie says:

    Just skimming, I didn't see mention that a person's aptitude and skills matter.  Not everyone can either do carpentry or programming, or either.

    Carpentry requires a knack of hand / eye coordination, and programming requires geeky interest.  I want my kid to try programming, but mostly so he could be technical if he wanted, rather than as a profession.

    Speaking of typing, I learned typing on a typewriter decades ago, and it helps me daily.  Far too much process and documenation (sigh) where touch typing is useful.  And I can look away from my keyboard, keep typing and freak out folks coming to see me…  😎

  21. theWebNeck says:

    I agree with what was provided in this article. Students do not need to know how to mine iron ore to build a car, but if they are building that car, they need to know the capabilities and how to extend those capabilties of what is certainly offered as well as current limitations for future review.

  22. MikeA says:

    I agree with ADJ.  The key here is to teach a set of critical thinking skills.  When presented with a problem and a limited set of tools to solve it, how do you formulate a solution and make it real?  This is a skill that all people need in their lives.  Using CS as a means to teach critical thinking and problem solving skills has an advantage that other disciplines do not — namely a debugger.  Where else could you rewind your mistakes, take them step-by-step and figure out where your logic went wrong?

  23. Biff says:

    I disagree with Philip.  

    Information Technology  is at the heart of every significant company in the United States.  Check payments, bill payments, payroll, contract management for legal departments, compliance systems,  customer service .. etc ..  are all done with computer programs in most companies.  

    Financial and Insurance companies rely on high performance computing to capture, analyze and model, large volumes of statistical and market data to analyze risk, simulate protfolios and execute trades.  73% of all equity trades in the United States are generated by computer programs.  This isn't done with a spreadsheet.  It's done with C++ or Java code.

    lets not forget things like 911, the telephone system, power grids, the INTERNET, websites like this one, and even the ability to insert my stupid comment .. all programming.  His bio-informatics database .. how do you think the data is going to get into it?  I worked at a large institute of microbiology.  We used C and Perl programs to sift through the massive amounts of data.

    Philip forgets that life doesn't begin and end on his desktop computer.  There are thousands and thousands of software developers working on falt tolerent systems, so that he can forget how important they really are.  

    Sure, not everyone will be a programmer, but American businesses and infrastructure rely on these skill sets.    

  24. Darren says:

    Can we also say that people don't need to learn how to use math or take physics courses because where are they going to use those?  Math?  Just use a spreadsheet or a calculator.  That encapsulates those really well.  In fact I think we should just as a society forget school and just put our children in front of the computer and let them learn through all the websites they can journey to since the web encapsulates most knowledge.

    Or we can go with the alternate route.  I know a girl who is in college who, when I help her with math and the answer is 0.2 million, she has no clue that this answer is also 200,000.  The purpose of learning all of these things skills isn't just primarily so that the person knows how to do just that particular activity.  I argue that the primary purpose for high school students learning program is actually far more basic than that and the same reason we want them taking chemistry, physics and biology.  We want them to apply logic to the way they work with computers and the world in general, and this is just one tool to do it.  Could we just force people to take an abstract logic course?  Sure, but not as many people would be able to get anything tangible from that.

  25. Laura says:

    I think we need both.  Not everyone who takes math will become a mathematician, but knowing math, even complex math like calculus, can often be useful in everyday life.  I agree with Alan that a lot of people don't know the basics.  I'm teaching middle schoolers right now, and I can't tell you how many times they save a document and then have no idea where it is.  They don't know that Google docs is a web application that you access through the browser and that Microsoft word is a desktop application that runs separately.  

    Yes, we can teach these things through an applications-based course, but learning to program takes some of the "mystery" away from computing.   so that people often start to figure out, because sometimes they have to, what the differences are between web applications and self-contained/compiled ones.  Also, I think if you apply programming to specific problems in context, the transfer is better.  For example, students could create programs for other assignments in other classes, like analyzing data from a lab experiment, or figuring out the number of occurrences of a particular world in a group of texts.  

    Also, I'm halfway through Rushkoff's book and it's more along the lines of understanding the technology, not programming.  He hasn't talked about programming at all yet.  

  26. Prag says:

    "There are FAR FAR FAR more jobs out there today for someone with the technical skills to build a SharePoint portal, or light up a CRM instance or build a bioinformatics database than there are for someone who can build the next Python compiler".

    Very true, but as a true computer scientist I work in an environment surrounded by SharePoint and CRM / ERP types.  They do a pretty good job of using out-of-box tools to solve some problems, but because their limits are defined by these tools they try to use them to solve all problems.  Most of them have no programming or data modeling skills; they are not even technical people beyond mainstream IT "administrator" level.  So they frequently find themselves painted into a corner, unable to find their way out.  Many of their dilemmas are so trivial to the average computer scientist that if I posted them here, you wouldn't believe me.  

    So while compiler development job openings are not wide-spread, there is still something to be said for being educated/trained/practiced in the art of producing software as opposed to just consuming it.

  27. mikehat says:

    This is obviously an important topic. I'd rather reframe the discussion. Search and replace all reference to High School with Elementary School. Everyone confuses HS with technical/job training and begins to assume that the point is to ACTUALLY teach CS. Many in this chat, though correctly point out that there is real life application to all of the concepts.

    I, for one, am NOT a programmer of computers. But after a heavy, and early, dose of the concepts I have applied the ideas at every professional level – building systems out of bricks, paper, words and … people! Even modern CS concepts are rich in ideas that apply to so much more than binary gadgets.

    Yes, get the little problem-solvers spun up as early as possible. My father, an educator's educator, will tell you that teacher training is the real final frontier.

  28. Ken says:

    Interesting points of view in both directions. Both take the point of view that it would be easy to find the teachers. Enough to teach those who want to learn, I'll buy, enough for those who don't, I think not. We definitely don't have the teachers now who can teach those who want to learn. There are places where they are elated that they can teach word. Then you have my nephew who is turning down work so he can go to collage. He was charging $400/hr when he was 16 to fix computer networks/OS. He had to explain that he couldn't do some things they wanted because of child labor laws.

  29. Garth says:

    This has really got the readership fired up.  My question is: who is going to teach Johnny to program?  The math teacher that learned to program on an Apple IIe and is still learning on the job?  The business teacher who has taken a class on Office and is therefore certified by the State to teach programming?  Perhaps it would be useful to change the discussion to how do we make it worthwhile to State University Education departments to incorporate a CS Ed degree.  A high school needs qualified programming teachers if they are going to offer a curriculum in programming or CS.  Johnny will never learn to program if the school does not offer the class because qualified teachers cannot be found because there are no teacher education programs available.  Knowing how to program does not in any way, shape or form imply that someone knows how to teach programming.  Theoretically more and better teacher prep will lead to more and better course offerings which would lead to more and better opportunities for Johnny to learn programming.  (Flint’s Theorem of Improving Education for Kids.)

Comments are closed.

Skip to main content