Do you rely on developers for critical information? Then ask yourself this: would you benefit from them being better communicators? Raise your hand if you have ever struggled through a complex explanation of a software feature, or have puzzled over a terse response to a multi-part question. Isn’t it at times like those that you wish that developers had learned, in addition to algorithms, programming languages, and logic, how to speak and write more effectively?
Well it turns out that we’re not alone. Computer science and software engineering faculties keenly recognize the value of good communication skills, and they want their undergraduates to acquire them as they earn their degrees. They know that having these skills not only make graduates more competitive in a global economy, but that cultivating them actually improves learning, engagement, and attainment of core engineering skills.
This was the context when, in June, I was invited to attend a CPATH (CISE Pathways to Revitalized Undergraduate Computing Education) workshop at NC State about "Integrating Communication Components into the Computer Science Curriculum." Supported by a three-year grant from the National Science Foundation, this specific CPATH project aspires to build curricula that enhance Computer Science and Software Engineering (CS/SE) students' technical and communication abilities. They want to do this by integrating writing, speaking, reading, and teamwork activities into instruction and assignments throughout students' four years of undergraduate study.
Achieving this would not require additional courses. Communication outcomes could be woven into the requirements of core CS/SE classes. For example, you could have students in an introductory course present the results of code and pseudocode inspections to the entire class. Students in more advanced classes could work on complex projects in teams and organize and share results. Throughout their four years, students could write papers about various topics such as data representations, programming control structures, program constructs, and object-oriented programming concepts.
The workshop that I attended brought together academic researchers from NC State and Miami University of Ohio with industry professionals from NetApp, Fidelity Investments, Microsoft, EMC, and other companies. During breakout sessions, small groups of researchers and professionals considered the most critical skills needed by CS/SE students. Among the questions that faculty asked professionals was “what communication abilities do you expect a recent CS/SE graduate to possess? “ And “which of those abilities do they generally not possess?” They also wanted to gather specific information about the kinds of teams that graduates would participate in after joining the workforce.
After those breakout sessions, each small group reported to the assembled participants. The whole group identified common themes across reports and then determined gaps between industry professionals' desires for CS/SE graduates' communication abilities and faculty-developed program-level communication outcomes.
One signficant gap identified was listening. Studies have shown that though is the communication skill we use most frequently, it is the one in which we’ve had the least training. That skill profoundly affects someone’s ability to contribute to a team and to produce a deliverable that meets a target audience’s needs. Another important gap was the ability to tailor material for the needs of a specific audience. The faculty knew that communicating to a technical audience was important. The industry professionals stressed that, after being hired, software engineering graduates would need to communicate effectively about highly technical topics to a variety of non-technical professionals.
I made a point of asking that developers be more diligent about inserting useful comments into their code. But a participant from Microsoft took issue with my point, saying that detailed comments could become a legal liability under certain circumstances. I had never thought of it that way.
The assembled faculty was going to take the data gathered during our June meeting and draft a set of learning outcomes to apply to various CS/SE classes. They planned to meet again in August to review that draft. The hope is to begin applying new learning outcomes as soon as is practical. I hope it’s not too long before rookie software engineers surprise us with their good communication skills.