Posted on Sep 1, 2005

September 1, 2005 – For six semesters, while she was a grad student in the United States, Myrosia Dzikovska, a researcher at the Human Communication Research Centre in Edinburgh, Scotland, worked as a teaching assistant. She assisted undergraduate students and first-year doctoral candidates, and graded papers. “I seemed to be engaged in a constant battle with most of them to obtain properly documented and readable code,” she said. Few would follow even the most basic guidelines. Underlying their excuses, Dzikovska said, “Many didn't have the habit of proper code development in the first place.”


You've probably hired one of those students.


In nearly every profession, it's common to complain about the poor quality of the latest crop of college graduates. You don't have to buy a second beer for a development manager before you hear horror stories of new hires who know nothing of software testing or writing secure code. Yet, software development-and the universities we depend on to supply its practitioners-have unique demands. Technology and tools evolve faster than any reasonable curriculum can keep up with. Then, the first day on the job, new hires are expected to demonstrate both theoretical breadth and domain-specific depth.


IT managers may think that their new hires are ill-prepared for the real world, but many higher education professionals refuse to shoulder the blame. At its heart, the issue revolves around two questions: the expectation of a college grad's knowledge (and thus your company's need to provide additional training), and the old art-versus-science debate about programming that you probably had in your own dorm room when you were in school.


At many universities, the emphasis is on broad understanding rather than job skills. “A four-year university program cannot produce graduates who will require no additional training, nor should we try,” explained Karen Ward, assistant professor of computer science at the University of Portland in Oregon. “We teach the basic skills and try to lay a broad foundation of concepts that will support the graduates in whatever direction they decide to go professionally. We actually get dinged in the accreditation process if we are teaching courses with no significant theoretical or foundational content, and rightly so.”


Kyle Lutes, associate professor in the department of computer and information technology at Purdue University in West Lafayette, Ind., agreed. “A common belief among university faculty is that the purpose of a university degree is not to prepare the student to be productive in the workplace the first day after graduation. Training a worker to be effective in an organization is the responsibility of the hiring organization,” Lutes said.


It's not a matter of unwillingness, according to these professors. In the classroom, experience can only be simulated, said Doug Waterman, IT instructor at Fox Valley Technical College in Appleton, Wis. “Experience fleshes out the framework we supply in our classes.”


The sheer number of complex and expensive tools and techniques makes the challenge even more difficult. A student takes two courses in his major per semester, over eight semesters. “That gives you 16 courses to teach a student everything, from how to write a simple program using variables and if statements, all the way to how to work on a team to develop a multitier enterprise application that supports thousands of concurrent users, has a Web user interface and a Windows form GUI, and uses a robust RDBMS back end,” Lutes pointed out.


If you add to the curriculum, something else has to go. Explained Ward: “We're trying to jam more and more 'must have' topics into a very limited number of contact hours.”


As a result, some professors said, it's unrealistic for businesses to expect college grads to be truly useful the first day on the job. “In what fields do brand-new college graduates do production work immediately upon graduation?” asked David Hemmendinger, professor of computer science at Union College in Schenectady, N.Y. “Economics majors don't pick mutual fund portfolios right away. Chemistry majors don't formulate detergents without more work. Why do employers expect more from an undergraduate computer science degree?”


Industry Experience


Plus, the university system does not encourage faculty relevance. First, they're rewarded more for research and publication rather than industry experience; and many professors have only secondhand knowledge of life in an IT shop. They may not be all that good at programming or testing themselves, Lutes suggested, and they've probably never developed a secure application for use in a networked environment.


Many nontraditional and community colleges use this as an opportunity to stress their ability to impart real-world knowledge. Sydney Caddel-Liles spent several years as a software engineer, and now teaches C# for DeVry University Online from her home in Porter, Ind. DeVry, and schools like it, are outcome-based education. “Everything the students do can be traced back to a specific objective,” she said.


According to Terri Keane, an IT instructor for Fox Valley Technical College, the Wisconsin Technical College system requires all its instructors to have a minimum of two years experience in the field. “We know how important testing is, and writing secure apps, and the importance of quality assurance,” said Keane. “Students hear us say these things over and over.”


Changes Afoot


Some of the above may sound like whiny excuses, especially when you're the manager who's faced with an unready programmer. Traditional and nontraditional higher-education venues are making several changes to their curricula, however. They're simply struggling with the (sometimes insurmountable) problems in doing so.


Most four-year programs still are trying to turn out computer science graduates who are prepared to move into any part of the field, or to go on to a research-oriented graduate program. Perhaps, said Ward, that isn't realistic.


The computer science field, she said, is starting to fission into several separate specializations, much as engineering has. “We're seeing more schools offering 'tracks' of upper-division electives that allow students to gain some additional depth in one part of the field at the expense of others, and we're seeing more students turn to non-thesis masters degrees for additional specialization. We are also starting to see more specific four-year programs, such as software engineering degrees.”


There's also more emphasis on real-world skills in the generalist education.


Ken McCullough, lead instructor in the information technology department at Madison Area Technical College in Wisconsin, said the college is adding to its testing, teamwork and communication skills. As one example, “Fourth semester students take a capstone class where they work as a software development team; they sign off on quality assurance at several steps in the project including design review, code review, and program/system test scripts,” McCullough explained.


Ann Friauf is on the faculty at Carnegie Mellon West, where she teaches master's students in software engineering and everything is project-based. “Students work in teams to gather and analyze requirements, design the architecture and build a product. The teams submit their documents and code, and the grades are based on the quality of their work. Teams work closely with the faculty throughout the program.”


Kishore Ramachandran, chair of the core computing division at Georgia Tech's College of Computing, said the university's introductory computer science course uses real-life experiences and interests to motivate students to attract them to the field. “Students study and create programs that manipulate sound, images and movies. They write code to create special effects for photos and movies, splice audio clips and create Web pages. In fact, the technology built for the course has proved to be so effective that other universities have adopted Tech's curriculum and improved course retention rates, especially among women.”


What Your Company Can Do


Education is too important to leave to the educators. If your company wants better-equipped programmers, then it has to get involved in the process.


First, calibrate your expectations. Any new hire takes months to become truly productive on the job, even those with plenty of experience. That's even more true for kids straight out of college, who need to adjust to working life, learn your company's tools, and gain the day-to-day job skills.


One solution that benefits everyone is internships. SPI Dynamics hires many programmers from Georgia Tech after first having the students on-site as interns. The Imaging and Solutions Technology Center, part of the Xerox Innovation Group, hired three summer interns this year, reported Lissy Bland, senior hardware design engineer at Xerox. “As far as I can tell, all three were productive within the first month,” she said.


Share your expertise. Send your own experts to lecture at the college. SPI Dynamics is actively working with Georgia Tech to improve the secure coding curriculum for development and IT security students. Purdue has an industrial advisory board that consults on curriculum issues, according to Lutes. Faculty members also need support in the form of money, equipment and software. “If businesses aren't happy with what the colleges and universities are doing, they need to get involved,” he said.


That's especially true if you want specific skills, because you probably won't get them directly from the university system. Professor Daniel Jackson, of the Computer Science and Artificial Intelligence Lab at the Massachusetts Institute of Technology, said, “An undergraduate degree is not primarily for vocational training; our job is to teach our students things that will benefit them in the long term. It's important that universities don't get caught up in transient technology trends, or waste time on details of complex tools that won't be around in a few years' time.”


http://www.sdtimes.com/article/special-20050901-01.html