Seemingly every other type of creative work has an associated “best of” list some associated trade magazine compiles. Such lists are not definitive and often employ questionable metrics, assuming, of course, they use any metrics at all. However, these lists are valuable in spurring conversation about what works made the list and which didn’t.
Programming is also a creative work, although many people don’t think of it in that light. Programs, like novels and songs and movies, are expressions of ideas united by theme. Two different programs may support the same theme but express the underlying ideas in very different ways. Users will choose one over the other based on how well each software expresses what it needs to convey.
I was happy to see a top-ten list for software published today on Slate. Like other top-ten lists, this one demonstrates a certain bias. This one seems to favor software published when Bill Cosby ruled television. Still,it’s hard to argue with several of these picks, and it’s a good starting point for discussion.
All these applications share a fundamental trait: they provided unprecedentedly easy ways to accomplish complicated tasks. Visicalc was the first successful spreadsheet software because it gave its users unrivaled flexibility to analyze and visualize data. WordPro was the first successful word processor because it convinced users that it was a lot easier to create and edit documents on a computer than on a typewriter. Lotus Notes provided a way for large teams of people to collaborate and communicate in ways no other software package had managed to provide before. Hypercard enabled users to organize related data items according to the natural relationships that exist among them. And Mosaic, which, to my chagrin, was created in a lab just down the street from the one in which I spent my grad school years in the early 1990s in Urbana, brought that same ease of navigation and organization to the Internet. The creators of these celebrated applications saw an unmet need and crafted intuitive yet powerful software to fulfill it.
That’s the same challenge software developers today face: identify needs people have and develop software tools to help people meet them. With the rapid proliferation of portable computing devices, software applications that meet the needs of people on the move are most in demand. There is something satisfying and beautiful about a productive, intuitive mobile application that helps users do great things in near real-time with minimal effort. Writing mobile apps is really difficult, because providing sophisticated functionality in a tiny package requires packing a lot of features into a small space without compromising ease-of-use. There are very few people who are really good at doing that, because it’s difficult to think like a user and a developer at the same time.
I certainly applaud that Minecraft made the list. In bringing interactive Legos to a computer screen, Minecraft has fueled the creative juices of hundreds of thousands of people worldwide. It provides a limitless sandbox in which players can carve out fanciful worlds made entirely of blocks. My kids love playing Minecraft, It is wonderful to see them cooperate in building a world, and it’s always fun to watch them demonstrate what they’ve created. Sure, Minecraft lacks the tactile element of real Legos, but it makes up for that with its multiplayer support, social networking emphasis, and its unlimited supply of blocks.
I like to think that some of my students will one day help create software that appears on another person’s best-software-of-all-time list. All it will take for one of them to make the list is to keep looking for opportunities to help people and then to write efficient, simple, and secure code to do so. This is certainly easier said than done, but it’s the kind of challenge that makes Computer Science so much fun.