As someone who worked from home for a while but now work in NYC and program for a living: definitely both. Somewhat physically draining and (very) time-wasting commute, and lots of interruptions when in the zone.
However, many tasks are tens of times easier to complete when you can walk over to somebody and get an answer to your problem. I don't care how many Basecamp, VoIP installs and standups you have--trying to do the same remotely doesn't compare.