This is a book I'm writing about how to communicate well as a software engineer. Doing so has helped me build clean, maintainable software in the midst of ambiguous, fast-changing product requirements.
Most books I've read on clean code and software architecture have assumed a set of static, unambiguous requirements, which in my experience never happens in real life. My hope with this book is to contribute back what I've learned trying to marry these principles with what working as a SWE is like in practice.
This book is a very early draft but I'm working on it in the open and making it freely available to read and modify in the spirit of both fast feedback and open-source software, which inspired me to pursue coding as a career in the first place.