Most software managers began their careers as software developers. They either had some ambition, some skill recognized as good management material, or were in the right place at the right time. No one I know who manages software was trained to be a manager.
Managers serve multiple masters: The customer, the company, their own manager, their employees, and themselvesand each will tell you what they mean by a good manager. You are stuck with balancing those efforts.
For instance, when I was interviewing for the job of running Solaris Engineering at Sun Microsystems, I asked my interviewers what they would consider success. The (somewhat strange) answer I got was that if they were better managed, it would be a success.
So here's what we have so far: You haven't been, and probably won't be, trained for a job that has too many bosses who either don't know what they want or want everything! What do you do? For starters, you go back to basicsexecution, communication, and empowerment.
Execution
In the end, you, your team, and your organization will be rewarded if you develop and release software that customers need in a timely fashion. This is what I label as "execution."
Here are 10 questions involving execution that let you grade yourself:
- Do you have your customer's requirements?
- Do you have an approved budget?
- Do you have an approved roadmap?
- Do you have an approved schedule?
- Are you delivering the product on time?
- Do you hire developers in a timely fashion?
- Is your team capable of dealing with change?
- Are you capable of keeping your team focused and resisting change?
- Do your customers encounter a lot of quality issues with released products?
- Do you and your team measure how well you do your work on a regular basis to find ways to improve?
Someone once asked me what they should do when management wants something that is unreasonable or impossible. My answer had two parts: First you must ensure that management is informed and understands that this is unreasonable or impossible, and second, you must decide if you can disagree and commit. If you can't, then you need to examine your own career options.
While the second and more dramatic answer may have caught your attention, it is the first answer that leads us to the next basic skillcommunication.