Another part of the problem that he doesn't go into is that in programming, you have to "say" everything you want to say, and what you don't say is irrelevant. In communication, leaving out certain bits can be paramount - and the bits that you do leave out often say as much as the bits you leave in, to an astute interlocutor.
Communication is an extremely hard discipline because it requires you to both be knnowledgeable about whatever it is you have to say, being linguistically proficient, and having a good knowledge of people and psychology.
What programming to a computer and speaking to another person share in common is the ability to resolve ambiguities. Communicating effectively requires sufficient skill in listening.
I used to be big on being DRY in my communication. It bothers me when I have to repeat myself. I'm not bothered by that as much anymore. Introspecting, it used to bother me more because of two reasons:
(1) Just speaking to a person requires coming out of my shell. I didn't want to.
(2) When I do speak, I get irritated when I'm not listened-to. It doesn't feel as if the other person get what I'm saying. This frustration usually reinforces the shell and encourages behavior (1).
There is simple (though not necessarily easy) fix: learn how to mindfully listen. This is a skill that requires practice.
(1) Mindful is the opposite of mindless. The part of the brain that triggers, "wake up, this is a new experience, pay attention" is the exprience of mindful. The part of the brain that sas, "oh, seen this a million times, ignore it" is the exprience of being mindless. Driving into an unknown city for the first time and taking in everything is mindful. Zoning out on the drive back home and suddenly finding yourself at the front door without any recollection of how you got there is being mindless.
(2) Mindful listening means paying attention to the other person as if it were a new experience for the first time. You accept whatever comes in without judgement or forming any opinion. This allows you to not only take in the person's words, but also his tonality and his body language.
(3) Mindless listening is the common state of typical social interactions. It takes a lot more energy to mindfully listen than it does to listen mindlessly.
People with long-standing verbal fights usually go through the song-and-dance. They are not really listening to each other. You can often see the pattern in which they engage each other. Sometimes, you can catch one of the participant's facial expressions saying, "Geez, I know I just keep repeating this same pattern..." yet at the same time looking competely helpless in changing it.
(4) Interrupting usually means you stopped listening. Making a comment in your head even if you do not speak it out loud is a form of interruption -- you listened to the subvocalized thought in the head instead of the other person.
(5) People talking do eventually wind down.
(6) Mindfully listening is the most effective method of gaining insight about the other person. Those insights allow you to communicate much more concisely and effectively with the other person. Sometimes, you can even say something once if you have gained insight and speak at the opportune moment.
(7) Mindful listening is a skill that transfers to programming. You can use it as a form of introspection to resolve ambiguities and shape the the code. The technique of speaking to a person and programming a computer may be superficially different, however, the skill of mindfully listening is the same in both domains.
The article correctly observes that effective communication in a programming language is very concise, structured, non-repetitive, etc. ... which is quite different from effective communication among humans (imprecise, repetitive, analogy-based, etc.)
I once had a boss who was brilliant at learning other people's idiolect and then speaking it back to them. He never failed to get his point across.
The site, however gives me "Service Unavailable", which is either bad programming or bad communication.
I have experienced something similar, after rather intense stretches of coding, especially when it involved optimization or visualization, ... I sometimes find it difficult to resurface and be verbally expressive and articulate again.
Well, that sounds like healthy putting yourself in question, and healthy communication "You're wrong, because you are".
About me, I don't think I'm an awful programmer, but I see many valid points in this (mostly about the "i explained it to you once, how come you don't get it !" :P).
Quite interesting read, not especially to take as a direct truth, more to lightly smile about it. Obviously, the "better you program", the less you are open to light criticism.
I think that if the average programmer steps out once in a while to communicate with humans and keeps social momentum, he can differentiate between the two.
As a programmer, I don't talk to my friends like they're machines. I do, however, speak pragmatically and logically. I also use common sense.
I do have a little unproven, silly theory that good programmers are able to solve social conflicts easier because of good debugging skills. My life seems to be rather drama-free. I could just be full of shit, though. :)
I'd argue that the best coders express themselves to humans and computers both pretty well: with clarity and brevity, and without introducing unnecessary new concepts. And they cover their corner cases. :)