Estimation and Management for new Software Engineers

We all have faces bosses in our life. For programmers, a boss is a real pain in the ass. And do you know why?

They need the work on their whim and they need it now. They think writing a code is a mechanical task – you put two things together and it should work. And you, a software developer, know that it will not work.

Your boss can give you any task which is out of your job description. When you ask for training –your boss will happily deny you. Or you are afraid to ask for a personal free time so that you develop new skills.

But your boss always expects an out of the box performance from you. And there is a long list of expectation out of you. Interacting with your boss is a painful experience and:

It is more painful if you are a junior!

If you are a junior then it is more difficult to convince your boss. You have not won the battles for your boss. You have not stayed nights for completing a project whose completion date is long past.

In short, you have not saved your boss. You don’t know about the culture of your workplace. You have no experience. So it is more painful for you than a senior developer to bear an unbearable boss.

So, the question arrives that what you can do to do better and enjoy your life?

First of all, you cannot disrespect them-even if you wanted to! Because you know that they are everywhere. If you quit–there is a possibility that you will find a worse boss.

Secondly, you wanted to protect yourself.

Not because they have the authority to fire us. But because you wanted to master the skill of handling bad boss so that anywhere in the world with any kind of boss you can live your life the way you want it.

Following are more reason to conquer your boss:

a) We want to show-off. We want to gain the respect of our boss. We want to be someone whom our boss depends on.

b) We want a promotion or raise. We want it now so that we can get luxuries.

In this article, I will share how can you manage your boss by solving his or her two main problems(out of many).

The first problem: have you ever encountered your boss asking for the estimates on the fly. Giving you a task and then immediately ask you for how much time will it take to complete it. I bet you have faced such situation.

Second problem: I will tell you how can you manage a boss who is on your tail and interfering at each step i.e. “a micromanaging boss”.

Solution for First Problem: Use Estimation Techniques

I always encounter this situation when you have finalized the discussion of a major change in the software code. You and your boss are both agrees upon a common set of problems. You are looking at each other with confidence and agreement and then suddenly your boss asked:

“How much time will it take to complete this task?”

This sound like a genuine question from every perspective. There is a project for which your boss is responsible and he or she has to know about the amount of time it will take to complete the task so that your boss can predict the timelines for product delivery.

And it is not possible that you are assigned a task and your boss can forget about it-until later you told your boss about the success story.

Hence giving estimates seems logical. But there is a little problem–

They need the estimates now!

They are asking the estimates on the fly!

In my software development career, I always pondered that how can I solve this problem. How can I as a software engineer give my boss the estimate that is undebatable?

Estimation is itself a complex field and has failed scientists in a simple looking and straightforward businesses like civil construction.

In software development, estimation is more difficult due to unseen complexity or uncertainty in the requirements at the initial stages of the development. l have covered the basics of estimation and two great examples of software development here.

But here I will discuss three principles that you can use now to give estimates to your boss:

1)Never Give Estimates on the fly

Never guess the time to complete the task. It does not matter how hard or pressing the situation for you is. Always ask for the time to do the estimation work.

When task discussion is ended and you are asked to give an estimate you can say “let me look into this and I will be back to you within _____ minutes via phone or email”.

Even 5 minutes of estimation will beat your best guesses. Hence never guess and always ask for the time. It will look scary at the start but eventually, your boss will understand.

Also, don’t forget to reply your boss with the estimates.

2)Divide and Conquer Count

The easiest way to give an estimate is to divide the task into subtasks. This sub-task can be the steps that you need to perform in order to complete the task. Or modules that can be developed independently.

For example, If you have to develop three web pages then try to compute the time required to complete 1 web page. That is trying to divide the work in modules.

After that, write two values. One value for the minimum time that one sub-task or one module will take and one for the maximum time. It is easier to estimate small task or module.

Add the minimum values separately then add the maximum values separately. Now report these values to your boss.

Estimation Pcitures

Here you have done two things: First you gave your boss the range. That is the minimum time and maximum it will take to complete the task. Never give the point estimate always give your boss the range.

Secondly, you distributed the estimation error across many tasks/modules. This will reduce your overall error in the final estimation. Hence divide and then count is one of the best techniques that you can use to give software estimates.

