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"
Do not fear.
Programming is still a skill set that requires the fitting mindset. You have to want to program to do it right. And nobody has any use for people doing it wrong. Not today, and even less so in the future when "it compiles, ship is" is no longer going to cut it due to competition.
How many people learn stuff today in school that they will never ever use again? I, for example, had to learn French and business administration. Never used either in a professional setting because neither is anything that interests me. I had to learn it because it was part of the curriculum and all it really did for me was to take away valuable time I could have used to learn something I actually need.
What will forcing pupils to learn "coding" really mean to the professional programming world? Nothing. Nothing at all. Those that are interested in it will learn it. They would have learned it anyway. Those that are not will not. They will somehow squeeze by, just like i did in French and BA, with rote learning, memorizing patterns, learning to the test, cribbing from those that do understand that shit and if everything fails cheating. They will eventually get a "passing" grade and immediately forget everything they learned about it, and with a hint of (bad) luck loathe it enough that you couldn't pay them to ever touch anything resembling coding again.
Why does everyone think that forcing kids to learn something means anything? Think back to your school days. There certainly were some subjects you had exactly zero interest in. Well? What did forcing you to learn that shit accomplish? Do you remember anything, and if, enough to actually go into a profession that requires you to know anything about it?
We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
Equality != equal numbers.
I am absolutely with you if you want to give everyone, independent of their race, gender, upbringing, social situation, financial situation or any other inequality you could find, literally EVERYONE the same chance to learn a subject. I want everyone to have absolute equal chance to learn, to study, to master a field and to apply for a job. And I want to see people who reject students or applicants based on race, gender... ANY kind of reason. EXCEPT professional qualification.
But, and this is the caveat here, at the same time I do now want to see anyone being accepted based on race, gender... or any kind of reason EXCEPT professional qualification! I want a person that wishes to work with or for me to be the best person for this job. As far as I am concerned this can be a green-yellow fifth-gender (turned eigth-gender) polka dotted alien from planet Zrbit. I care for the qualification of an applicant. Not his/her/their/insertpronounhere race, gender, upbringing, selfidentification or whatever else is a way to pigeon-hole people today.
TL;DR variant: Equal opportunity for everyone - yes. Quotas - no.
We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
Cobol is a great programming language if you prefer writing sermons instead of code.
We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
Yeah, yer right, learning in school is just for getting precisely the right things you'll need for your eventual job. How closed minded can you possibly be? First, you won't just have one job, you'll have several...if you are lucky. Being so single dimensional mean that when your chosen career path finds it way into the sewer, you'll be following it there.
I started out wanting to an electrical engineer because it sounded good. That lasted a year and a half and found myself in business because it seemed like I could not fail at that. I then found computer science, graduated, and went to work at a controls company in the machine tool industry doing flying cutoffs, feed-to-stops, even did a toilet paper winder, that was weird. Machine controls are mostly engineering, very little computer science in there, and I loved it...until I got bored and went back to school for an MS in CS. Got that but then saw they had these PhDs, so I decided I wanted that. In the meantime, I parlayed by engineering and CS into being self-employed which was convenient because then my CS dept. couldn't threaten me with loss of financial aid. Eventually, I found my way to a philosophy dept. and became a logician with a strong math background. Now I use logic, math, CS, and engineering for research in high assurance FPGAs.
The funny part is, I never felt like I chose anything. Every move was because I was thrown into the deep end and had to learn in order to kick the can down the road. And I could do it because I had a solid educational foundation that taught me how to think for myself in a new area. You, on the other hand, will fall flat on your face with your attitude.
Think back to your school days. There certainly were some subjects you had exactly zero interest in. Well? What did forcing you to learn that shit accomplish?
In fact, there are many many things in school that kids don't want to learn but are nevertheless valuable for them to have learned.
Do you remember anything, and if, enough to actually go into a profession that requires you to know anything about it?
That's your flaw right there. Coding is a knowledge set that has some value to know even if you don't go into a profession that requires coding. It teaches a way of logically understanding how a problem is broken down into a process, and how processes run. (And it also gives students some familiarity with what's inside the stuff that they will interact with every day of their lives, so that they understand it's code, it's not some sort of magic.)
Education is not simply job training.
http://www.geoffreylandis.com
Ok. Different angle. Think of a subject at school that you had no interest in. Now imagine you could only land a job where this subject exactly is what you need. Do you think you could pull it off with what you "learned" at school?
Well every one likes to tell me how math is absolutely critical to being a programmer and you can't survive in the field without it. Yet I dropped out of high school primarily because I suck at math and I've now been a programmer for 20 years. I'm a programmer that can choose my jobs too.
Hell, I even spent 5 years building a metrics system that ended up being the catalyst for turning that company around (they accepted all the absurd excuses from the developers/admins until we were able to present them with actual facts that showed the product was a POS).
The key isn't to know it all (which is what I hated about school as it was all memory based), it's to know where to find what you need when you need it.
In 20 years I've barely needed to know more than basic math and in the rare cases that I did, the equations were given as part of the requirements. I'll never create the next great algorithm, but so what? I couldn't care less about big O and the like as it is irrelevant to the type of work that I do and the work I do is what I enjoy and make a damn good living doing.
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.