Dr. Dobb's Journal February 2004
The gap between developers and managers often leads to communication problems that lead to failed projects and strained relations. While many managers were developers earlier in their careers, most have grown out of touch with developers' current technologies, languages, and concerns because they have been focusing on management. Likewise, developers tend to be out of touch with management because developers are typically so focused on development that they have little time left to worry about the issues that most concern management.
In this article, I offer developers tips for communicating with your managers, focusing on how you can present technical concerns in such a way that managers are best able to understand and address those concerns.
Put yourself in your manager's shoes and try to determine what he or she really wants to hear from you. The main thing any manager wants to hear is that you will deliver the promised software on time, with the expected functionality, and without serious bugs.
Unfortunately, many projects are late, lack some of the expected functionality, and/or have a significant amount of serious bugs. If you find yourself headed towards these problems, you won't be telling managers what they want to hear. Instead, you will be trying to explain why the project is behind and/or buggy. Your manager might be sympathetic, which is helpful if you are looking for a shoulder to cry on. However, if you are hoping to get whatever it is you need to meet your deadlines, you need to aim for respect, not just sympathy.
So, if you need guidance, questions answered, or new infrastructure components, how should you communicate with your manager in a way that builds respect and helps you get whatever you need to complete the project as expected? The answer really depends on what type of manager you have.
Here are some clues that you have a good manager:
Talking to this type of manager is easy. Simply explain what you are trying to do and why you are trying to do it. If you construct a good defense of your choices and leave out the excuses, good managers will guide you on the project and ensure that you have the supporting infrastructure needed to complete it successfully. The manager should be responsible for providing the infrastructure that supports your role within the group as well as the proper group behavior; managers need this infrastructure to assess the group's productivity.
Here are some clues that you have a bad manager:
Communicating with bad managers is difficult. When you need to talk to them, the best strategy is to be a politician. Always provide some information that they can use to look better in the eyes of higher management. If you need to ask for assistance or for infrastructure components, do not be overly optimistic. These managers do not have a deep enough understanding of what you are doing to offer you much valuable guidance; you are likely to get more useful advice from fellow developers than from these managers. Moreover, these managers will make it very difficult for you to improve your infrastructure. They are typically afraid to ask their superiors for additional funding, and will demand that you produce insane amounts of product evaluation paperwork before they even consider asking for the purchase approval. If you have your heart set on getting new software, hardware, or training, be sure to collect volumes of literature about it and set aside a fair amount of time for evaluation.
If you have a bad manager, you might find some consolation in the fact that these managers typically do not last long. It is very possible that the project they manage will be delivered late, without the expected functionality, and with a lot of critical bugs. At that point, the manager is likely to be fired. However, sometimes the project developers' jobs are also in jeopardy. Just in case a new manager or higher-level manager walks in one day looking for a reason to eliminate everyone that worked on the bad manager's failed project, make sure that you are ready to communicateand provethat you have been writing good code and making adequate progress.
In most cases, your manager will probably be neither the saint nor devil I just described, but rather have some traits of each. In this case, you can mix and match the aforementioned communication strategies as needed, and apply some general communication strategies as well.
Virtually no manager wants or needs to hear about your projects and problems in excruciating detail. The better managers do not need this detail because they understand what you are working on, and the worse managers typically would not understand the details anyway. Moreover, all types of managers are typically pressed for time. Before you communicate with any manager, take a little time to think about the situation from a higher level and decide how to abstract the essence of your question, issue, or request.
At the same time, try to articulate what you really need to boost your performance and the entire group's performance. If you need automation, figure out why you need it and explain thisin high-level terms, of course. Do not expect that you canor shouldproduce a return-on-investment study (ROI) on every infrastructure purchase that you request. Think about return on investment in this way: Developer salaries are the highest cost in software development; so anything that makes you more productive is going to help the company get more for its money. In other words, your best ammunition for requesting a purchase is to explain how it will save you time so you can produce more code and better code. By showing your manager that you are taking the initiative to improve your productivity, you are likely to gain respect as well as unconditional support for whatever training or product you requested. For instance, consider how likely a manager would be to support a purchase request if you explained that the requested product or training would help you spend twice as much time writing code and thus be 100 percent more productive. In fact, in today's economy, being able to effectively lobby for tools that increase productivity can mean the difference between keeping your job and losing it. In this economy, the bottom line is everything to management, and managers seeking to maximize their bottom line are turning to overseas developers who are willing to develop code for significantly lower pay. If you successfully increase your productivity and widely communicate your desire to be more productive, managers will be more likely to recognize that you are giving them a good return on their investment (in your salary), and keep you on board in these unstable times.
One last tip: Never promise to meet a deadline that you know is impossible, then postpone the delivery for hours, hoping that the product will miraculously be finished and flawless. If you have a lot of bugs or if you are behind on implementing functionality, the best thing to do is identify why you are off track, think of some possible solutions, then approach your manager as soon as possible. You will save your manager from the unpleasant job of making a last minute announcement that the product is not going to be ready after all. Moreover, you will likely save yourself a lot of grief because most decent managers will offer you some guidance that will help you get your work back on track.
DDJ