For developers building something, the following are often true: Tweeting != Work TalkingAboutWork != Work Blogging != Work DoingSomethingInYourIDE does not necessarily = Work DoingSomethingInGithub does not necessarily = Work ThinkingButAppearingToBeDoingNothing may = Work Meetings != Work CodeReview may = Work Testing usually = Work DeliveringBuiltSoftware(AndItsPrerequisites) = Work HackerNews definitely != Work
I used to try to "become more productive" by cutting down on some of these things to do more actual coding. But I found that my actual productivity "metrics" didn't increase. I might write more code, but I also introduce more bugs.
Developers don't give enough credit to the cerebral aspects of development. Modern dev is such that you have to do design while you're coding, you don't separate them anymore. Design requires an exceptionally fresh mind. Doing random things to decompress throughout the day keeps you in this productive state of mind and lets you proceed with fewer of the sorts of bugs that necessitate ugly rewrites/redesigns.
Another thing not taken seriously enough by devs is refactoring. It's part of the project, just because your non-technical boss/clients might not quite get why refactoring is important, doesn't mean you can just let them tell you not to. Grow a pair and spend the time and do it right.