The following was syndicated from Quora for The Fatherly Forum, a community of parents and influencers with insights about work, family, and life. If you’d like to join the Forum, drop us a line at [email protected].
What are some unique insights about how kids learn to code, and how can those insights help with teaching?
In order to answer this question I think it’s important to first consider this: why is it important for kids to learn to code in the first place? Adding an entirely new topic to the core curriculum is a massive undertaking and will require a tremendous level of investment- we have no real infrastructure for teacher training, curriculum, testing, etc… Why has this so important that cities are starting to mandate it (like New York and Chicago), and why has President Obama devoted $4 Billion to expanding access to Computer Science across the nation? Surely we don’t need an entire nation of software engineers.
There are 2 primary reasons I can think of that, when considered, should dictate how we approach teaching students.
The benefits of education range from social to cultural, etc … But as far as the education itself goes, the single most important thing we need to be teaching is critical thinking. And most of what we do drives towards that in different ways from writing to math. But coding gives us the opportunity to impart critical thinking skills while engaging students in entirely new and compelling ways. Kids are naturally engaged by technology (read: they love the internet). Our best hope for education is to connect lessons to students’ own passions. Coding opens that door if for no other reason than that they’re drawn to technology.
While we don’t need a nation of software engineers, we are entering a world in which every job is becoming technical in nature. Journalists are at a tremendous advantage if they can visualize data on the web. Accountants and finance professionals that can build their own macros are significantly more productive than others. It’s hard to imagine there will be many marketers who can’t launch a simple web-page, customize and email template, or query a sql database. Exposure to coding is not necessarily just about a future in software engineering — it’s about a future in anything.
Given these primary goals, or benefits of coding education at a young age, the way in which we should approach teaching becomes clear.
We should be focusing on teaching students how to think like programmers, rather than have them worry about spaces and brackets.
First, we need to change the curriculum. The most widely accepted curriculum for teaching coding in K-12 is AP Computer Science. The AP covers concepts that are critical to a career in software engineering. It’s essentially the first 5 percent of a computer science degree. But our goal should not be to create 5 percent of a computer science major in high school. Our goal should be to inspire students to fall in love with this craft. Unfortunately, the AP fails miserably in that respect. Do a quick google image search for “AP Computer Science cheat sheet” and you’ll find summaries of a curriculum that likely scares more students away from computer science than it attracts.
If we’re looking to inspire students while focusing on critical thinking and giving them a foundation for future careers, what we should be teaching is clear — the web. Modern programming languages like python and ruby allow us to teach key concepts like looping and data structures but carry with them some distinct advantages.
Logic Over Syntax
Learning to code is hard. For what we hope to accomplish, we should be focusing on teaching students how to think like programmers, rather than have them worry about spaces and brackets. This is how one would write a simple “Hello World” program in Java:
This is “Hello World” in Ruby:
If we want students to gain critical thinking skills, we need to let them focus on thinking, not on syntax.
A fairly common question from students in any classroom on almost any subject is “why do I have to learn this — I’m never going to use it.” It’s one that teachers have to work hard to overcome with the use of metaphors, analogies, stories. By leveraging the web we can create an immediate feedback loop wherein students can see the outcome of their work, and how it translates into relevant skills.
Second, we need to train teachers to teach code. At Flatiron School we’ve long had a mantra that it’s easier to teach a teacher how to code, than it is to teach a coder how to teach. This shouldn’t be a big surprise — we don’t seek out mathematicians, novelists, and chemists to teach high school math, english and chemistry. Yet as it relates to coding, we default to finding engineers and trying to recruit them to either volunteer or teach full time.
We want to build a system that inspires students to learn such that they gain relevant skills and sharpen their critical thinking abilities.
This is not only likely to be ineffective (for starters compare teacher salaries to those of software engineers), the entire notion devalues the craft of teaching to the point of disrespect. Expecting a software engineer to be able to receive a bit of training and fill the shoes of a professional teacher makes as much sense as having a teacher receive equivalent hours of training and volunteer as a professional software engineer. Teaching is an incredibly difficult profession that requires years of training and dedication. While we can’t expect teachers to master enough coding to begin careers as engineers, we can absolutely provide them with the technical training necessary to teach effectively in classrooms. This will require a tremendous investment not only in creating these courses but also in giving teachers the time and resources necessary to learn. But if we’re not willing to invest in teachers, we’ve lost the battle before it began.
Third, we should be optimizing for a collaborative learning experience. There are a lot of great arguments for this across many subjects, but there’s a tremendous amount of complexity inherent in changing an existing system. As it relates to coding, we are starting with a blank slate. We get to design a learning environment from the ground up. And in thinking about that experience, we should be looking more to how we teach art, and music than how we teach math and science.
If our goal is to prepare someone for a computer science major, we may be more inclined to mirror that experience. But that is not the case. We want to build a system that inspires students to learn such that they gain relevant skills and sharpen their critical thinking abilities. Both of those things are better done in teams. Approaching it as anything but a team sport would be like preparing a student to play in a symphony by having her practice the violin alone in her room.
Finally, I’d be remiss not to mention the existing challenges in attracting diverse students to the topic. There are clear and systemic issues that push students, especially girls, away from STEM fields at a young age. Those problems desperately need to be addressed (we try to do our part at Flatiron School with programs like the Kode with Karlie scholarship). But as long as we treat coding like a variant of math by focusing more on algorithms than creative problem solving, we will be infusing this new and potentially interesting topic with all of the baggage that currently drives certain populations away from STEM.
Adam Enbar is the CEO & Co-Founder of Flatiron School. Read more from Quora below: