You need to consider that a coder most oftne self evaluates performance as time spent writing code. If he spends 50% of his time planing, learning, comunicating, and 50% coding he will consider it a 50% performance drop.
I like 1) a lot. It is too often neglected, but understanding the domain, actually understanding what the customer really wants are very difficult tasks.
1) me understanding the domain
2) finding a well factored solution to the problems in that domain
These things are incredibly hard. Using chat is like skipping a meal or a nap. Communication isn't valuable in and of itself.