At many organizations, the amount of time you spend programming is inversely proportional to your skill as a developer. As you become a better developer, you end up spending more time mentoring less experienced developers, fighting fires, dealing with management, dealing with customers, and dealing with other tasks that are not programming. Not only are you spending less time programming, but you're also in a state of perpetual interruption. Maybe this is good for the team in the short term, but in the long term, I am convinced this approach will cause the talent level of your organization to converge to a pretty mediocre level.
What is the best solution to this problem?