If you want to grow as a software developer you need to have good time management skills. Unfortunately this whole business is a race with time. All projects needs to be done as fast as possible. Next to that there are always new technologies which you need to learn to stay up to date. In such an environment slow programmers have no chance. I also knew several developers who were technically good, but they were mega-slow. Unfortunately they couldn’t do a nice programming career.
Of course you can do more by working longer (do overhours), but it has a huge negative effect on your private life on long turn.
So the question is: how to do the most within your working hours. I collected some ideas.
There is one famous time management technology called Pomodoro. The idea is to work always 25 minutes in one piece, when you are really concentrating on work and nothing else. And then have 5 minutes break. After four sessions (after ca. 2 hours) you can take a longer break.
At most companies it is difficult to implement it: there are meetings, your colleagues are often interrupting your work with questions etc.
But what is really important: take regular breaks. These should be real breaks when you are not sitting in front of your computer. Without breaks you are becoming less efficient.
To be a bit more practical, I think the most important thing is how you are organizing your work and meetings. The worst thing that can happen with a programmer is getting interrupted. A two minutes interrupt means at least 10 minutes loss from work: to find again what did you do before, get back to your previous ideas. It all takes time. The goal is to minimize interrupts. The most common interrupt are the followings: meetings, your colleagues asking you about something, you have to ask your colleagues about something, receiving emails or you have to go to the washroom.
You can not avoid any of these activities. What you can do is to organize them into blocks and organize also blocks when you are working. These blocks should not be too short and not too long and they should not be interrupted.
The good thing with meetings that you can plan with them: you know when they are and if you are the organiser you can decide when they should be. In that case I suggest to make large blocks from meetings, like organize all meetings for the same afternoon, so that you can concentrate on technical work on all the other days. On the other hand organize your working blocks always in a way that they should not be interrupted with a meeting. If between two meetings you have only a short time, like half an hour, don’t start with deep technical work, do things that you can do fast: read/answer emails, book your working hours, schedule meetings, go out to eat or to the washroom, ask your colleagues for inputs for your upcoming tasks etc.
Otherwise all these activities should be done between the technical-work blocks. Never start a technical-work block until no all inputs are clear, or any of your colleagues needs input from you. Go to the washroom and grab some water and fruit before starting such a block, so that you can minimize the chance that you are getting interrupted. Do not read your email during these blocks.
The length of such a block is up to you, you can feel how long you can concentrate.
If you are still getting interrupted by a college always ask if it is fine to help them a bit later (when your block is over).
One more trick: if you have a headset on that decreases the chances that someone starts to talk to you.
The other activity where you can lose a lot of time is the communication. If you are communicating in an unclear way or asking the wrong questions you can lose a lot of time. So before communicating try to summarize for yourself what do you already know and what information is really missing. After that find the right person and ask your questions.
If it is urgent to get the answers (it is blocking you) go and ask personally.
In every other case communicate by emails. They have two big advantages: the answer is well-documented and you can reread it any time later and they are not interrupting anyone during the communication. They can be answered when you really have time for them.
It is also important that you have to know all the time what you are doing and why. So for example if you are implementing a new function for your class you have to know why you are doing it, when will that be useful. So if you are not sure, just ask yourself: “why am I doing it?”. And if you don’t know the answer just stop doing it. You will win a lot of free time with this method.
It is also difficult to know when to ask. To ask everything and ask too early if definitely a bad practice. First try to understand things on your own, so that in the meantime you can collect information from the whole environment.
On the other hand it is also a bad practice to suffer alone days long with a task, until your colleagues next to you knows the solution by hearth. So if you are stuck, before losing too much time ask you colleagues if they have any idea about the solution. Collect all information from them and try to solve the problem alone again. If you still can’t achieve it ask again, but this time don’t let they go until the problem is not solved.
You can see that efficiency for programmers is important, but it is not trivial how to improve it. But by following these suggestions you may be improve your efficiency.