Even the most technically precise, supremely optimized, highly cohesive, loosely coupled, well documented, easily understandable, utterly attractive code can form the basis of an application that nobody wants to use, particularly if the application was developed without taking into account the needs and desires, likes and dislikes, of the intended audience.
Crafting a well-rounded software application requires something more: “soft skills”, the skills required to be able to converse with, empathize with, relate to, and work with other people, be they your customers, your coworkers, or anybody else who has a stake in the successful outcome of the software you are developing.
As David Starr of Elegant Code recently pointed out, soft skills are actual skills, and they can be learned. He points to an “effective communication pattern” that developers can learn as if they were learning a software design pattern. And there are lots ways for people to learn communication skills, with methods and techniques for:
- Establishing personal contact,
- Active listening,
- Reducing emotional tensions with the partner,
- Defending one’s opinion, position, or point of view,
- Discussing organization and administration,
- Public presentations.
I feel, however, that for such training to be truly effective, one must supplement the methods and techniques with some homework. That homework, in the context of interpersonal communications, I’ve learned to call “cultural literacy".
About 20 years ago I picked up a book called Cultural Literacy: What Every American Needs to Know. It’s still on my bookshelf, and, although much of the topical content is a bit out of date (I see there have been updates), I still refer to it occasionally to this day. From the back cover:
In this forceful manifesto Professor E. D. Hirsch, Jr., argues that children in the United States are being deprived of the basic knowledge that would enable them to function in contemporary society. They lack cultural literacy: a grasp of background information that writers and speakers assume their audience already has. Thus even if a student has basic competence in the English language, he or she has little chance of entering the American mainstream without knowing what a silicon chip is, or when the Civil War was fought.While the point of the book is to affect childhood education reform, I believe its principles can be applied to the adult workplace, too.
The back cover also asks the reader to test their cultural literacy by putting certain words or phrases into context: “absolute zero”, “sea legs”, “Billy the Kid”, “carpetbagger”, “lame duck”, “Iago”, “tabula rasa”, “Zeitgeist”, etc.
The point of the exercise being to illustrate that there are words, phrases, places, and names used in various forms of communication that bring with them extra meaning wrapped in context. Being culturally literate means being able to recognize that extra meaning and use it to communicate better.
I find myself in an interesting point in my life: not quite 40 years old, I commonly find myself working with folks a generation older than I am, and some who are a generation younger than I am. To the older ones, the terms “Watergate”, “Vietnam”, and “socialism” probably have much greater emotional impact than the same terms do for me, for various reasons. Likewise, “lol”, “friend me”, and “no stalk” have crept into the vocabulary of those much younger than me.
To communicate effectively with those around me, I feel I need to be aware of these contexts; I need to constantly work on my cultural literacy. The best developers among us are those who can understand and communicate with others, and the best communicators are those who are culturally literate.