3)Use your own historical data

One of my bosses used to ask for the amount of time for each task assigned to me. I happily gave him the estimate. My boss noted it down and I know that the boss never follow-up.

Whenever my boss assigned me next task, the boss never checked the amount of time that I estimated for the previous task. So, it is easier for me to give nonsense estimates.

But you should never do it. Keeping track of your past estimates is a very good habit for two reasons. First one is obvious, you will know how much time you have estimated for a particular type of task and how much time it actually takes.

A second reason is you can use your own past estimates(i.e your own historical data) to calibrate some advanced techniques of estimation. Hence using your own historical data will improve the accuracy of your estimates.

So, by now you know that I write about good programming and design good practices and how can you up your game at your workplace or in your team. This is all by sharing my experiences and hard learned lesson by myself.

Talking of hard core lessons. Another important area where you may have struggled is the micro-managing boss.

Solution for Second Problem: Management for Micromanaging Boss

Nothing is more painful than a work wasted on your boss whim. Your boss may tell you to do things which he knows nothing about. He will tell you exact steps.

I have been in the same pit. I have faced the micromanaging -self-satisfying boss. I always think “I m the developer and please let me do my job”.

Boss for young Engineers

I don’t want my boss to sit with me and tell me everything. While everything my boss has is just an idea and the underlying needs to show off.

And in your heart, you will be telling yourself- “What!. This is not possible. This will not solve the problem but only delay the solution.”

I have done three things to minimize the negative effects of the boss who is always on your tail:

1) Use the one minute manager solution

In the book the one minute manager the author discusses the one-minute goals. Getting very clear on the objective and the end result is the core thesis of the one-minute goal. But since your boss is not delegating the objective to you properly so you have to work to change his attitude.

Most effective way is always ask your boss to discuss what your boss “wants”. Try to find out what are your boss priorities by either directly asking your boss or any other senior person.

Once you identified(by any means) your boss priorities then you should over-deliver. This is needed to win his or her trust.

At first, your boss will be adamant. He or she will hesitate but once you gain his trust you can have the flexibility to work out on your goals and then deliver them.

Remember trust is important and the hardest to achieve. So work on that, once you have your boss trust, your boss will believe that you are working on his or her priorities and will let you do the tasks your way.

2)Define your own time of reporting

You should define your own time of reporting. If your boss calls you up every minute then it is so hard to focus on your programming tasks.

You know programming is mostly a thinking job and if you are getting disturbed every minute you will lose the concentration and hours of work.

Ideally, reporting time should be once per week. But if you cannot achieve this (it means frequent calls or emails) then it must be once in a day. In that time(15-30 minutes) you can write emails or make calls about the status of your work.

3)Shrink the meeting size to 15 minutes

A meeting is a tool used by our bosses to tell us their stories. They tell you the fine details of your work in meetings. Hence if you want to get rid of micromanaging boss then I suggest you should avoid meetings.

Try to find out the excuses to get out of meetings. Make a list and see what works. The most helpful excuse that worked for me is:

After 15 minutes of the meeting, I said: “I am in the middle of something on project X- can I go now?”.

Or at many occasions, if I know that meeting is going to take more than 15 minutes because there are 5+ people in the meeting then I try to join the meeting late. This is with the intention that if they need me they will call me.

Guess what, when they really need me they call me. And that happens 10% of the time.

When I was a junior I was very fond of attending meetings. It feels important. You get to know what is going on around and you think you will get the picture.

After a few years, I found out that meetings are usually are a waste of time. There are guidelines for conducting good meetings. Like setting agendas, taking minutes and others. But nobody follows them.

As a junior developer, you don’t have the authority to set the meetings template. But you can follow avoidance techniques mentioned above to avoid meetings.

Hence avoiding meetings is one way you can get rid of your boss telling you minute details of your job in an infinite loop.

Your Stories

So, these are the techniques I used to perform better in my office. You may find them helpful. Your problems may be different. More painful or less painful.

So, what are your problems as a programmer that you face in your work environment? What are you doing to solve them? Reply me via email or comment here.

I read every comment.