Presenting your work is as important as doing the work itself, if not more. Treat every meeting with the supervisor as a precious opportunity to practice the ability to present your idea and convince others. Spend hours to polish our logic, slides, language, pronunciation, expression, answer to possible questions, even if s/he can still find imperfections in our presentation, it'll be extremely beneficial for improving the presentation skills (especially how to face picky and senior audiences). And when possible, participating in writing the funding proposal or slides for the supervisor is also very worthwhile, instead of "wasting research time" which may be the most straightforward reaction.
When I was an intern in Facebook, I was always educated to pursue for the largest impacts towards the users. And now as a PhD student, gradually feel that impact is still the most important thing. It doesn't matter how many papers you published or in what conferences, but the impact, or how many people you've changed matters. I feel lucky in my current intern position to push the cutting-edge research to the end-users, with the potential of affecting millions of users, using the advanced skills non-PhDs may not have. One small thing to dramatically improve productivity is, mindfulness. That is, the ability to keep focusing on yourself -- not only the thing you're working at, but also yourself. The breath, the feeling, the feeling of the breeze touching your face... It's too easy to fall into the trap of mind-chatting and forgot the original goal. But jumping out of the mind and see as an observer will help much in keeping mind-chatting away. [ref]
I was always annoyed by the bugs appeared from the codes. And it turns out the bottleneck of research for me mainly lies on the implementation, especially the bugs, which makes me very uncomfortable. After discussing with friends, there may be two solutions. 1) Reuse the code, either from yourself or others. Debugging is not easy at all. And such codes already embed others' efforts in and can save you a lot of time. 2) Unit testing. Kill the bugs before they cause other more messy problems.