Personally the idea of pair programming would suck out the joy of programming for me. I just can't stand the thought of not thinking through what I am doing and talking about it, is way slower than doing it in my head.
pair programming intends to prevent rushed spaghetti code and replaces it with deliberate code that was born from the shared thought of several people.
Spaghetti code is not necessarily the result of fast thinking... shallow is enough... fast or slow.
However, fast thinking is necessary for playing out different versions of a solution inside one's head and generally for analyzing the suitability and elegance of one. That process is fast, internal and generally not conductive of talking. Just concentration and discipline. Also, verbalizing a thinking process is always a lossy compression. At least for me. And it's not because I don't know how to express myself, although I might not be very good at that either. It's because verbalizing a thinking process always feels like serialization of an inherently parallel and real time process. The mouth is a shared resource here.
While you can evaluate elegance and simplicity in your head that doesn't work for edge cases and side effects. That's were talking and writing and sketching are helpful. I don't encounter much code where i can hack with the flow. Mostly the task is either utterly boring or too complex for my little head.