Programming is the ultimate exercise in technical communication, even if we remove the aspect of communicating about the software to other programmers or non-programmers. It's not just communicating to the machine. The architecture, organization, whitespace, naming, it's all about technical communication.