With a huge drop in computer science grads, what will the future workforce look like?
As enrollment in computer science (CS) degree programs in the United States continues to slide and sea changes in technology loom, the emerging workforce-or lack thereof-has universities and technology giants sounding the alarm.
Only 1.1 percent of new students planned to major in CS, according to a survey of incoming college freshman conducted in 2005 by the Higher Education Research Institute (HERI). Those results underscored a disturbing trend: HERI/UCLA survey data showed that since 2000, interest in CS as a potential major had dropped almost 70 percent.
Universities with Ph.D. programs also report dramatic declines in enrollment. In the fall of 2006, new students declaring CS as their major had dropped to 7,798 from 15,958 in 2000, according to the U.S. institutions polled by the Computer Research Association for its annual Taulbee Survey. On the upside, the 2006 enrollments were down only slightly compared to 2005 (7,952).
The dearth of enterprise-level talent graduating from U.S. schools is cause for concern. What is the professional workforce going to look like five years from now? Many industries are barreling toward paradigm shifts that will require the high-level programming and development skills needed to create and maintain industrial-strength applications for multi-core processing, large-scale Internet computing and Software as a Service (SaaS), as well as rich clients for desktop, Web and mobile platforms. Already, many corporate-level managers face frustration as they hunt-and compete-for qualified talent.
||"Unless the technology becomes an integral part of doing software engineering, then giving a student a laundry list of best practices is just not going to make a difference, because we've tried it for the last 40 years."
|Dorota Huizinga, Ph.D., Associate Dean,
California State University, Fullerton
Bodies, Not Brains
"My overall feeling is that globally we have a massive talent crunch," says Jamil Azher, director of global outsourcing for Wolters Kluwer Financial Services. Azher oversees dev teams in Boston, Minneapolis and Bangladesh that produce the company's information service products. "In the U.S., it's very, very difficult to hire talented people in major metropolitan cities," he says.
In India, it's even more difficult. "Yes, numerically it looks like India is producing about 200,000 college graduates in engineering," Azher explains. "But only about 25 percent of them would be employable in major enterprise projects."
And getting to that group is challenging, as large companies hire the top talent within days after they receive their IIT degrees. "We're seeing a lot of green people coming out. And given the global demand, they're being sucked up by big companies in an instant," says Azher. "For the rest of the 80 percent of the IT industry, there's a massive dearth of talent. Eventually, we get bodies not brains. As a result, our executions run into significant problems. We suffer enormously when we don't get talented people."
Azher finds that "safeguards" at the tools level-his company uses Visual Studio Team System-can help ensure that quality is maintained. "Requirements actually are somewhat met, and tests are actually done," he says.
Reprogramming Our Schools
Dwindling enrollments are not the only problem. What students learn in the classroom often isn't a good match for industry requirements, even though more schools are starting to provide domain-specific coursework.
"From a business perspective, CS majors don't possess the necessary skills," says Jeff Levinson, application lifecycle management practice lead at Northwest Cadence Corp.
Levinson earned his Master of Science degree in software engineering at Carnegie Mellon University while working at Boeing Co. He routinely turns down employees with a CS background when he's working on business apps because they don't possess the skills he needs for his projects. "CS teaches hard-core mathematics and theory," he says. "When CS graduates come out of school, 95 percent of the time they haven't seen or heard of use cases, have never written or read a requirements document, and don't possess any soft skills or understanding of business consequences."
Software engineers may not have the hard-core math, acknowledges Levinson, who says he only made it as far as algebra. But in his view, most software engineers are better at writing and understanding requirements and are at least familiar with the app-dev lifecycle.
What is creating this gap? What schools teach is often influenced by the research that's underway in their doctorate programs.
"There are many good, innovative and knowledgeable professors, but there are also too many in education with little interest in real-world systems and problems," asserts Bjarne Stroustrup, creator of the original C++ language implementation and college of engineering chair in computer science at Texas A&M University (TAMU), in an e-mail. "The U.S. academic system doesn't reward professors for spending significant time on problems with current technology. The result is students with a shallow view of software and systems. Many have no clue what their language and system does and think that invoking functions on a library someone else wrote is all there is to developing software. Not all, but too many."
With enrollments way down-as much as 60 percent, in some cases-several institutions are collaborating with Microsoft, Google Inc., IBM Corp., Yahoo! Inc. and others to revisit curriculums, beef up research programs and attract students-especially women and minorities.
"We lose women to this whole field around fourth grade," says Dorota Huizinga, Ph.D., and associate dean for the college of engineering and computer science at California State University, Fullerton. Studies show that women often feel alienated and tend to drop out of CS programs, especially if they're not earning high grades, she says. Women make up 18 percent of the CS program at Cal State Fullerton.
Masters of Industry
Who needs a college degree? The technology industry wouldn't be where it is today without the contributions of these former students who all completed master's programs (and then some) in computer science.
James Gosling joined Sun Microsystems Inc. in 1984 after receiving a Ph.D. in computer science from Carnegie Mellon University. He worked on the original design of the Java programming language, compiler and virtual machine.
Larry Page and Sergey Brin built a search engine that relied on PageRank technology as a research project while working to complete their Ph.D. programs in computer science at Stanford University. They started Google Inc. in 1998 and the company went public in 2004.
Linus Torvalds earned a master's degree in computer science after a six-year program (including undergrad) at the University of Helsinki. He wrote his thesis on Linux.
Joysticks and Robotics
How do you bring back enrollment? One approach is to broaden the appeal of computer science to a wider range of students by contextualizing computing, says Sailesh Chutani, director and founder of the External Research and Programs Group for Microsoft Research. The idea is to add coursework in areas such as socially relevant computing-the impact technology has in solving problems in the world-and in gaming and robotics.
Microsoft Research is funding a joint Institute for Personal Robots in Education (IPRE) at Georgia Tech and Bryn Mawr College, which launched in 2006.
"Students purchase a $100 to $200 personal robot along with their textbooks, which they will learn to program and play with as part of their initiation into the discipline," explains Chutani. "We have a fairly good indication that that approach is far more compelling than what has been a fairly traditional, sort of dry approach to the subject."
The students use a robot called the Scribbler from Parallax Inc., which connects to their PCs via a Bluetooth device and Python-based myro (my robot) software. The personal robot approach is being discussed with high schools in the Atlanta region, and Carnegie Mellon University is looking at similar programs, according to Microsoft. Cal State Fullerton offers a robotics course where students build and program elephant robots, in keeping with the school's mascot.
Getting students engaged is one thing, but finding the best and brightest who can take on challenging programming tasks and succeed requires a sound grounding in the fundamentals.
Stroustrup, who recently taught a class of freshmen, says: "I'm a great believer in the principle that universities should educate, not merely train. Thus education can't be a simple introduction to the software tools and systems of the day and the latest hardware fads. Algorithms, data structures, machine architecture and operating systems are necessary topics. And add a bit of math and statistics to that for a bare minimum."
He also believes that anyone who claims to be a professional needs to know more than one programming language. Accredited (CSAB/ABET) curriculums require undergraduate students to master at least one higher-level language prior to graduation.
Stroustrup advises more: "I think two general-purpose languages and a scripting language would be a good start," he says. "C++ is an obvious choice because it's so widely used in the industry, supports several programming styles well, and especially because it allows direct access to hardware. The other probably should be Java or C#, to give people an idea of reflection. For scripting, I have no real preference. If time allows, learning a functional language-for example, ML or Haskell-would be a good idea."
Too Much to Master?
Closing the skills gap with an undergraduate degree may not be practical, which has led some people to suggest that to qualify as a professional, students should receive at least a Master of Science in computer science or software engineering.
"We need a solid foundation for computer science but we also need to give students practical experience with specific application areas, such as graphics and security," says Stroustrup. "We also need to expose students to real-world demands of correctness, maintainability, testability and performance together with the tools used for that. Unfortunately, when you complete a list of all that's needed-even at a minimum-you come up with something a lot of undergraduates can't handle, and couldn't reasonably be expected to handle."
With an undergraduate degree you're getting very broad exposure, agrees Microsoft's Chutani. "Once you've gone to the master's level, chances are you have more depth and you're more likely to fit right into what the industry is trying to do."
Stroustrup hopes CS degree programs will attract brighter students, noting that the U.S. educational system is not optimal and many top students select non-technical fields. Requiring a master's degree for "serious industry work" is another solution. "One problem with many current master's degrees," he says, "is that they're designed as an add-on for a bachelor's from any CS department worldwide, rather than as a whole five or six years of study. I emphasize that's my personal opinion, not something from TAMU, though the CS department is updating its curriculum."
Starting around 2002, some top-level institutions began to offer master's programs in software engineering and related disciplines remotely to allow working developers to more easily continue their education and improve their skill sets. Northwest Cadence's Levinson earned his degree through Carnegie Mellon's remote learning program. "In a nutshell, my schooling-along with mentoring at work-helped me understand the business realities of software development, organizational tradeoffs and how to streamline processes," he recalls. He was exposed to new areas of software development and did a lot of reading about things that he didn't encounter on the job.
As an enterprise architect at Boeing, he would have appreciated learning more about organizational structure. "It's all about understanding how people and processes relate to each other," he says. "Aside from that, I thought the master's in software engineering program was a great program."
Cal State Fullerton based its online master's in software engineering program, launched in the fall of 2004, on the Carnegie Mellon model. Roughly 160 students are enrolled in the program from four continents, with the majority based in the United States, particularly Southern California. "Because the mission of the program is to provide students with skills that they can almost immediately apply, we've included a lot of process and management skills in addition to the traditional software architecture, verification and testing skills," says Huizinga.
In her view, the curriculum in software engineering hasn't changed that much over the years, and in a lot of undergraduate programs students are probably exposed to one or two courses. "Those courses are very descriptive, not prescriptive," she says. "Consequently, students come out of those courses with an understanding of a lot of different ways of doing software engineering but they don't really know how to do it.
"Unless the technology becomes an integral part of doing software engineering, then giving a student a laundry list of best practices is just not going to make a difference, because we've tried it for the last 40 years," says Huizinga.
Another area-not currently well represented in curriculums outside of a course or two-is the human factor, observes Huizinga: How to design user interfaces and ways to make software and services more friendly.
If the most talented developers on your staff didn't stick around for their degree, turned their hobby into a profession, or found life in Visual Studio after majoring in English or Psychology, they're in good company. Some top developers who made their marks outside of school:
Bill Gates left Harvard University in 1975, his junior year, to start Microsoft with Paul Allen. He received an honorary degree from Harvard in June 2007 when he gave the commencement keynote to the Class of 2007.
Mark Zuckerberg commercialized facebook.com, a project he developed shortly after working as a developer on fellow Harvard students' social networking project called ConnectU. Part of the Harvard class of 2006, he took a leave of absence and hasn't returned.
Chad Hurly, the CEO of video-sharing site YouTube LLC, founded the company with two of his former PayPal coworkers. They sold YouTube to Google Inc. in October 2006 for $1.65 billion. Hurley graduated with a Bachelor of Fine Art from Indiana Unversity of Pennsylvania in 1999.
Art and Science
Wolters Kluwer's Azher, who earned a Bachelor of Science in electrical and electronics engineering (EEE) from California Institute of Technology in 1988, and more recently, received a master's of IT from Harvard University, says he's not qualified to discuss today's curriculums, "But, the output of the universities I see because I hire them."
In his view, to be an effective programmer in sophisticated projects, you need to have talent and you need to have training. "Software is essentially a product that you create with your mind. You don't really see it, you don't really smell it, you have to imagine it first," he says. "Curriculum will give you training but talent is something you have to have inherently, because not everyone can be a software engineer, just like not everyone can be a musician. You need art as well as science."
Unfortunately, he says, "What I'm seeing is people lacking massively in both. It's just a supply-and-demand situation." On-the-job training isn't a workable solution, in his view. You can't take a graduate-even an engineering graduate-and turn them into a software engineer in less than two years. "You have a fundamental bottleneck," he says, "and demand seems to be unending because of global growth, not just U.S. growth."
Longer term, attracting the brightest students to CS degree programs is the answer, believes Stroustrup. Shorter term, many companies will have to take a more active role in educating and training their workforce. "We can train in specific areas, but don't expect anyone to become a security expert in a week," he says. "A little knowledge can be a dangerous thing."
Going forward, Stroustrup expects to see more specialization and a diverse workforce in terms of ethnicity, technical backgrounds and career goals. "That makes management-especially first-level management-more challenging than ever," he says. "Many companies will have to look globally for talent, which increases the education, training and management challenges."
Another avenue to find talent is to raid other scientific and engineering fields. "Some of the best programmers I've met used to be physicists," he says. "But most would need a course in maintainability before being let loose on a large project."
Experts agree that it's difficult to expose students to real-world demands, especially in areas such as large-scale, Web-based applications (search, social networking and e-commerce) and large code bases.
"If you want to build next-generation, Web-based applications, you're talking about running applications on an infrastructure that's very, very scalable and programming in a parallel mode, and those experiences aren't something you can easily acquire in a classroom," says Sailesh Chutani, director and founder of Microsoft's external research and programs group.
Microsoft Research is starting to look at how it can help with this problem. The company plans to make 100 million data logs available for research, and announced a request for proposals. "If you can make that kind of data set available to academics, then they can leverage it for their research as well as their classroom," asserts Chutani. For "industrial-strength code bases," Microsoft Research also provides select institutions with access to its Phoenix Academic Program, which offers compiler and framework tools designed to be extensible using Visual Studio.
Other companies are already piloting programs. In October, Google Inc. and IBM Corp. joined forces to provide top universities-University of Washington, Massachusetts Institute of Technology, University of California at Berkeley, Stanford University, Carnegie Mellon University and University of Maryland-with hardware, open source development tools (including the Eclipse IDE) and services to help students master skills needed to learn parallel programming and build Web, high transaction, scientific and business apps that run effectively on large-scale distributed computing systems. IBM and Google have pledged to provide up to 1,000 servers, and plan to expand the program to other institutions.
All of these efforts are just getting underway. "Clearly, the industry needs to do more without getting in the business of dictating the curriculum," says Chutani. "There's a broad gap right now when it comes to being exposed to large code bases and large Web bases. And in the next five years, I think we'll see a shortage in the number of people who know how to do parallel programming. There's a big shift happening in the industry as you go from single core to multi-core-those systems are very difficult to program."