Programming as a Team Sport
“I want my students to think about how their work fits into larger systems,” says Professor Nick Rosasco.
“For someone who is conscious of the broader impact of programming on society as a whole, it’s not enough to know that you’ve created a beautiful algorithm. You need to ask yourself, ‘Does it make sense? Is the solution appropriate and affordable for the customer?’”
Programming always happens in a human context, Professor Rosasco says. He’s intent on ensuring that his students are sensitive to that context and aware of the implications of their work.
Among Professor Rosasco’s research specialties is enterprise architecture, a kind of framework designed to manage an organization’s IT assets, processes, people, and projects and align them with its mission and vision of the future. This work prepares the organization for potentially disruptive developments, he says, minimizing “costly changes, potential maintenance pitfalls, and possible stakeholder frustration.” His work also covers areas in computer and system security.
“When it comes to security, that skill set and thinking of enterprise architecture work very well,” says Professor Rosasco. “Risks, decisions on functionality versus protection — this is also a tradeoffs analysis. Where is it appropriate to have failover capability? Where do we accept the inconvenience of not having something particularly accessible?”
Both software systems and security questions rely on big-picture thinking and depend on the ability to translate the big picture into details. In his courses, Professor Rosasco aims to inculcate in his students the habit of keeping that big picture in mind. “I want them to think about how their work fits into the larger scheme of things,” he says.
“As software developers, we need to consider those who maintain the applications we create, the other programmers whose applications interact with ours, the clients who use them, and society as a whole,” he continues. “We need to develop programming as a team sport and remember that people are trusting us to make sure the application behaves correctly.”
Professor Rosasco stresses these principles in every course he teaches. An example is his insistence that students thoroughly document their code by writing good comments — explanations added to the code that makes it easier for people to understand but which are meant to be ignored by the computer.
“During a recent class, I was displaying some code on the screen when a student said, ‘Comments!’ without prompting — pointing out that they were inadequate. By putting thinking like that at the reaction level, I know we’re getting to a professional mindset that will be permanent.”