The tech industry push to get coding into American classrooms
nytimes.com
nytimes.com
I understand that there are a lot of online tools that make learning/teaching coding easier but I do believe the person teaching it still needs to have a decent understanding. Kids ask tons of questions on how to accomplish certain things and if the teacher doesn't really know how to code, they won't be able to help those students who will then lose interest.
I was taught how to code from early on (6th grade), and most of my learning of programming (which I would distinguish from computer science) happened as we worked on projects/built things.
I can't tell you how many times I saw other students get stuck on bugs along the way during development and get really frustrated with programming (I saw this when I was a student, and later when I taught others how to code).
What always helped was having teachers/instructors who could easily help students work through those roadblocks so they didn't get stuck and holed up on one thing. Not really the traditional teacher that just stays up and lectures at students but rather one that also spends time getting in there and working alongside them to some extent.
Traditional classrooms/lectures are structured from the ancient days where students went to listen to a professor speak and jot down whatever the lecturer orated. But now, especially with programming, the emphasis is more on building, and so that changes what the instructor really does in the classroom (just "lecturing" vs "facilitating" and "supporting").
Probably a long-winded way of the same point you just made, but I just thought I'd elaborate since it's interesting to me. Some of my friends say that these online courses are 100% independently viable but I am not convinced that they are a suitable replacement for teachers (though I recognize it really depends on the students and how independently motivated or how prone to getting burned out they are...).
Just my 2cents...
I was also pleasantly surprised how often kids asked "how can I make it do this" which was something outside of what the online tutorial taught. The tutorials were great at sparking their interest but can't really accommodate all of the edge cases especially for those more creative thinkers. I also learned that most of the kids got bored fairly quickly following step-by-step tutorials. They wanted to hack and play around with what they were learning. So I changed the tutorials to be much smaller with very small steps and at the end of each mini tutorial, I encouraged them to hack and try different things based on what they learned.
Maybe with a live online teacher available this would be less of an issue but even with that you lose the personal interaction the kids have with each other and the teacher. Things like showing each other what they created and working directly with the teacher/other kids to expand on that. I think a lot of younger kids really do need that interaction and in-person feedback and I am not sure how that can be re-created online.
To your broader point though, I think that resources like StackOverflow, and even some smaller communities (e.g. subreddits) are a great way to supplement online courses (by getting questions answered/dealing with roadblocks). The only issue is response time (a dedicated instructor who was with you in person could ideally resolve it quickly whereas some SO answers can take days, weeks, or even longer, depending on how obscure/unclear it is).
I agree though - programming after all is like playing with infinitely many legos; it can be overwhelming but ultimately you need to just get your hands dirty and fiddle... otherwise you won't learn correctly...
The most likely people to go teach how to code are:
1) People who are only academic and don't have any desire to join the private sector (unlikely to be the best teachers)
2) People who've joined the private sector and have their retirement already done (unlikely to put up with administration)
3) People who code as a hobby, have a spouse or other financial support (hard to find at all)
I think I fall mostly into your #2. I have been self employed for 15 years and for the past year have been volunteering at my sons middle school 1 hour per week. I am not retired but have financial stability from my own business.
Your points about dealing with the administration are so true. It is beyond frustrating. I understand their hands are tied on certain things because they have guidelines, etc. to follow but it really has made me realize I would never consider teaching for a living in the current education system. Not only because the pay is low but because of all of the political crap you have to deal with. I have been approaching it as don't ask first and do things the way I want until they tell me no. It has caused friction with the administration but I don't really care because the kids are getting so much from it and the classes always book up super fast with a waiting list. I am doing this for free so what is the worst they can do? Cut me off? That would a disservice to the kids not to me.
Your #1 point is what I see the most and some of what is being taught or lack there of is mind blowing.
I did have three years of computer science in a German A-levels program, by choice, roughly equal to the topics of a first bachelors semester (at best) - remember, the first semester in uni will not include much coding at all, compared to theory. The theory was applied in haskell, prolog, sql and mainly ruby. Anyway, I had coded in basic already before I went there.
My teachers were engaging in the FSF Europe to get FOSS into schools, maintained the school network and were passionate and old school. It was the only school in the district to offer this class.
Nowadays the modern conception of "computer" is more akin to "consumer appliance," a more interactive television experience. For the majority of people learning to program a computer makes no more sense to them than learning how to make television shows... and the very same tech companies that drove the industry into the consumer appliance category now bemoans the fact that everyone appears to be consumers rather than producers.
Why doesn't it make sense for everyone to learn how to make television shows? The three basic areas of active literacy in modern society are writing, coding, and video production. It seems like knowing all three should be a basic requirement for graduating high school.
Uhm... source? Why writing, coding, and video production and not writing, coding, and photography? Or podcasting? It's unclear whether you randomly made this up on the spot, or if you're actually quoting academic taxonomies.
FWIW, Wikipedia says:
"Literacy is traditionally understood as the ability to read, write, and use arithmetic. The modern term's meaning has been expanded to include the ability to use language, numbers, images, computers, and other basic means to understand, communicate, gain useful knowledge and use the dominant symbol systems of a culture. The concept of literacy is expanding in OECD countries to include skills to access knowledge through technology and ability to assess complex contexts."
Video production does not seem to have a prominent position, and while computers/technology are brought up, coding is not.
Again, according to whom? Is this some generalization you're making up on the spot, or a statement that is quantifiably provable? It's really not clear to me that video production is used to sell ideas significantly more than radio, or highway billboards, or public speaking.
Go compare the traffic numbers on YouTube with, say, Gimlet Media, Earwolf, or any of the other top podcasting networks.
1) record everything you do all the time
2) edit and make appealing
3) broadcast yourself(tm)
4) profitAs a side note, recently I've been having more and more unexpected but amusing conversations with my non-programmer friends about things like 'APIs and SDKs'. The business worker has taken over the technical vernacular, and it's leading to some strange contortions of reality.
Ha, good one - at least the book title. (The full title is: The Inmates Are Running the Asylum: Why High-Tech Products Drive Us Crazy and How to Restore the Sanity.) I'd read about that book by him (Alan Cooper [1]), but haven't read it yet. But I did buy and read another of his books, About Face: The Essentials of Interaction Design, some years ago. I thought it was good. It's about user interface design that makes sense for humans. I still remember one point where he said that in a scrollbar, having both the arrows at one end, instead of at opposite ends, makes it more easy to use. IIRC, I mentioned this on HN a while ago in some context, and someone replied that such a scrollbar exists in some GUI toolkit or OS.
[1] https://en.wikipedia.org/wiki/Alan_Cooper
https://www.cooper.com/people/alan_cooper
The story of how he created Visual Basic and then how Microsoft bought it from him, is also interesting.
A few excerpts from the Wikipedia article about him (linked above):
[After he left college, he founded one of the first microcomputer software companies.]
[In 1975, as the first microcomputers became available, Alan Cooper founded his first company, Structured Systems Group (SSG), in Oakland, California. SSG’s software accounting product, General Ledger, was sold through ads in popular magazines such as Byte and Interface Age. This software was, according to the historical account in Fire in the Valley (by Paul Freiberger and Michael Swaine), “probably the first serious business software for microcomputers.]
[During the 1980s, Alan Cooper authored several business applications including Microphone II for Windows and an early, critical-path project management program called SuperProject. Cooper sold SuperProject to Computer Associates in 1984, where it achieved success in the business-to-business marketplace.]
[In 1988, Alan Cooper created a visual programming language (code-named “Ruby”) that allowed Windows users to build “Finder”-like shells. He called it “a shell construction set." After he demonstrated Ruby to Bill Gates, Microsoft purchased it. At the time, Gates commented that the innovation would have a “profound effect” on their entire product line. Microsoft decided not to release the product as a shell for users, but rather to transform it into a professional development tool from their QuickBASIC programming language called Visual Basic, which was widely used for business application development for Windows computers.]
[Cooper’s dynamically installable control facility, which became famous as the “VBX” interface, was a well-known component of "Ruby". This innovation allowed any 3rd party developer to write a widget (control) as a DLL, put it in the Visual Basic directory, and Visual Basic would find it, communicate with it, and present it to the user as a seamless part of the program. The widget would appear in the tool palette and appropriate menus, and users could incorporate it into their Visual Basic applications. The invention of the “VBX” interface created an entire new marketplace for vendors of these “dynamically installable controls.” As a result of Cooper’s work, many new software companies were able to deliver Windows software to market in the 1990s.]
I'd worked on a few commercial VB projects earlier, and had read about how the VBX innovation (mentioned above) spawned a whole new industry of companies creating third-party controls/widgets. Delphi was probably also made possible because of VB (though there was a chance it could have been invented even if VB had not).
But teaching kids java and databases is probably not the right approach, and is definitely only happening because Oracle wants to stay relevant.
I had given my niece this board game robot turtles that was post on here several years back. Its a great game, but it really requires a parent to get involved.
I remember I got started back in the mid 80s with writing maze games in BASIC. When I was a little older, I bought all those little electronics books printed on graph paper that they sold at Radio Shack. Then I would make simple circuits and learn to solder.
Soon we will consider any programming just as arcane as machine code is today.
I think future developers will be focused on UI design and algorithms, and not have to worry too much about passing around data etc. Most of this doesn't even require AI, just like automatic reference counting doesn't.
My point is that programming is moving to higher levels all the time, most developers don't have to worry about pointers anymore for example.
The change does proceed very slowly though, compared to the consumer side. I guess developers are very conservative and programming as a whole advances 'one funeral at a time'.
"'Everyone should learn to code' is the new way of saying we need to create compliant factory workers and that the real purpose of school is to make sure that we are training people for the 'factory jobs' of the future."...
"I was amused when President Obama said that everyone should learn to code, since while I am guessing that Cook can code, I am pretty sure Obama cannot, so why does he care? And, what does he actually know about coding?"
from https://www.linkedin.com/pulse/learning-code-new-way-create-...
It's a short but interesting article about the evolution of Schank's thoughts about teaching programming.
Otheriwise, coding becomes like all those other courses that the student took but never used. The basics will always be useful.
And so they did for like 10 to 20 years. Maybe they need to change the strategy?
H1B labor + "everyone can code" = WIN!
No H1B labor + "everyone can code" = WIN!
I can't see why wouldn't high-schools have at least intro to Python or something similar as a requirement, with having more advanced classes as optional.
Yeah, it wasn't optimal, but we managed to learn to program and several of us went on to be professional programmers. More than one did so right out of high school.
Does anyone else worry about that?
1) There is enough subject matter expertise in the infrastructure/devops sub-field that being able to synthesize approaches out of all of it is really, really hard and is in many ways gated on experience. Understanding all of the products AWS throws at you and when to apply them versus using vendor-independent solutions versus using a different cloud provider entirely is a problem that high school and YouTube won't really prepare you for.
2) Being able to cohesively apply that subject matter expertise requires a framework that takes a lot of theoretical knowledge that takes a while to both learn and to understand the importance of. People shit on college all the time but I would be significantly worse at my job if not for the rigorous algorithmic courses forced upon me at college (it's one of those "do you know what you don't know?" things).
3) The baseline computer science background, programming chops, and breadth of experience that make me good at applying code to #1 and #2 means I have other options if I want to get out of infrastructure work. That's how I ended up here--I went from college to doing bog-standard Java work at TripAdvisor to leading a mobile team two years later because "you're smart, you'll figure out what you don't know" to devops/infrastructure work, where I'd never touched AWS or Ruby and yet picked both up on the fly. A few years later, I consult to pay the bills and work on other stuff that I find fun.
4) The demand of the industry is not going away any time soon; there will be a need for seniors to guide and manage even that theoretical legion of juniors. I'm much more worried about those juniors than I am today's juniors or seniors.
The primary culprit is a lack of education (formal or mentor-ship) on how web technologies work and I have almost never encountered somebody who did well with these technologies due simply to their university education. If you are hoping your mastery of Java or C# is good enough to quickly jump into JavaScript or some other web technology will be sorely disappointed.
The amount of implicitly-carried junk we all know about to be good at our jobs instead of just tolerable is pretty amazing.
You can practice this directly in your web browser (developer tool's console) without any additional code editor. I am teaching my wife this now. If you can master that one skill and slowly build up some JavaScript confidence you can always find a job... so long as web browsers are a thing.
I pretty much do the same job that I did in 1994. Only then, I made 1/5th as much and had 5-times as many people on my team. But, back then, few people wanted to do this type of work.
When software engineering salaries go back to normal (i.e. when they don't encroach on the 'leadership class'), it will be fine. Probably more fun, too (for people like me at least).
Imagine some big tech companies go down from some fundamental shift - suddenly there are floods of coders on the market. Its the most common job in many states, and growing. The housing market can crash - the tech sector (as we know it) can crash.
Competing with the next generation of students is worrisome because I know some companies are hesitant to outsource due to the overheard of timezones, language, etc. But they'd love to pay their developers less. Nothing drives down salary like an employer's market.
Yes, kids these days are good at installing apps onto their phones. Until they learn how to figure out how to change their wifi ssid and password without a manual (then move onto programming) there is never going to be an explosion in the number of qualified software engineers. Unless "coding" really means "shitting out cookiecutter webapps."
Maybe a better approach is to have it as a required elective offering, and let interested students find it if they want to?
One of the purposes, it seems, of primary education, is to impart a kind of basic literacy of the world. Software is in everything, ergo.
It would be nice if everyone graduating high school understood the law of supply and demand, or wrote some loops.