We doff our bowler hat to the hard-working archivists of the British Library, applauding their efforts to preserve the online history and social culture of the U.K. and Ireland. As we move towards a digital age of websites, blogs and Twitter, paper records are an increasingly incomplete representation of our society. If we want to preserve our cultural history, it’s not enough to preserve books, magazines, newspapers and legal documents.
Unlike papers that can be saved until lost or ruined, digital information is destroyed at alarming rates: not just deleted, but also altered and updated. The British Library has studied this phenomenon and is in the process of doing something about it.
The library’s effort to archive digital content from 5,000 websites in the U.K. is a huge undertaking in itself, but its benefits are invaluable. Social trends, political unrest, pandemic flu outbreaks and natural disasters are just a few threads in a society’s fabric, all of which help one not only learn from the past, but build on it for the future. To lose such information would be a truly detrimental blow to the culture that started archiving its history more than 250 years ago.
And although it may not be quite the time yet to think about papers, documents and books as relics from the days of yore, it is time to acknowledge how quickly digital information is lost and does in fact need to be recorded in some way for future generations. In tough economic times, it is commendable to put a project like this at the forefront, and speaks volumes about the British Library’s dedication to preserving the history and culture of the U.K. and Ireland—whether physical or virtual.
Let’s teach maintenance
What are computer-science students taught: To write software. Where are many newly hired programmers assigned? Code maintenance.
Maintaining existing software is the quickest way to get up to speed, not only on the codebase itself, but also on corporate coding practices. By studying the codebase, and then by making small, incremental changes (to make patches or implement minor feature changes), developers gain essential knowledge and valuable experience.
Yet, with only rare exceptions, students aren’t taught how to maintain code by studying a codebase, rooting out bugs or adding incremental functionality. Maintenance is not perceived as being interesting and also doesn’t lend itself well to the way that computer science is taught: in discrete semester-long courses focused on specific narrow topics.
This is a shame. For years, employers have complained that computer science graduates lack the skills needed by the business world. Learning Java for four years by writing fresh programs isn’t exactly a good model for success in the corporate world, where few folks, if any, ever get to start a project from scratch. Sure, sometimes that’s the case. But for the bulk of 9-to-5 programmers, you’re not working on new code; you’re working on old code.
We propose a new course for all computer science majors. This course would be of code maintenance: Each semester, teams of student programmers study an existing deployed application and add new features to it—complete with documenting requirements, maintaining test scripts, updating documentation, and so on.
The new features might add functionality, or address platform compatibility, or implement integrations with other applications. It doesn’t matter, as long as they’re significant changes.
Perhaps the application is written in Java or C#. Perhaps it’s written in COBOL. Perhaps it’s running on a somewhat obsolete platform. All that matters is that it’s a non-trivial application and that it’s real. That’s what makes this course a real-world learning exercise.
Next semester, the updated application is handed to the next team of students, who are similarly assigned to study the codebase and implement additional changes.
Students who succeed at this type of course will be better prepared for the real world.