Some Books to Upskill Communication For Software Engineers
Tags: books, communication
Published: 2024-06-17 14:21:39

*(Full disclosure: This post includes affiliate links which, if you click through and purchase the product, will earn me a small commission. This helps support my writing so I can keep writing helpful posts like this!)*

When we write code and build software, we're not just communicating to the computer the instructions we want it to perform. We're also communicating various intents to our future selves and our team members:

- What the system should do now, as the code available to be executed
- What the system should do in the future, as code hidden behind feature flags and other forms of prevented execution
- How we want the code to grow with the system, as architectures and design patterns

Ultimately, we are doing an awful lot of communicating in our work as developers. And "work on communication" is pretty common advice, but it's hard to find specifics. So I'd like to share 3 books I found incredibly helpful for my growth and improving my communication skills!

## The Science of Effective Communication

[The Science of Effective Communication by Ian Tuhovsky](https://amzn.to/4crQ0Zb) is a general book on communication and how it's used to build and maintain connections of all kinds. It goes over virtually all aspects of communication, from the first chapter about listening to the last chapter about interview skills. 

In between, it addresses how to keep conversations alive; how to handle discussions with high emotions; persuasion and why you shouldn't feel bad about trying to be a little persuasive; complaining; communicating with non-native speakers and hearing-impaired speakers; and a whole lot more.

Software developers spend a lot of time talking to other people: our team, our manager, their manager, the product manager, HR, recruiters, clients, and on and on. This book is full of actionable tips and ways to think about thoughtful conversations so you can improve your career, improve your relationships be it business or personal, and carry yourself with more confidence.

## Writing for Busy Readers

[Writing for Busy Readers by Todd Rogers and Jessica Lasky-fink](https://amzn.to/3VLhLGg) is specifically about writing and communicating through text and accompanying media. The advice is based on studies and real successful work by the authors in increasing outcomes for clients like schools, political parties, and enterprises. 

The main conceit of the book is that readers in today's world are *really busy*. What that means is you need to reduce the barriers of understanding your writing as much as possible, with strategies like using simple language, using layout and formatting effectively, and make your intended outcomes easy for the reader.

The easiest way for software developers to increase our [impact and visibility](https://www.pathtostaff.com/blog/20231214-visibility) is by writing. It leaves a permanent mark on the organization that says "I contributed to our body of knowledge or systems of value". Whether it be design docs, proposals, code documents, or just a Slack message asking for thoughts, writing is a critical skill to develop for developers.

The authors also offer several [free resources](https://writingforbusyreaders.com/resources/) on the book's website, so you can get a lot of benefit before buying the book as well.

## Docs for Developers

[Docs for Developers by Jared Bhatti, Sarah Corleissen, Jen Lambourne, David Nunez, Heidi Waterhouse](https://amzn.to/4c4n4Xb) is more specifically about writing documentation, but documentation is an incredible exercise in effective communication. You can't know what the right documentation to write is without knowing what your reader needs, and that's a foundation of communication.

Much like software products, documentation requires planning, drafting and revision, and evolution and maintenance. The book goes through these steps from the perspective of a fictional cuddly dog-to-human translation service called Corg.ly. It covers the pre-work, the work itself, and the continuous aspects of documentation, as well as how to include code and visual content, publishing, organization, and more.

One of the more important takeaways from this book for me was the idea that there are different kinds of documentation: tutorials, API references, glossaries, etc. It's more helpful to decide on one for each piece of documentation than to try and do multiple things with one piece. Similar to the idea of [separation of concerns](https://en.wikipedia.org/wiki/Separation_of_concerns). There's a [great talk by Daniele Procida](https://www.writethedocs.org/videos/eu/2017/the-four-kinds-of-documentation-and-why-you-need-to-understand-what-they-are-daniele-procida/) that has the same idea, but presented differently.

## Summary

Communication is an integral part of our work as software developers, and we should strive to improve our skills in communication as much as we should strive to improve our technical skills. I thought these books were all tremendously helpful, and I think if you haven't read them, you'd be doing yourself a great favor if you did!