Tuesday, February 3, 2009

Rebooting Computing: Why?

Have you seen “The Most Famous Chart in Computer Science Education?” The exact numbers and data sources vary, but the curve always looks similar:

I used data from college bound seniors who indicated on their SAT that they intended to major in “Computer and Information Sciences and Support Services.” The curve tends peak between 1999 and 2001 and then you see a huge decline that has just begun to bottom out to numbers less than half their peak value.

Some people like to explain away this drop on another curve:

Although there was a correlation of computer science enrollment and the stock market, you'll see that the curves diverge around 2003. A popular belief is that the bursting dot-com bubble scared some potential students, but then by 2003 parents thought most software jobs were being offshored and encouraged their kids to pick a different field.

Some jobs did go to Bangalore, but the total number of jobs actually grew in the US, even beyond their 1999 levels. There are still excellent job prospects for the long term. Even in hard times like the 1970's recession, companies like Apple and Microsoft were founded. In 10 years, we'll know of a several great companies that got their start in the current financial crisis. It's unfortunate how students and their parents have been misled about the reality.

We're faced with a pipeline problem. The fresh-outs you'll be looking to hire in 10 years are in middle school right now. Are you doing anything to woo them to a career in computing? What do you say to a bright young girl to at least consider looking at computer science?

I could start with my story. As a kid, I was captivated by how I could think of an idea for a program and then have a computer execute it exactly. It was as if I could put part of my mind inside the computer. My parents and friends thought this was magic. It was magic, but it was a magic I could understand. There's always cool new things being computed. It was magical to see how Deep Blue beat Kasparov long before I began to understand the beauty of how it worked. Every day I listen to MP3s that were created by a compression algorithm that gets rid of sound that my ear can't hear. Companies like Walmart sift terabytes of data to predict market demand so they can send extra strawberry Pop-Tarts when hurricanes are approaching. On a personal level, new algorithms predict with a high accuracy what types of movies we'll like. But that's just one tiny sliver of what's out there. Each person can have their own unique experience. There's a lot of great computing going on and the demand is only increasing.

Sometimes you'll hear honest hesitations about a career in computing because of fears that they'll “sit in front of a computer all day.” The sad irony is that this thinking causes people to go into fields like accounting, graphic design, marketing, or hundreds of other fields where they spend just as much time in front of a computer. The difference is that they'll spend most of their time using applications like Outlook, Word, or Excel and often have less fun than the software developers that are creating these programs. Moreover, working in the computing fields will give someone a chance to create future interfaces that don't have everyone in front of giant screens all day.

This isn't to say that there aren't boring software development jobs, but there are also plenty of great jobs. It's a great career. I sometime feel a little guilty that I can work in a field that I enjoy. As a field, we create software that powers business communications and connects you with friends. Software will be a pivotal role in gene sequencing and analyzing that will usher in customized medical treatments and drugs. Software will drive many great innovations of the future.

It's sad that kids aren't even given a chance to see the breadth and excitement of our field. I don't blame them. On the whole, we're doing a terrible job broadcasting our image.

Professors often teach computer science as if it is some sterile thing with nothing new in it. This is just not true; we're in our adolescence. Sure, we bumble around and do silly things at times, but it also means we're growing. We're in an incredible time. Mehran Sahami captured this well at the conclusion of his intro class at Stanford:

“Think about the time that you're living in. Don Knuth, who is considered the father of Computer Science is still alive and he's in this department. It's sort of like you're geometers and you're living in the time of Euclid... It's all happening now. Don't think of this stuff as dead people who did this stuff and it just happened and now you're forced to do it. You're living in it.”

Mehran is one of the few teachers that do a great job of sharing the new and exciting possibilities of computer science. Too often you see teachers that claim that computer science is some small box that is exactly what they're teaching.

When I've had the honor of having conversations with computing pioneers like Alan Kay, I often hear how their teachers in the 60's would admit that they didn't understand the full possibilities of computing, and they wanted their students do better. The early ARPA community with J.C.R. Licklider at the helm is a great example of this style.

Licklider encouraged and funded wild and imaginative ideas that caused a huge boom in computer science back in the 60's and early 70's. Unfortunately, this slowed down in the 1980s as funders became more conservative, took fewer risks, and as a result got more incremental improvements rather than something big. I think this is why Alan Kay has difficulty finding significant new inventions in computing since 1980. Alan's statement sounds crazy until you see just how much of what we use was started before 1980. Some will point to the web and the browser as a huge new invention, but even Marc Andreessen, speaking on how he was able to create the first graphical web browser revealed:

