I can honestly say that the two most intelligent programmers I have ever met are no longer programmers and not even in tech related jobs now. I try not to think about this, it makes me wonder what they figured out that I haven't.
Reading this comment just made me realize the same. The two best developers I have worked with no longer write code.
Let me tell you what it is. They were not in charge. They designed for love of the design, performance|correctness and the output. They did not design for other people. There is no joy in designing for another persons expectation based on experiences that person had with other software.
IMHO...I think that there is so much waste in the lead-up work that comes before the programmers get their hands on it that it can be very satisfying to move out into the roles that prevent that waste and help the programmers make more valuable things.