#42 Computer Science 2.0: Part 1―Amjad Masad: Engineer, Codecademy; Co-inventor, repl.it
初出：Software Design 2012年11月号（2012年10月18日発売）
Here in the United States, two trends in higher education have intersected, and nobody quite knows where the path will lead. On one hand, the price of college keeps rising. To pay for it, American college students have taken out educational loans that now total more than $900 billion--about 70 trillion yen. At the same time, some far-thinking educators have begun to offer online courses and resources. The range is huge: one of the pioneers, Massachusetts Institute of Technology, for example, offers a broad collection of online resources through its OpenCourseWare program: aeronautics, biology, chemical engineering, nuclear science, and even some non-technology courses: literature, philosophy, music and woman’s studies. And, of course, a generous offering of courseware in computer science.
Tuition for the 2012-2013 fall and spring sessions at MIT is $20,885. OpenCourseWare and, for the most part, other online resources are free. Which begs an obvious question for students, employers and universities alike: given the high cost of education in person, why not just stay home by your computer and educate yourself for free? In the past, the institutional answer is that an online education, no matter how good, is not a certified college education. MIT, for example, states emphatically that OpenCourseWare is not equivalent to an MIT degree.
Except that for millions of people in the U.
For the next four issues, we’ll be looking at online alternatives to a computer education--what I call “Computer Science 2.
Build an IDE, get a job in New York. That’s the short version of the career path of Amjad Masad, whose open source integrated development environment for beginners caught the attention of the American “learn-to-code” startup, Codecademy. Born, raised and educated in Jordan, Masad is now the company’s lead front-end engineer and is building the company’s own programming team.
Masad began programming in Visual Basic at age 12 and studied at Princess Sumaya University for Technology in Amman. After trying his hand at Windows system administration, IT consulting, and Web application security, he returned to his first love: full-time, hands-on development. “When you’re doing things like security auditing, you’re just writing code for the immediate task, but you’re not really thinking like a software engineer,” he recalls. But Masad still didn’t feel quite prepared for the demands of the profession. Looking around for a do-it-yourself post-graduate education, he researched what MIT was teaching its first-year computer science students. That led to a book: Structure and Interpretation of Computer Programs, by Harold Abelson and Gerald and Julie Sussman, which uses as source code examples a LISP dialect called Scheme.
And that’s where things got interesting. At the time, Masad didn’t have a laptop, and Scheme, a relatively old language, was scarcely supported online. So Masad got the not-so-obvious idea to build his own Web-based IDE. What he had in mind was not a full-blown development environment, but something simple enough that he could just hop on from anywhere and start programming. “I just wanted a REPL,” a read―eval―print loop. And so was born repl.
The simplicity of repl.
“We used jq-console―repl.
- Let me get this straight. You wanted to learn Scheme. So you built your own IDE.
Not just Scheme. My goal was to not only learn, but be proficient in four programming languages in a year. You can pick up the basics of a language really fast, but to really learn it, you need to practice a lot. But the lack of a good, portable IDE that is accessible from anywhere and anything with a browser makes it too hard to start. That’s why I got involved with this project. I built repl.
it the way I build other things--in small modules, small libraries--which I then put together to create the whole thing. I open sourced each of those modules as I created them. Right now we have about 10 repositories of libraries and languages.
- What attracted Codecademy to repl.
About a month later Codecademy sent me an email saying they want to collaborate on something. At that point I was in the process of quitting my job at Yahoo! Jordan, and starting my own company, partly because I knew I was onto something and partly because I could already see Codecademy’s success in helping people learn how to code. In talking to Ryan, I realized we had the same vision of what we want to do, of how we want to make the programming accessible to everybody. We had similar thoughts about coding and what we call “the new literacy” and how everybody should learn how to program.
We agreed on me doing some contract work for them just to feel out how we could work together. It went really well, and in November, Zach came to Jordan and we hung out for three days. At the end of that time I signed a contract to work for the Codecademy. I officially started last January.
- Who is enrolling in Codecademy? Are they people who already have a profession and are trying to pick up a language? Or are they trying to become full time programmers?
Both. A big chunk of our users are already professionals in some field and want to use programming to become better at their job. Some learn programming because they want to crawl the web and create scripts to process that never-ending source of data, or want to write scripts for Excel to automate something. Other people are interested in programming careers. We have stories of people who were first hired for some other skill. Maybe they didn’t even have a university diploma. And now they have shifted careers within the same company and are full-time programmers. There are also people who are in college or even high school. They aren’t majoring in computer science, but they realize that coding is the future. It’s a skill you need to have, and they are learning it because they are intrigued by it.
- A Codecademy investor, Saul Klein of Index Ventures, said that 21st century parents should teach their kids three languages: English, Mandarin and coding. He argued that software has become so integral to our lives that coding has become a fundamental skill.
Exactly. When we refer to programming languages being part of the new literacy, that’s what we mean.
- You were Codecademy’
s first employee. Now you are hiring programmers. From that vantage point, what have you learned about programmer education?
It’s interesting. Some people who graduate from university still don’t know how to program, even though they have the theory down. Theory alone won’t do it. That was something I noticed from my university years. Unlike many other disciplines, programming requires hands-on training. You can read the textbook and take notes at the lectures, but the bottom line is that to learn programming, you actually need to program. Ask any working programmer how they learned to program: by reading a book and or sitting on a computer? The answer is obvious. Maybe they began by going through other people’s code, modifying it and seeing what happens. Or maybe they tried their hand at something original. But the approach is always the same: coders learn their craft by coding.
So when I hire, I don’t care if a candidate comes to me with a formal education or is self-taught. I just test them. I test their knowledge of computers and their skill in programming. I think that’s becoming generally true in the industry. Except maybe for Google, nobody seriously cares about computer science education. The startups and most computer companies certainly don’t. They just care about skill level.
- If that’
s the case, do you think we are headed for a fundamental change in how people educate themselves to become programmers?
ve started offering Python. Why Python?
Python was a priority partly because our users were asking for it and partly because we think it’s a very nice language to start programming in.
- Half your students come from outside the United States.
We have students from all over the world. A few of these stories are quite dramatic. One young Kenyan high school student started learning programming with us. She went on to do consulting in Ruby on Rails and is now applying to MIT. I can’t be sure, but I bet she gets accepted.
- You are now responsible for the care and feeding of Codecademy’
s site. How do you keep it inviting for beginners?
Our goal is to keep it uncluttered, accessible and intuitive. Simplicity is key because we don’t want to intimidate and scare off anyone. So I keep reminding myself of what it was like when I was a beginner. I do know how it can feel, when you just land on a console--say a Linux or Mac terminal--and don’t know what to do. So we want people to have a friendly, welcoming interface. The challenge of course is that as our students grow and learn, we should grow with them. Some of them now want a more feature-rich editor, and they want to deploy at their site. I’m not sure what is going to happen there.
- So where is Codecademy headed?
We're focusing on the international market, as well as enhancing our existing products: more language support is always on the table. We're working on making it easier to learn with friends and family on the site. We have also begun enabling peer-to-peer instruction. Some of our learners who finished our courses have in turn started teaching others on the site by using our course creator tool. We believe that people always like to give back, especially in the software community, so we will keep investing in this strategy. And really, it’s a necessity. In order to scale to everyone and to every technology--which is technically challenging--we will need help on the content side.