Software developers are notoriously opinionated, but there’s one thing all corporate coders can agree upon: College doesn’t always prepare newcomers for the real-world experience of writing software on a team.
Armando Fox and David Patterson, two computer science professors at the University of California, Berkeley, discovered this unspoken agreement when they interviewed enterprise developers to find out what they wanted from new graduates.
The resounding reply, according to an article published by Fox and Patterson in the Communications of the ACM in May 2012, was that fresh college graduates were not equipped to deal with corporate development scenarios. In effect, the enterprises were asking for students that understood how to dive into an existing application’s codebase, then modify, fix or otherwise work with it.
That’s a bit of a different chore than the typical computer science fare, where students are called upon to write something like a spell-checker or word processor from scratch in C, Java or Python.
“We asked, ‘Where are the gaps?’ They all said that legacy code was the No. 1 gap,” said Fox. “That’s not a topic that gets a lot of time in computer science. They talk about how bad legacy code is, and how if you follow good coding practices you’ll be OK. But that’s a myth; even if it’s good code, knowing your change didn’t break something else is difficult.”
After publishing their paper, Fox unveiled a newly designed computer engineering course at UC Berkeley based on his research. This new course would be about software development within a life cycle, and it would utilize the types of tools students would likely find in an enterprise setting.