What makes software developers great cross-disciplinary collaborators?
My former Ph.D. student Paul Li wrapped up a fascinating dissertation last year on software engineering expertise. A few years ago he published the first part of his dissertation on expert software engineers’ beliefs on attributes of great engineers. Today Andy Begel (pictured below) and I presented his followup work on collaborators’ views of great engineers, particularly collaborators working in other disciplines (Paul couldn’t make it to Buenos Aries, and we were happy to take his place at the ICSE 2017 CHASE workshop!).
Paul conducted 46 interviews with expert artists, writers, data scientists, design researchers, designers, electrical engineers, mechanical engineers, product planners, program managers, and service engineers across Microsoft.
The views of how software engineers need to behave to be great collaborators were surprisingly consistent. Collaborators expected developers to:
- Be experts at code, possessing knowledge about options, trade-offs, and workarounds.
- Recognize they were not experts on all aspects of the product, embracing, leveraging, and championing other forms of expertise.
- Proactively communicate constraints to help scope, innovate, and reach deadlines.
- Possess a holistic view of the team, understanding how each expertise fit together across disciplines.
When developers didn’t do these things, collaborators reported that trust eroded, communication failed, and teams missed deadlines.
Our data suggests that educating, training, and mentoring software developers should therefore be more about just mastering code, but also mastering literacy and communication with the vast forms of other forms of expertise that software engineering requires. This is a central part of how I teach software engineering.
Want to learn more? Read our peer-reviewed publication on the topic:
Paul Luo Li, Andrew J. Ko, and Andrew Begel (2017). Cross-Discipinary Perspectives on Collaborations with Software Engineers. International Workshop on Cooperative and Human Aspects of Software Engineering (CHASE), to appear.