People of ACM - David S. Rosenblum

January 5, 2016

How did you become interested in software engineering as opposed to other computing disciplines? Many computing disciplines involve some level of collaboration, but software engineering is especially reliant on large groups working together towards a common goal. In your experience, are the any ways to make the group dynamics optimal, or are there any pitfalls that might derail a group effort?

In general, I love working on difficult problems, and software engineering is chock full of them. While most of my research in software engineering has focused on technical problems related to programs, models, logical properties, and other such artifacts, focusing on group dynamics is no less important and is arguably even more difficult. The success of a software engineering effort is acutely sensitive to a variety of things that are hard to control. Developer groups may be populated with gifted professionals or abrasive schmucks, collaborative colleagues or lone wolves, or all of the above. There can be strong, positive incentives driving a development effort that maximize its chances of success or progress, or there can be strongly perverse incentives with unforeseen and even disastrous consequences. As an example of the latter, I once encountered a large development organization that did their periodic software builds at a faster pace than most of the developers could keep up with. This created the incentive for the developers to put code into the current build that they knew for certain to be buggy or poorly tested, rather than wait until the next build, because they knew the build would eventually break, giving them the opportunity to replace the bad code with properly tested code by the time the build could be restarted. I still look back in amazement on that.

At the National University of Singapore, you are the Director of the Felicitous Computing Institute. Can you describe your idea of what “felicitous computing” is? Given the convergence of cloud and mobile computing, as well as the ubiquity of computing, what will a “felicitous computing” system look like in the year 2025?

Felicitous computing is computing that is felicitous-computing that is “well-chosen or suited to the circumstances” and is “pleasing and fortunate” (to quote the Oxford American Dictionary). Despite significant advances in hardware, software, networks, interfaces and so on, computers remain exasperatingly difficult to use. My own experience is not atypical, and every single day I need to approve a number of app updates on my smartphone, do a Google search to remind myself how some counterintuitive software or interface feature works, do another Google search to find some workaround for a software problem, do still another Google search to find out how to deal with a vendor's decision to ruin what used to be a perfectly functioning feature in their software, discard an incessant stream of notification popups, wait interminably for a slow or unresponsive Web page to render-the list goes on and on. I would hope that by 2025 this perpetual babysitting of the technology by users will be a thing of the past, and that computing technology will be a less invasive and more natural part of our lives.

You recently wrote a paper titled Fortune Teller: Predicting Your Career Path, where you explored the feasibility of career path prediction from social network data. What are some other potential applications of using this approach alongside social network data?

That paper represents a recent foray for me away from software engineering and into artificial intelligence, or deep learning in particular, and we are just starting to explore some of the many applications and extensions of these initial ideas. A big challenge in making computing well suited to the circumstances (i.e., felicitous) is having computing systems understand what the circumstances are in the first place, and so we have also begun to explore how learning algorithms (specifically contextual bandit algorithms) can be used to help smartphone apps make contextually relevant connections to smart devices in smart environments.

During your career, you have taught computer science at the University of California, Irvine, University College London and now at the National University of Singapore. Do you see any differences in the approaches or methodologies in teaching computer science in different countries? Why are outlets such as SIGSOFT and TOSEM important in facilitating a global community of software engineers?

The systems of higher education in the three countries where I have worked are fairly different. Singapore is in the middle in a sense, having gravitated from being more UK-like to being more US-like over the past decade and a half. The US has a strong liberal arts tradition, giving undergraduate students the chance to attain a solid grounding in a wide array of subjects outside their major. This is increasingly true of Singapore's universities, but in the UK, undergraduate students remain heavily focused on courses for their major (in part because they typically study for three-year degrees rather than four-year degrees). Interestingly, there was a recent article in the Washington Post suggesting that one way for universities to cut costs would be to design a "cheaper, better" general education component for their undergraduate degrees. So we may see the pendulum begin to shift toward the more focused UK style as cost-cutting becomes a greater concern.

Computer science tends to be taught in more or less similar fashion in all these places, but a universal difficulty in teaching computer science nowadays is that the subject has become much bigger and broader than it was when I was an undergraduate. Yet we still try to cram the full breadth of the subject into a three- or four-year degree. So it would not surprise me to see the field evolve in a decade or two to a point where computing is recognized as a collection of disciplines, just as we recognize the natural sciences to be a federation of physics, chemistry, biology, and related subjects.

Facilitating a global community of software engineers is indeed a key part of the mission of both SIGSOFT and TOSEM. TOSEM primarily serves the international research community in software engineering by virtue of being one of the leading archival journals covering the full breadth of software engineering research. SIGSOFT serves a broader community and with a much broader portfolio of services. While SIGSOFT is recognized primarily as the sponsor of the leading conferences in software engineering (which attract both researchers and practitioners), it serves the community extensively in many additional ways, through travel grants for students, awards that recognize outstanding leaders in the community, preserving and communicating the long and noble history of software engineering and the impact it has had on science and society, and providing leadership in important community efforts such as periodic updates to model computing curricula.


David S. Rosenblum was recently reappointed as Editor-in-Chief of ACM Transactions on Software Engineering and Methodology (TOSEM). He is Dean of the School of Computing and a Professor in the Department of Computer Science at the National University of Singapore. He also directs the Felicitous Computing Institute and is a faculty member of the NUS Graduate School for Integrative Sciences and Engineering.

Rosenblum was selected as a 2010 ACM Fellow for contributions to software testing and distributed systems, and for service to the software engineering community. His long association with the ACM Special Interest Group on Software Engineering (SIGSOFT) includes service as a Member-at-Large, Vice Chair, Chair and Past Chair.