The job is to write code, which could be done from anywhere (home, coffee shop, on the train, at the beach). The other stuff like collaboration, meetings, architectural discussions, etc., could be done virtually or scheduled for, say once a week. The benefit of a few hallway discussions is far outweighed by the 10+ hours per week spent commuting to the office.
Or my current position which is to develop the in house database, in the language if my choosing. Get to experiment with new technologies. Design it all myself (so no one to blame if it goes badly).
I would be better paid in the first job, but its way less interesting.
Eh, this is kind of what I was getting at. This view is insanely simplistic. Outside of writing code I feel like people make contributions to the product in discussions, train their more junior peers, interview prospective new team members, do a code review for someone else, etc. The job is not to just write code. This is my point. If you see it that way, you're looking at it the wrong way.
Here's what i did last week excluding bureaucracy and writing code. Talking to people to get requirements. Mentoring junior engineers. Discussing solutions with colleagues, code reviews, spec writing, spec review.
The spec writing is expressed as commits to files (we use a wiki) and some of the rest could be expressed as commits to something but bandwidth would be lowered converting it to text