Software Designers~The People Behind the Code~(英語)

#42Computer Science 2.0: Part 1―Amjad Masad: Engineer, Codecademy; Co-inventor,

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.S. and around the world, the distinction between official and online is mattering less. As jobs in the industrial world demand more knowledge, and as the price of a formal education goes up, something has got to give. Long term, your skills and knowledge may wind up being more important than the certification of a college diploma. That’s especially true in software design, a skill that can be tested and demonstrated. For many employers looking for skilled programmers, programming skills are the bottom line. If those skills were acquired online, rather than in class, does it matter?

For the next four issues, we’ll be looking at online alternatives to a computer education--what I call ⁠Computer Science 2.0.⁠⁠ We start with an educational startup: Codecademy, and the developer who came from Jordan to help make it run.

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, an open source collaboration between Masad and a college friend, Google developer Max Shawabkeh. They describe as a fully-featured terminal emulator and code editor, powered by interpreter engines. Those engines are either implemented in JavaScript or compiled from their original low-level implementations to JavaScript.

The simplicity of ability to get beginners going without having to install an IDE--got the attention of computer educators, including Codecademy, whose 22-year-old founders, Zach Sims and Ryan Bubinski, have raised some $12.5 million in venture funding to teach the world how to code. Masad became Codecademy’s employee number one.

“We used jq-console―’s web terminal plugin--for the first version of Codecademy, and we were blown away by both Amjad and the IDE,⁠⁠ said Sims, who eventually flew to Jordan to meet the developer. ⁠Getting to know Amjad throughout the process was pretty amazing from halfway across the world. Going to Jordan to talk with him about the future of Codecademy, as well as his own future, was an eye-opening experience. Finding someone who was so connected and passionate about what we were doing was terrific, and knowing that Amjad, Ryan, and I could build an amazing company together was even better.”

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 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

When Codecademy launched in August 2011, they were looking for a console library and for something to help with the JavaScript interpreter they were building. They stumbled on my project and used some of my stuff to build the initial version of Codecademy. I was excited -- they got 200,000 users within the first two days. It was my first open source programming project that went mainstream.

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?

It’s already happening. Look at the JavaScript community. Many of the best JavaScript programmers are English majors. I’m all for that. If you want to go to university, study the arts or humanities and pick up programming on your own.

JavaScript is one of the main Codecademy offerings. Since then, you’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.