How Silicon Valley Pushed Coding Into American Classrooms
theodp writes: Noting that Apple CEO Tim Cook's advice for President Trump at last week's White House gathering of the Tech Titans was that "coding should be a requirement in every public school," the New York Times examines How Silicon Valley Pushed Coding Into American Classrooms (Warning: source may be paywalled). "The Apple chief's education mandate was just the latest tech company push for coding courses in schools," writes Natasha Singer. "But even without Mr. Trump's support, Silicon Valley is already advancing that agenda -- thanks largely to the marketing prowess of Code.org, an industry-backed nonprofit group." Singer continues: "In a few short years, Code.org has raised more than $60 million from Microsoft, Facebook, Google and Salesforce, along with individual tech executives and foundations. It has helped to persuade two dozen states to change their education policies and laws, Mr. Hadi Partovi, co-founder of Code.org, said, while creating free introductory coding lessons, called Hour of Code, which more than 100 million students worldwide have tried. Along the way, Code.org has emerged as a new prototype for Silicon Valley education reform: a social-media-savvy entity that pushes for education policy changes, develops curriculums, offers online coding lessons and trains teachers -- touching nearly every facet of the education supply chain. The rise of Code.org coincides with a larger tech-industry push to remake American primary and secondary schools with computers and learning apps, a market estimated to reach $21 billion by 2020." Singer also mentions Apple's work to spread computer science in schools. The company launched a free app last year called Swift Playgrounds to teach basic coding in Swift, as well as a yearlong curriculum for high schools and community colleges to teach app design in Swift.
I teach IT/Computing to 4-11-year-olds and code.org is a fantastic, free and invaluable resource. The activities I use (Course 1-3) build up familiarity with block-based coding, which can lead into Scratch for the old children and into secondary/high school. The kids really enjoy the activities and the activities have a nice steady learning curve so 90% of the time they can get on without me having to stop the whole class to explain something. So everyone learns at their own pace and the brighter ones can get further in and really be challenged without having to be held up to wait for others to catch up. Since it is so visual, it even caters to the poor readers and poor English language skills and gives them a rare lesson where they're on a par with the others.
Everything I've used so far has been free which is also a boon when my IT budget is basically zero thanks to cuts in school budget. Any time you see 'education' attached to software you usually have to pay through the nose for something that is buggy, teaching outdated skills or technology, and that invariably runs only on XP and has a critical install disc that someone has lost.
For the age range I'm looking at, it's teaching the right kind of problem solving skills that can be picked up when they move onto Python or whatever textual language their secondary school decides to use.
So despite whatever misgivings you have about the motives of Silicon Valley in providing this resource, it's hard to argue that as an educational resource it is anything less than excellent.
I remember in middle school Spanish was a requirement to graduate and go to high school. Yet most people that took that class left without knowing anything they didn't already know. And also most of the Latin American kids failed the class. Even when they could have full conversations in Spanish or a dialect of. But us fair skinned people could barely say "hi my name is Apple"
If you've had a successful career in CS, then chances are you're probably decent at math and it's possible you just had bad teachers. But if you pay attention to what you do and how much of it is manipulating numbers, and realize that math is the study of manipulating numbers, then you start to realize how important math is to your every day life.
Yes, it's true that very rarely do I ever have to pull out calc (it does happen, but not frequently) to do my job, but algebra is used daily and trig comes up probably monthly. And you may not think "x/2 = 5, solve for x" doesn't really count as math, but I've tutored introduction to algebra to people in their 20s and 30s, and for the life of them, they couldn't understand it.
Many areas of CS require very little math. You need math for 3D graphics, and physical process simulation, but
many, many people work in business process programming, embedded device programming, etc. that require very little.
Many programmers spend their entire career without using calculus, trig, or linear algebra even a single time.
I have heard that "you need advanced math to understand big-O", but that is nonsense. Big-O requires addition, multiplication, exponentiation, and logarithms. Kids learn all of those by 5th grade.
There was a time decades ago where quality actually meant something time be damned.
No there wasn't. There is zero evidence that code quality was better decades ago.
My reference to quality was about the overall product, not the code building it. And yes my "time be damned" was a bit hyperbolic, but it was much more true than it is now.
I've watched it change through my 20 years. Used to plans and release cycles were long enough that if a major architecture change was needed, you could work it into the schedule. It also gave time to put actual thought and planning into how the new features would interact together. It certainly wasn't a a nirvana of perfect code or products, but it had some significant advantages over what we have today.
Now we push this asinine "Agile" idea where we should release changes on a near constant basis (or at least that's what management believes it is about). The promise is that we can quickly change directions or even throw it all away and start over. The reality, however, is that poorly thought out (due to being in a rush to "market") architectural decisions made in the beginning to support the original idea turn into a nightmare a year down the road when you are continuing to tack on the new ideas that were never considered. Not to mention that all along to that point the "we really need to fix/change this" stuff that makes up Tech Debt gets ignored and left out. Finally somewhere between 1 and 2 years you get to the point where every new feature just becomes a hack and the whole system needs to be scrapped and rewritten, but as that can't be done in a couple of sprints it just keeps getting kicked down the road.
I'm sure there are the exceptions out there that don't work that way, but that's the reality for the vast majority of companies that have made it passed the startup phase of life.
It used to be that code could be written and then you'd get a call 5-10 years later and your response is "holy shit! That process is still running??" because it just did it's job quietly and accurately. I think my personal record was 11 years for some PL/1 code on Stratus.
Today that doesn't happen very often. It's true that part of that comes down to complexity and dependencies, but the key part is the lack of foresight in designs and requirements these days. I often get chided by my managers about over engineering, but when it gets to Prod my stuff just works with minimal support. They like that part.