Talking about technical issues with managers, this is really a challenge, but it is quite often needed.
When is it needed:
- When you have a really good idea and you need an agreement from your manager to work on that.
- When you need more time to finish your task as estimated.
- When you need help to finish your task.
- When it is technically impossible to finish your task with the current requirements.
- When you need to show to your manager that you did something really great.
Why is it so challenging? However most of the managers never forget to mention that they were developers at the beginning of their carrier, practically it happened in the previous century or in their previous life. To be serious of course they were developers, but it happened several years ago, so their knowledge is not really up to date and they forgot already a lot. On the other hand mostly they were not the best developers, that’s why they have chosen the manager carrier path.
So your first option to present your issue to tell it with every details in the language of developers, like:
“There is a potential memory leak in this class, because there’s an exception thrown in the desctructor before the deallocation of memory.”
Most likely your manager won’t understand why is it a problem at all so he/she will just ask “Is it a major or a minor bug in the system?”, “Does the customer know about that?” or something similar. Additionally he/she will probably feel frustrated. I think that’s not what you want. But of course if you are talking to an other developer or to a software architect this is the right way to tell it.
Second option is to present the problem like presenting it to you grandma who has no clue about programming, like:
“My code is doing what it should, but there is a small chance that something is going wrong.” The answer will be most likely be: “A code shall work always as it should, quality is very important for us, why are you implementing bad quality code?”. And he/she will think that you are totally stupid. OK, still not the expected reaction.
So what to do know?
You need to bring some technical details, but not too much.
You need to describe the technical background, even if it should be trivial for a developer.
You need to make the feeling to you manager that you are sure that he/she is understanding every technical details, like:
“I’m sure you understand that if you are not deallocating the memory it will cause memory leak”
Always start with a short introduction: what you code shall do by requirements, what is it doing know, what is the missing functionality.
Always mention the estimated time as well what you need to fix the issue.
Always mention the benefits of your change from the view of the user, like: the software will run faster, won’t use so much memory etc.
Talk slow and calm, look confident.
“I need to implement the shopping list functionality. I estimated 8 hours for this task and until now it took 7 and a half. Right now I can add elements to the list and modify them later. I have already implemented the remove element functionality, but when I was checking my code I realised an issue. The issue is the following: an exception is thrown in the desctuctor of ListElement class if the element does not have a valid id. The problem is that the deallocation of the memory is done after this exception and you know, now there’s a risk that the memory won’t be deallocated, which causes a memory leak. To analyse and fix this issue I need one more hour. After this fix the program will work as it shall and the memory usage will be optimal.”
Of course it is not taking one hour, just 15 minutes, but now you can have a long cafe break. And you manager will have an idea about that what you are doing, will have the feeling that you are doing something important and of course you can have some extra time to fix it. Furthermore he/she will have the feeling that you are a good developer who is finding bugs, communicating them in the right way and who is confident in technical work. On a technical level he/she will understand that something was wrong at memory handling and in our case it is enough.
Maybe it won’t work with every manager, but for me it helped a lot in my carrier.
What are your experiences? Do you have any other tips?