A shortage of teachers for computer science classes in California
calmatters.org
calmatters.org
I ended up focusing more and more of my time on programming. I eventually left the classroom because I couldn't keep teaching full time and doing the programming work on the side. One of the clear problems with CS education is that if you understand the field well enough to teach it, you can almost certainly find a more appealing employment situation somewhere else.
I studied English, and all my brilliant classmates never wanted to teach. They all went on to other things: law school, marketing, publishing etc.
It would literally be a 80% paycut. I can’t even begin to justify it.
Unfortunately we're stuck in the 19th century mentality that the best workers are only worth a few times as much as the worst when today there are people worth hundreds of times more than the average.
I made the transition because I was ready for semi-retirement and got a house at a good time some years back so my mortgage is only $1200.
My wife is a teacher, they’re dealing with a parent who has decided to accuse other teachers of sexually abusing their children. The administration is afraid to do anything.
(From the article)
> online courses for teachers who want to gain the extra 20 units in computer science
My mom's a teacher, and those 20 extra units are a de facto requirement in CA to get to the pay grade above Bachelors alone.
In CA, there is a differing payscale for teachers w/ a Bachelors degree, a Masters degree/20 post bachelor units, and a PhD.
It's this way in other states as well. I briefly looked into teaching and the pay range was $30-45k because I only had a bachelors. My 10+ years of experience meant nothing. If someone was teaching any other subject fresh from college with a PhD it'd be closer to 60k-70k.
Years of teaching didn't mean much either. It was basically cost of living pay raises unless I went back to school and got a masters/phd.
And at my high school there was extreme variance in everyone's programming ability, which led to very little lecture time and mostly self-guided study.
Given that, there's probably some YouTube series with exercises that are more informative and enjoyable than most CS high school educators. Add in GPT-4 to answer the questions and let kids collaborate and you'd be set.
I wonder if large companies (looking at you FAANG) would be down to put their money where their mouth is and start a part-time teaching program for senior engineers who are near burn out.
Keep the engineers at their salary-level, the education boards can subsidize and perhaps the kids can gain a well-connected mentor for life.
"Technology Education and Learning Support (TEALS) is a Microsoft Philanthropies program that builds sustainable computer science (CS) programs in high schools. We focus on serving students excluded from learning CS because of race, gender, or geography. TEALS helps teachers learn to teach CS by pairing them with industry volunteers and proven curricula."
Do you know this from experience or are you just guessing?
In practice, most school teachers I know are themselves perpetually on the verge of burning out from having to handle dozens of children who don't want to be there and constant complaints from their helicopter parents.
I want to want to teach, but I can't imagine transitioning from burnt-out in tech to teaching in a public school. I'm far more interested in looking into mentoring and after-school programs with voluntary participation.
My wife moved from teaching (~12 years, IIRC) to content production in a tech startup. She doesn't write code, but she's definitely getting the full working-at-a-tech-startup experience otherwise (though, not one of the really awful ones).
A day rarely goes by that she doesn't mention how much less-stressful this is than teaching was.
[EDIT] If you ask her if teaching is good, she'll tell you that yes, teaching kids is good, but being a teacher is only barely about that, and is less so every year, and all the other parts are shitty at best and deliberately abusive at worst. Plus the pay's terrible, to add insult to injury.
The other thing is that your attitude and satisfaction can be very different if you are “just visiting” from a relatively lucrative career vs imprisoned in that environment.
Under-resourced underpaid School teachers burning out and senior programmers mentoring students to stop burning out are sorta tangential issues.
I’m not advocating putting senior programmers into full time teacher positions with all its scarcity. I specifically said they should be left on their FAANG salaries.
The issue is obvious. Pay.
Not many people who major in CS are going to take the massive hit to salary to become a teacher instead.
Use technology to alleviate the boring parts of teaching (which also happen to be parts technology is good at) while leaving the fun parts (which also happen to be the parts technology can't replace) to the teachers themselves.
By "boring parts" I mean:
- Logistics: managing large class sizes, handling routine student emails ("when's the assignment due? Why did I lose points?"), handling things like students adding and dropping, scheduling
- Routine grading: full auto-grade subjects which can be checked by a computer like math and chemistry problems and multiple-choice/short-answer, partially auto-grade and streamline (e.g. grammar checking, ML analysis) subjects which require quality like essays and presentations
- Teaching students basic concepts who don't have issues with said concepts, with tools like Khan Academy
By "fun parts" I mean:
- Teaching students who need extra help, which online tools like Khan Academy can't provide
- Teaching students who have extra questions and are genuinely interested
- Doing fun things like in-class experiments (chemistry), demonstrating math problems
- Assigning and grading fun projects like student experiments and creative things
- Handling emotional students (while ensuring the teacher's safety). This isn't really a "fun part" more in that it's something technology can't do
Most of all, teachers should be able to focus on teaching more specialized seminars and electives for smaller, more interested students. The big general classes (e.g. Algebra, English, Spanish) can be managed 95% by existing technology, where students are in large lecture halls or online (at home and/or in monitored classrooms) and use software like Khan Academy and Canvas. I doubt this is any worse than the current system, especially considering the state of public school today, because I'm sure this online software can teach much better than a bored-out-of-their-mind average teacher. Except in the 5% of cases where it can't, hence the wall of text I posted above.
There are several classes offered at different levels. AP CS in java being the hardest.
Learn how to push a button A on a machine to start it, how to push button B to stop it. This can be learnt (and tested) perfectly. It is the ultimate in skills-based education.
Along the way, having worked on a few machines, a worker may piece together some information about 'starting' and 'stopping'. However, this is beyond what's needed.
Should schools be about skill based education? Or about that beyond what's needed? Beyond what's needed won't get the employer a greater short term fungible labour marginal return, why pay for it? Shareholder value!
Does it matter that no one learns Flutter? Teaching Turing [1] may be a step too far in taking programming away from real life. So it's a balance. But so so much more goes into learning computer science than programming language of the day that can be learned from Udemy. From O(n log n) to O(n), how a computer works under the bonnet, what a LLM is, to legal aspects, there's a lot more to computer science as a skill. The challenge of the education system is balancing sketchy employers and pitch-fork public, and the influence they have, that want a cheap quick fix vs actually empowering and inspiring high schoolers' futures.
[1] https://en.wikipedia.org/wiki/Turing_(programming_language)
You are correct that the information velocity is too low. I think that's fine for thr kind of dabbling you mostly do in grade school though
Actually doing the thing is important and given you can do that with Computer Science in schools discarding it because "you learn faster on your own" feels suboptimal.
Also while Internet access at home seems ubiquitous we don't have full coverage of high speed internet nationally so for some students being able to take a course could make all the difference.
On one hand, a lot of what I learned there was self-guided. On the other hand, the core concepts of programming, as it's practiced by the folks I know (mostly procedural, object, and functional concepts and knowing how to CRUD data) haven't changed that much even in the 40 years since I first wrote "Hello World" on a commodore 64. The tools have certainly changed, but the music is the same.
But then, maybe that isn't "the traditional classroom model" (though I think it probably could be) and additionally I may not be a "good" developer. :D
Computers weren't secret then.
The fact that California only offers CS in 40% of it's high schools vs. 53% nationwide is not the metric I would care about. Quality is vastly more important in my experience. I suspect that clubs and extracurricular CS programs would have more value. People progress at vastly different paces when learning coding, and the people most likely to enjoy developing software later in life are likely bored out of their minds in the typical high school CS class.
The problem, of course, is that the very affordance in a language like Alice that makes it approachable for novices are exactly the same constraints and limitations that drive experts insane.
The following is worth noting from the Wikipedia link you included:
"Alice is designed to appeal to specific subpopulations not normally exposed to computer programming, such as students of middle school age, by encouraging storytelling. Alice is also used at many colleges and universities in Introduction to Programming courses."
My point is simply that Alice seems like the wrong tool for the wrong age group as described by your experience but it's definitely not the right approach for someone who will major in computer science later.
The issue with Alice is that graphical, block based coding is not at all an ergonomic way to code. It drives experts and novices both insane. Sure, C++ probably isn't the best for an intro CS courses, either, but Python with some wrappers over SDL to draw sprites is not only a better teaching tool it also forms a more useful springboard to build other projects later. The only good thing Alice does is reduce the scope of things you need to know in order to achieve tangible, compelling results. But that can be done without a block based editor.
Graphical, block based coding seems to be a common attempt to make coding more approachable [2] but I don't really see any convincing arguments as to why. My take is that it a mix of 1) assumption that that students are intimidated by text, and 2) aesthetic appeal from people who don't actually have to use these tools. Yes, it's impressive to see a skater spin around in 3d with just a few blocks of code in a lecture, but it's another thing to actually use it.
I wouldn’t do it for the amount that they’re paying now though.
I have volunteered with them for ten years now. I teach in the mornings with minimal interference with my job.
I can't imagine any students walking away from such a class retaining anything about any one of those subjects after the final exam.