“I was able to do it so quickly because it was the icing on the cake that had been baking for 30 years.”

Indeed he had. In the mid-60's, some of the baking started when Licklider funded Doug Englebart's amazing oN-Line System that amazingly had hypertext links and was operated by a mouse. Len Kleinrock's Ph.D. proposal on packet theory in 1961 gave him a great start that ultimately led to his team sending the first message over ARPAnet in 1969. Vint Cerf and Bob Kahn had already published a paper on TCP/IP, the bedrock of the Internet protocols, by 1974. All of these technologies were well refined and in production by the time Tim Berners-Lee created HTTP in the early 90's to which Andreessen would add a graphical front end.

Are we willing to fund long-term “wild” and “crazy” ideas today to create Internet-sized future results? We've been too focused on short term results. It's not just academia; most companies focus on short-terms results that dismiss the fact that computing is a young field and miss what really matters:

“Many HR departments haven't figured this out yet, but in reality, It's less important to know Java, Ruby, .NET, or the iPhone SDK. There's always going to be a new technology or a new version of an existing technology to be learned. The technology itself isn't as important; it's the constant learning that counts.” - Pragmatic Thinking and Learning, p.145

Bummer, Now What?

Last March, I was given the opportunity to be on a design team to start tackling some of these problems. We knew that we couldn't change the whole field and that some people would want to keep it the way it is. But we also knew that we had to do something; we didn't want to settle for the status quo.

Our primary task was to plan a “summit” of the best people from academia, government, and industry and get them all in one room so that we could get a good sample of the entire field. We didn't want to let people have the chance to point fingers outside and say it was somebody else's problem.

After working on the basic concept for the summit, we needed to give it a name. I had enjoyed many side discussions of the great days of Licklider, PARC, and the early culture that accomplished great things. Sort of as a joke, I thought that we needed to “reboot” computer science to get rid of the cruft that had accumulated over time and get back to the excitement when the field was brand new. After some discussion, we decided to change “computer science” to a broader field of “computing” and use the “magic and beauty” of computer science to be the driver of the “rebooting.”

Only later would I realize the rebooting metaphor could be stretched a bit further. We can “reboot” the field without throwing away the good parts just as an operating system can reboot and depend on its valuable non-volatile memory being preserved. Rebooting doesn't mean that we'll go down the same crufty path (e.g. perhaps we have better “drivers” now). Most importantly, the domain name was available so we ran with it.

After nine months of planning and inviting over 220 people, we had our summit in January at the Computer History Museum. It was the first time that such a broad representation of the computing field came to work together in the same room.

The summit was guided by the Appreciative Inquiry process. It's a technique that has you work in small teams to discover a positive core of what's giving the field life and then uses that to start dreaming of a better future. As the three days unraveled, we made it to the “design” phase where we kicked off several projects that fell into three rough categories:

  • Education
    • K-8 Fundamentals (Creating engaging introductions of computing fundamentals at the elementary level)
    • Project/Problem Based Learning for Grades 7-14
    • CS in K-12: Essential Subject (Determining a path to get computing essentials introduced in the K-12 curriculum)
    • Recruiting CS Teachers (Significantly increase the number of computer science teachers)
    • National Curriculum for Multi-Disciplinary Collaboration
    • International Educational Repository (that would include classroom activities and ideas for the K-16 level)
  • Outreach
    • LabRats (Build learning communities that include after school activities focused on areas like computer science)
    • Recruiting Women & Minorities into CS
    • Image of Computing (Sort of like a marketing campaign to show how computing is changing the world)
    • Tools for Fun and Beauty (Providing software tools for people sharing the fun and beauty of computing)
    • Relevant Computer Science Intersecting with Socially Relevant Projects (e.g. providing infrastructure in third world countries or disaster response scenarios)
    • Defining Future Computing Requirements for IT Service Verticals (e.g. Health Care, Financial, Government)
  • Internal Growth
    • Parallel Worlds Initiative (Leverage the boom in multi-core to drive new areas of thinking in computing)
    • Open Artifacts (e.g. create hardware and software systems that can easily be inspected, understood, assembled, disassembled and reused in new ways to allow for exploration)
    • Rediscovering Computing “Gems” (Revisit ideas from the past that might have been previously abandoned because they were infeasible but now might be possible)
    • Computing Field Guide (Create a resource to show the breadth of computing to both novices and experts)

