Learning to Code
With an initiative timed with the making of New Year’s resolutions (and timed too to coincide with a narrative about a shortage of programmers), Codecademy encouraged people to make this the year they learned to program. Sign up for an email newsletter, the startup said, and it would send you one a lesson from the Codeacademy site per week for the entire year. And some 400,000 folks took them up on the offer, including New York City Mayor Michael Bloomberg.
Despite the excitement from the tech press and investors, many of my concerns about the effectiveness of Codecademy remain. (My post from its Series A round of funding last year where I detail these concerns remains the most trafficked post on Hack Education.) Has Codecademy successfully taught people to program this year? 400,000 sign-ups in January is one measurement of success, to be sure; but it doesn't seem like the most important one here (hint: it's more to do with learning outcomes come December.)
And if nothing else, traffic to the Codecademy site suggests that, like most New Year’s resolutions, some of the initial excitement about Code Year quickly died off.
The Learn-to-Code Industry
But excitement about learning to program — or at least, about learning-to-program startups — didn’t dissipate this year, and a huge industry has spawned to teach it. There are lots of companies — new and old and funded this year — that are tackling computer science and coding education (offline and online, but mostly the latter), including:
Udacity (founded 2011; raised $15+ million in 2012); Coursera (founded 2012; raised $22 million in 2012); Treehouse (founded 2010; raised $4.75 million in 2012); LearnStreet (founded 2012; raised $1 million in 2012); Starter League (formerly known as Code Academy; founded 2011; 37 Signals bought a stake in the company in 2012); Code Hero (founded 2012; raised $170,000 via Kickstarter in 2012); Programr (founded 2012); Bloc.io (founded 2012); CodeHS (founded 2012); Dev Bootcamp (founded 2012); Code Avengers (founded 2011); Code School (founded 2011); Puzzle School (founded 2011); CodeLesson (founded 2010); Stencyl (founded 2008); O’Reilly School of Technology (founded in 2007); W3Schools (founded 1999); and Lynda.com (founded 1995).
In addition, many other companies and organizations launched learn-to-code projects: Code Monster from Crunchzilla, the “Mechanical MOOC” from P2PU, and Blockly from Google for example. MIT App Inventor (formerly a Google project) had its official launch this year. Khan Academy finally unveiled its computer science curriculum. And Mozilla got into the Web literacy and Webmaking thing in a big way — with tools like Popcorn Maker, X-Ray Goggles, and Thimble.
What Should Coding Education Look Like?
Full disclosure: I conducted some research for Mozilla earlier this year about what exactly that Webmaking education should look like — and more specifically, should the organization build a tool to help people learn HTML5. I spoke with a number of teachers and technologists -- Mark Guzdial, Jon Udell, Julie Meloni, Scott Gray, and others -- about the tools and best practices in building for the Web.
As I wrote back in March,
Universally, everyone I interviewed agreed that society’s Web literacy isn’t up to snuff. There was consensus too that Mozilla was in a good position to do something about this. But what that something should be wasn’t clear.
Where do you start? With teaching the fundamentals of Web architecture? With teaching HTML and CSS? With programming? And where do you go – what are the limits to what you can do and teach in the browser?
No doubt recent events like SOPA seem to have raised the level of urgency around understanding the Web. It’s not simply a matter of not having enough software engineers or Web developers. There are much broader, deeper issues at stake when we think about building and protecting the open Web. Will people have control over their own domains, their own Web presence, their identity and their data?
So to address all of this, do you build a tool? And/or do you build a curriculum? (How) Do you build a community of learners, mentors, remixers, teachers around it?
All these (really important) questions from me aside, it was perhaps designer Bret Victor’s presentation at CUSEC (the Canadian University Software Engineering Conference) that made most folks nod and point and say “oh yes, that’s what we should build.”
But when Khan Academy built something that looked a bit like Victor’s live-coding demo — or at least a dual-pane coding interface, Victor responded with a lengthy essay — one that features my favorite ed-tech quote of the year, I should add: “For fuck’s sake, read "Mindstorms” — clarifying his thoughts on what “learnable programming” should/could look like. In a nutshell: not like Khan Academy’s CS interface or instructions. Nor like many of the projects I’ve listed above either. Victor argues that by (re)inventing the programming environment (in the service, ostensibly, of making it easier to learn to use), we’re focused on the wrong thing.
Traditional visual environments visualize the code. They visualize static structure. But that’s not what we need to understand. We need to understand what the code is doing.
Visualize data, not code. Dynamic behavior, not static structure.
Maybe we don’t need a silver bullet. We just need to take off our blindfolds to see where we’re firing.
Coding: The Skills Gap and the Opportunity Gap
Victor's right: there has been a lot of talk of learn-to-code silver-bullets this year. Much of the search for these CS fixes coincided with handwringing about perceived shortages in "skilled workers" (particularly software engineer shortages in Silicon Valley), and more broadly concern about the so-called "skills gap." That is, we simply aren’t training people with the necessary high-tech (read: programming) skills to fill job vacancies — now or in the future. Or so the story goes.
A lot of the finger-pointing here has been aimed at the education system at both the K–12 and college level. (Blaming a “broken education system” for everything — another key trend in 2012. I’ll get to the politics of that one in this series soon enough.) But true enough: many schools still do not teach computer science or programming (and while some do teach computing application usage, that’s not the same thing). Computer science is not a core subject in the curriculum and not a graduation requirement. (There was, however, a significant uptick in the number of students who took the Computer Science AP exam last year.)
While many of the statistics on the dearth of women and minorities in technology focus on degree enrollment at the university level and on the workplace, as Georgia Tech CS professor Mark Guzdial (and others) note, the problem starts much earlier than that. In a blog post (that I apologize in advance for quoting at such length) that examines the pass rates for the computer science AP exam, he highlights the gaps based on race and gender:
The gap from the blue line at top and the red line below is explained by the gender gap. In 2011, the pass rate was 63.7% overall, 57.6% for females. The even larger gap from those two lines down to the rest is the race/ethnicity gap: 31.7% for Blacks, and 37.2% for Hispanics in 2011. I didn’t expect this: Hispanic females do statistically significantly better than Black females at passing the AP CS over this time frame (t-test, one-tailed, p=.01). (I’m using “Black” because that’s the demographic category that the College Board gives us. We are collapsing “Mexican American,” “Other Hispanic,” and “Puerto Rican” into the “Hispanic” category.) There’s still a big gap between the orange Hispanic line (37.2% in 2011) and the light blue Hispanic females line (25% in 2011).
While Hispanics are doing better than Blacks on AP CS, I was still surprised at this: No Hispanic female has scored a passing grade (3, 4, or 5) on the AP CS test in Georgia, Michigan, Indiana, South Carolina, or Alabama in the last six years. Only one Hispanic female has passed in Massachusetts in the same time frame. Why these states?
…The Black pass rate is quite a bit smaller than the Hispanic, in part because the participation rate is so low. Michigan has 1.4 million Blacks (out of 9.8 million overall population, so 14% Black), but only 2 Black men have passed the AP CS in the last six years. In 2011, 389 students took the AP CS in Michigan, only 2 of whom were Black. Only one Black female has even taken the AP CS in Michigan in the last six years. (No, she didn’t get a passing grade.)
Two organizations — Black Girls Code and CodeNow — did hold successful Kickstarter campaigns this year to help “change the ratio” and give young kids of color and young girls opportunities to learn programming. And the Irish non-profit CoderDojo also ventured state-side in 2012, helping expand afterschool opportunities for kids interested in hacking. The Maker Movement (another key ed-tech trend this year) is also opening doors for folks to play and experiment with technologies.
And yet, despite all the hype and hullaballoo from online learning startups and their marketing campaigns that now “everyone can learn to code,” it's clear there are still plenty of problems with the culture and the pedagogy surrounding computer science education.
Does Everyone Really Need to Learn to Code?
And even if “everyone can learn to code,” does everyone really need to?
Should all schools teach computer science? Should all university majors be required to take programming classes? (I'm looking at you, humanities majors!)
Duke University professor Cathy Davidson argued at the beginning of 2012 hat computational thinking, if not programming specifically, is the fourth “R,” joining “reading, ‘riting, and ‘rithmetic” as the basic skills that everyone should have in the 21st century. (In her formulation, that fourth “R” actually stands for ‘rithms, as in algorithms.)
But Stack Overflow co-founder Jeff Atwood responded mid-year to Code Year with a plea instead to “Please Don’t Learn to Code.” Atwood argues that the "everyone needs to learn to code" mantra, "assumes that coding is the goal. Software developers tend to be software addicts who think their job is to write code. But it's not. Their job is to solve problems. Don't celebrate the creation of code, celebrate the creation of solutions. We have way too many coders addicted to doing just one more line of code already."
He also says that the frame and the focus on "learning to code," "puts the method before the problem. Before you go rushing out to learn to code, figure out what your problem actually is.Do you even have a problem? Can you explain it to others in a way they can understand? Have you researched the problem, and its possible solutions, deeply? Does coding solve that problem? Are you sure?"
Indeed. Coding for the sake of coding doesn't really get you much. Maybe some badges and some buzz. But if we think about the problem of tech- and Web illiteracy, we must ask if the solution to that really is "learning to code." And as Code Year draws to an end, we might want to ask too if the growing learn-to-code industry is adequately addressing that.