No good deed goes unpunished. When you step up to be a team player and do that grunt work, you open yourself up to getting more and more of it. Next thing you know you have to stand up for yourself or become a door mat.
In healthy environments (and yes, they do exists) good deeds are actually rewarded, not punished.
Furthermore, grunt work can be an excellent opportunity to shine. For example, you can figure out a way to automate it so that the next person who works on it (which may be you again) has to spend only a fraction of the time on it. Things like running reports or generating documents tend to lend themselves really well to automation, and a little programming ability can take you a long way.
So yeah... think twice before turning away grunt work, even if you believe that you may be given more of it in the future if you agree to take it on now.
http://www.daedtech.com/the-gravitational-force-of-wage-labo...
* Deal with difficult users or customers
* Write documentation
* Go back and forth between different stakeholders to make sure everybody is on the same page
* Make sure other developers have the right tools and equipment
Depending on the manager he could be doing this but if he doesn't the senior Dev has to do it or the project fails
I find that my estimates are generally all over the place and multiple attempts at predicting how much time it will take to complete an assignment don't converge as time passes. Even though I had seen and been given diverse tasks over the course of my work, I can not really pick a previous item of similar magnitude for reference.
In those occasions where I'm asked to provide a WAG to an executive or salesperson, I always multiply my first thought by 150-200%. Maybe even 300% if there's an external stakeholder (3rd party integration, something for a specific client, etc).
Senior devs in each of these types of companies have some skills in common and some that are particular.
The common ones, in my opinion:
* Ability to communicate with non technical folks
* Ability to estimate relatively accurately
* Willingness to do grunt work to raise team productivity
* Ability to work self sufficiently, own a big chunk of work, possibly leading small team
* Knowing when to raise an issue to higher ups
* Willingness and ability to mentor folks more junior
* Knowledge of the general software landscape for your domain, including what is buyable vs requires building
How to acquire?
* Seek mentors
* Always be learning
* Seek out folks outside of your department and learn what problems they face
* Attend conferences, technical meetups, or other online learning opportunities
* Help out
* Focus on solving problems and not on being right
Disclaimer: I have spent some time in larger orgs, but mostly as a contractor so my advice may not be applicable for those.