I joined the Computing Field Guide team. I think it'll be fun to see if we can come up with a way to leverage many of the great existing resources out there and learn some of the breadth of the field as a result.

In the end, the three day summit was just the beginning of a long journey. It was a bit chaotic and some were disappointed we didn't fix everything right then or do more, but I think the summit gave a good context for the issues our field faces. My best memories include all of the great people that I met and being able to engage in some great conversations.

Steve Jobs said “you can't connect the dots looking forward; you can only connect them looking backwards.” I think that holds true for this summit. There are still a lot of dots between here and there; wherever “there” might be. With a lot of hard work, I'm confident that the dots will connect somehow. There's an interesting road ahead and I want to be a part of it. We need to start baking cakes for future generations to ice.

Your Turn

What do you think of the current state of computer science? What is your dream for the future? What are some things that we can start now to improve the current situation? Are you involved with any existing effort? Would you like to join ours?

I'd love to hear your thoughts.

P.S. There are several blog posts by fellow “Rebooters” ([1] [2] [3] [4] [5] [6] [7] [8] [9]). There are some pictures on flickr and a Rebooting Computing Community site that's starting to have follow-on discussion and might eventually have videos of highlights from the summit. In addition, you might watch this great talk by Dr. Peter Denning who has been leading this effort for over five years.


Jwendl said...

I would have to say that this is the most interesting post on my rss feeds list in the past 3 months.

