I’ve heard that there’s a malaise within Computer Science. Recently, I hear this more and more. And Mark Guzdial wrote about his own encounters with this sentiment in his blog.
Mark highlights some excellent reasons why this might be the case.
Senior faculty today spent their whole careers defining and defending their turf — “This is computer science, and that isn’t.” At the same time, computer science has had dramatic change: From computer time being more expensive than human time, to the reverse; from memory being dear, to memory being plentiful; from sequential processing being the assumption, to today’s world where parallel processors are all that we can see going forward. How often does a discipline change so many of its base assumptions in the lifetime of a faculty member? Change is hard for anyone, and particularly so when you’ve spent your career making arguments that are weakened or changed by time.
The first thing that struck me reading this was how peculiar it was to participate in the development of a machine focused discipline that would ultimately give rise to a different class of machines. Computer Scientists develop methods, theories and tools to facilitate all aspects of machine production. And those innovations, as well as accompanying ones in the business world, have transformed the very object of study, the machine, from one of scarcity into one of abundance, from one of expense to one of relative cheapness.
Perhaps this is one unique challenge for a discipline of machinery.
I also wonder whether a focus on production makes as much sense as it used to.
Mark and I come from disciplines within Computer Science that you could say have a focus on consumption as well as production. Human Computer Interaction does focus on the methods to build better machines, more human-usable and human-useful ones, but we focus on the consumer, the user of said machine and use that to inform the methods of system production. And because Computing Education focuses on computational literacy, I think it’s impact is equally to create the next generation of builders as well as the next generation of users of the technology. You need a type of literacy to work the Computer into daily life. And I think a focus on consumption, on a novel experience was partially what Rob Pike was arguing when he made an early case for reformulating Systems research. (I now wonder whether Rob’s message was an early warning of what was to come).
Perhaps broadening focus to consumption offers possibilities, for framing production-focsed research.
I’m increasingly interested in understanding how computational solutions may not be one-size fits all. This is very visible in considering technologies for developing nations. There is now widespread recognition that what has worked well for the middle and upper classes of Western Industrialized nations, is not going to work elsewhere for a host of reasons. It’s not just that cultural differences impact human-centered aspects of consumption (as a colleague of mine, Mike Best puts it, what use is the desktop metaphor in cultures where there is no history of using desks). Simultaneously others write about exclusively technical challenges presented by the very different infrastructural configurations that govern the conditions of use. Not to mention the role of nation-states and international bodies laws and regulations that dictate conditions of use.
Another way to say this is that focusing on domains of consumption seems to give purchase in Computing. And I wonder whether this also explains the rapidly growing areas of Computational Science and Engineering, Health Informatics, etc… But, it also requires something else, potentially, giving up notions of universal generalisability in all circumstances. Let me say, I think that there has to be room for scoped generalisability, but letting the domain drive, suggests an openness to having some solutions that are domain focused. And maybe there are solutions that will carry from domain to domain, but we probably ought to be OK if there are not.
Domain foci, domain generalisability, also continues to push on something else I am not sure we’re always ready to accept, which is the increased diversity of knowledge in the discipline of Computer Science. Our methods, tools, and theories come from a vast number of sources, I can only see domain specialization continue to push that further. So, perhaps it’s time to abandon pre-conceived notion that a) you can learn all of Computer Science, and that there is a b) small set of things that must be taught in Computer Science. Domain specialization presses on that because we face a dilemma, with finite teachable time, can you teach all that is required to make a domain expert? What is worth teaching should likely also include emphasis on different ways of knowing, behind our diversity of methods, is a fairly important set of philosophical differences.
I am lucky, I find myself more excited about the times in CS right now because I can’t help thinking how amazing it is that this discipline of machine has given rise to a machine that now can take us on new voyages of discovery. But, I’ve long had a passion for both consumption and production, so perhaps I was always bound to find this particular juncture more compelling.