It is possible that software is the future of US K-12 education. I could see huge success for a piece of software inspired by DuoLingo's gamification and Khan Academy's bite-sized quick-"I get it"-gratification content design.
But if you understand the institution of US K-12 schooling -- test scores, funding formulas, etc. -- you quickly realize that this is a quite dystopic future. We will raise an entire generation whose only skill is consuming software that relentlessly optimizes for their test performance. Whole hoards of students who can ace a very particular test on Algebra but never really understand deductive reasoning or the concept of a variable/function. As bad as US schooling is today, and as mediocre as the teaching profession in the US might be, humans-teaching-humans at least provides some check on the system and enables real learning.
So, stepping back, the tech elite's attitude toward US education scares me. It's going to do to our schools what that particular set of neo-liberal MBA programs did to so many iconic American businesses.
Conflating education and the US K-12 schooling institution causes many smart and driven people to:
1. under-estimate the effectiveness of good teaching, and
2. fantastically over-estimate the role of self-directed learning in their own lives[^a].
These two errors result in critics of US education over-estimating the effectiveness of (and under-estimating the dystopian potential of) depersonalized/scalable solutions to education.
--
[^a]: I want to say a bit more about #2. My opinion on this topic changed when I read through a bunch of my old code from middle/high school. I noticed that my programming ability took three significant step-changes during that time. The first happened during the time when I was taking Algebra 1 in 8th grade, when I went from mostly simple CRUD programs to really understanding how dynamic programming worked. I went from building PHP/SQL websites to being able to use data structures other than lists/hash tables and design algorithms for things other than CRUD operations. The second happened during the time I was taking Geometry; that's when I started really understanding how to decompose problems and compose solutions. The final step-change happened during my first programming internship during Junior year. So, I was entirely "self-taught", but clearly something in my formal education was driving my programming ability in ways I didn't realize without explicit and rather time-consuming reflection. And that final step-change was basically intense 1:1 tutoring from a mentor.