I work at a large company where technical people fall roughly in one of these categories: 


A developer on a scrum team who develops for a single product and maybe works with other teams that are closely related to the product. 
An architect who is more of a consultant on multiple teams (5-6) and tries to recognize commonalities between team efforts that could be abstracted into libraries (architects do not write the library code, however). This architect also attends many meetings with management and attempts to set technical direction.


In my company the architect role is where most technical people move into as the next step in their career. 

My questions are: Do most companies work such a way that their highest paid technical people are far removed from writing code? Is this a natural tendency for a developer's career? Can a developer have it all (code AND set direction?)


  Do most companies work such a way that their highest paid technical people are far removed from writing code?


Most bad companies. There is a natural trend for more responsibility to involve less code writing and more focus on other aspects of software development. That said, it's very common for technical folks to lose touch with what is common/best/possible if they don't spend time actually coding. This has a disasterous effect on the company.


  Is this a natural tendency for a developer's career?


Yes. In the end, a person can help the product a lot more by mentoring, coordinating, designing, knowing the problem domain and doing other software development tasks than they can by writing code. And in all honesty, having good leadership or design skills are far more rare (read: valuable) than code-writing skill.


  Can a developer have it all (code AND set direction?)


Absolutely. Though you need to realise that the amount of coding will go down. You just can't do those other valuable things well if you spend 80% of the day heads down in an IDE.

The other option that happens is that of the 'principal engineer' for lack of a better term. Some developers are very specialized. I worked with someone for example who wrote gigabit ethernet drivers for Linux. We needed him to do that sort of work for us, and since only a handful of people could do that job well, he made piles of cash in addition to writing code as the majority of his day.

Most companies don't need that sort of specialization though. They're just plumbing data together or making yet another website/mobileapp.