I love this topic, when I was in coursework at the U of MN I actively promoted computer science anyway that I could. Long story short, I think if you can find a way to make the ACM ICPC (http://cm2prod.baylor.edu/login.jsf) more modern and popular you could win in this battle.

Additionally, to address the k-12 crowd. I was always amazed with robots and other technology because it was new and unique (back in the 1980's). What needs to happen is to find the "modern" equivalent to the robot. A technology so out in left field that it sparks imagination.

Shaun said...

Interesting read. Personally, I believe that the reason for the decline in interest is that although "Computer Science" is an allegedly lucrative field, if you work for someone else you tend to find yourself accepting "competitive" (cough*low*cough) salaries.

I work in a room full of sharp computer guys. We know how to create computer programs that can help make our job easier, and we try to do that as much as possible because that's interesting and fun for us. The problem is that there's a huge disconnect between our understanding and management's understanding of "the way things should get done."

Consequently, we always end up supporting management's bad decisions. If someone tries to force the issue, they're hit with a "not a team player" layoff and it makes those of us left fear for our own jobs. In this tough market we will do whatever management says even if we disagree with it, because we consider ourselves lucky to at least have jobs.

What's worse is that it's been this way no matter where I've worked ever since I received my CS degree. I was expecting to get high paying computer jobs straight out of college, but there's no shortage of talent among the unemployed. Therefore employers really have their pick, and will hire whoever is willing to work for the lowest salary.

Since businesses care most about the bottom line, they'll hire anyone with computer experience who will accept $19,500/year to be the computer go-to guy. He may not be able to do what the $50k/year computer guy can do, but he's cheap.

I wrote out a long list of gripes about why it "doesn't pay" to be the computer guy, full article here: http://www.lifereboot.com/2007/10-reasons-it-doesnt-pay-to-be-the-computer-guy/

Interestingly, when I was learning about computer science in school I was really excited about it as a career. Then when I actually started doing it, I learned that what we learned in the classroom is more or less theory, and doesn't always translate well into the real world. After working in the computer industry for over 5 years, I feel like I would rather do something else entirely. It's almost like the computer industry has soured me, and made me come to hate a hobby that I once loved.

Anonymous said...

Sounds like you'd be interested in Alan Kay's Reinventing Computing project.


Among other things, they think they can make a complete operating system, with gui and networking, in 20K lines of code.

Anonymous said...

Just read this: http://www.halfsigma.com/2007/03/why_a_career_in.html

It sums up the problem pretty well.

Anonymous said...

Oh great... Here is the URL broken into parts:


Jeff Moser said...

Jwendl: Thanks for the kind words! ACM is going to help us out on our project and we'll leverage some of their resources like "Communications of the ACM" (CACM) and the Digital Library. The ICPC is another good source for ideas.

To address your "robot" point, some of the people at the summit were really into Scratch and Alice. They're intuitive visual languages, but not quite like robots. Some of the iRobot models work well the the Microsoft Robotics SDK are sort of like a second generation of things to look at.

I think a good thing for the field guide to have is some of the "left field" concepts that you brought up. There are many to choose from (e.g. nanotechnology is just one example).

Shaun: I definitely agree that tech support stuff that you mention in your post isn't fun. In this post, I was referring more to designing software to solve interesting problems. I also realize that there are pragmatic things that need to happen that aren't always fun (e.g. bug fixes), but the hope is to have a steady supply of new and interesting challenges. I think it's easy for managers to not really care about someone else's career growth.

If at all possible, I'd recommend to not settle if you're not happy where you're at. That's hard advice, especially in this economy, but ultimately in the long run everyone will be happier.

Thanks for sharing your story.

Anonymous #1: You're right, I covered this project starting with this post in April of last year. It's what led me to learn about OMeta. Good stuff.

Anonymous #2: Again, I was more focused on designing software than traditional IT. In your post you mentioned that economics and law have principles that have a long timespan. I'd be very interested to hear your thoughts on the "Great Principles of Computing" that Peter Denning talks about in the video I linked to. I think it's a step towards addressing what you're describing.

Blank said...

K-8 Fundamentals (Creating engaging introductions of computing fundamentals at the elementary level)

That sounds like OpenWorld Learning.

Anonymous said...

Programming is a great career if you can work for yourself or you're lucky enough to work for one of the very few good software companies in the world that actually respects programmers, of course everyone assumes this will be them. Otherwise, apart from the generally good pay, programming is the worst office based occupation imaginable and will destroy all joy you ever had in software development. It makes excessive demands on your personal time, is extremely stressful and leads to health problems.

The future of programming as an occupation is also very dim. Current demands are artificial and I expect demand will fall away dramatically over the next decade. This current economic downturn might even be the catalyst for some rationalization of those millions of badly constructed, ill concieved, stupid speculative and redundant projects that will never go anywhere, but employ millions of programmers.

Jeff Moser said...

Blank: Interesting. Thanks for the link!

Anonymous: I can't say I agree with your assessment of "worst office based occupation imaginable." I agree that there are some horribly managed projects with Dilbert-ian politics, but usually you have the option of going somewhere else that's better.

I'm not trying to be naive here. I know specific situations are tough and there aren't always easy answers. I'm just saying that there is a mother lode of cool innovations that can be mined in computing if we dig for them. We're just at the frontier. We can't spin our wheels as if the way it is now is the way it always will be. The field as we know it now didn't exist 30 years ago before the PC became wide spread.

The computer revolution hasn't happened yet. We can't let Pointy-Haired bosses win.

Donald said...

Good post Jeff, the computing world needs a dose of new technologies to solve the problems facing it, and what better ways is there than to work from the bottom-up correcting flaws as they come. Rebooting computing should be a lot of fun. I'm just wondering how students like myself can contribute to this project?

Anonymous said...

Good post, only comment is that of course Deep Blue didn't beat Kasparov, IBM cheated...

Jeff Moser said...

Donald: One great way students can get involved is mentoring others, especially younger people. CS Unplugged has taught me that you can do great CS teaching, even without a computer.

Anonymous: What do you think about this page (especially the interview with Feng-hsiung Hsu). I think we can at least agree that Deep Blue was an interesting machine in its time.

taxali said...

Fantastic post! To even put it more simply, all you need to do to turn people on to computer science again is to get them exited about computers. They don't have to necessarily know they're doing computer science, but they will inevitably find out about it (and hopefully love) as they start doing simple things like starting a blog. After all, it's only a few steps from blogging about your new favorite chipmunk species to creating a local server and typing away hacks for IE6 on a custom build HTML5-compliant Wordpress theme. And BOOM! you're doing computer science.

The Motley Informer said...

What you say is great and all, but it applies to the small companies. The large ones are too into outsourcing and screwing their employees. The industry is also terrible for age discrimination. I know more than a few 50+ software developers who are brilliant people who CANNOT FIND WORK because no one wants to hire a 50+ guy who has real salary requirements. I would never encourage my kid to go into software. It's really sad. I am not a software developer, but I have worked as a Sysadmin/UNIX operator, etc. I have worked in the software industry for 15+ years. I had the best time in the small companies, but those small companies usually get bought by the behemoths and dissassembled, downsized, outsourced, and generally destroyed. I've seen it with my own eyes. As a matter of fact the huge "household name" tech company that bought our small software maker is right now in the process of closing our office in New Jersey and putting many brilliant people out of work because the manager in charge doesn't believe in telecommuting and if you don't want to move halfway across the country then it's bye bye Johnny.

Startups may be volatile, but at least the work is stimulating and you get to wear many hats. The big corporations and the quarter by quarter Wall St numbers game, non techie CEO's with their fat compensation and penchant for outsourcing and downsizing, has ruined much of the industry. I would never want my son to deal with that crap. He's going into something else - sciences, arts - maybe something that works with computers in a creative way like media related - anything but this garbage...

Jeff Moser said...

taxali: You're right in the sense that working with computers is easy to get started. The slightly harder part is "What is Computer Science?". I don't think there is a clear answer. Is creating a new algorithm Computer Science? Is creating a web page in Dreamweaver Computer Science? What about if they use HTML in notepad? Is writing a document in Word Computer Science?

Part of the initiative is to help answer this. I'm of the belief that computation is a very natural progression of science.

At the same time, I don't want folks to think CS is some elite club. I'd be happy to have it be called "computering" as Alan Kay likes to say. Additionally, Kay says that "Computer Science is the ultimate lab science." My hope is that his work with others at Viewpoints makes this more of a reality.

The Motley Informer: I respect your experience based opinion, but feel that I must disagree with some of your implied arguments. I definitely agree that there are companies that are just looking to viciously cut costs at any (human) price, but I've seen the reverse as well. Companies like Google hire guys like Vint Cerf (who designed IP in the 70's). Others like Alan Kay start their own companies like VPRI.

My biggest concern with your comment is that I see software as one of *the* leading industries of this century. It'd be sad for someone to not even be given the opportunity to pursue this field because of some bad experiences by early companies. Can you think of a field besides perhaps life sciences, that is going to make a bigger impact in the next 30 years?

Alfonso de la Fuente Ruiz said...

In Spain we are worried as well about the downsloping hype of Informatics in education and professional services. Last year we have gone through some movements among students, workers and authorities. It is clear for as as a european country and 8th most powerful economy in the world that we need to reboot our productive system nationwide.
You are encouraged to read more about this issue here and among this set of articles (Google translate available, top right corner).

SimonTewbi said...

I think the important thing is to get younger kids interested. By the time they're in high school they already have dreams of what they want to do. If they're not interested in high school you won't get them interested after they arrive at university.

Jeff: I think you hit the nail on the head with the comment about magic. That was how I got into computers.

As a kid there were no PCs, computers in the popular media were big blue boxes with chattering tape drives. They were magic - mysterious, locked away in air conditioned rooms and seemingly able to do anything.

I remember being absolutely amazed when our school got an Apple II and I was able to do something like a = 1, b = 2, PRINT a + b and the computer actually responded to my instructions!

Now that computers are ubiquitous I suspect they are not mysterious and magic any more. How magical is the internet? One of my kids is only interested in the games, the other in social networking sites to gossip with her school friends. No magic there.

CS Unplugged isn't enough. We live in Christchurch, where CS Unplugged was developed, so the kids can go along to CS Unplugged sessions during the holidays. It's interesting but the magic is missing. It hasn't ignited a flame in the kids.

Jeff Moser said...

Alfonso de la Fuente Ruiz: Gracias por la información y enlaces sobre lo que está pasando en España. Es bueno ver que la informática está creciendo en todo el mundo, aunque hay retos.

SimonTewbi: Thanks for sharing your story. It's great to hear from people from the other side of the planet :)

One of the difficulties I face is trying to see if what I find "magical" is really universally magical (and thus, we only need better teaching) or rather, I'm a bit of an odd fellow in what I enjoy (and thus, no amount of better teaching would help).

At younger ages, I think also it's good to dance around the periphery of CS as well because it touches many related areas.

I like math, but only discovered this after I was fortunate enough to have a good math teacher in 7th and 8th grade. My enjoyment of math led me to like cryptography. What I like about software is that often times, many disparate fields come together in elegant ways. I tried to show this in my recent HTTPS post.
Do you think your kids would find that interesting? If not, could the presentation be altered to make it better? I'd be interested in your thoughts on this.