Showing posts with label efficiency. Show all posts
Showing posts with label efficiency. Show all posts

8/30/2019

How to make yourself more efficient? - Efficient working hours

Introduction
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.

Pomodoro

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.

Organize your work - optimize your meetings

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.

Efficient communication

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.

Know your goals

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.

Know when to ask

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.

Summary


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.

4/17/2019

The rules of efficient meetings

Most developers hate meetings. They have the feeling that meetings are just waste of time. But meetings have often a purpose, they can be important. They makes sense and they have an effect on short term or on long term. I collected some points about how to make meetings in an effective way, which is also good for developers.

  1. Always have an agenda
You should have some points what you would like to talk about, so that it is clear for everyone what is the purpose of the meeting. Put it into the invitation.
  1. Invite only necessary people
    Don’t invite people, who has nothing to do with the topic. They would just waste their time.
  2. Not everyone needs to take part on the whole meeting
    It can be, that for some of the participants only 1-2 agenda points are relevant. Let them leave when their points are over.
  3. Everyone should have the right to decline the meeting
    Everyone can decide about his own priorities, so everyone should have the right to the decision to do some higher priority job instead of taking part on the meeting. So no one will have the feeling that he could spend his time much more effective.
  4. Have a meeting invitation with timeframe
    Always send out a meeting invitation with the start and the end of the meeting.
  5. Hold your timeframe
    The meeting should really happen in the timeslot when it is scheduled. Don’t be late, don’t make it longer!
  6. Follow the agenda strictly
    Follow the agenda, don’t start to talk about other random topics. If new topics are coming up schedule another meeting for them.
  7. Make meeting minutes
    Takes always notes about the meeting and send them to all participants after the meeting. With that you can make sure that everyone has the same understanding and no one will forget the content of the meeting.
  8. In case of regular meetings: if you don’t have topic, just skip the meeting
    It is really typical that the team has for example a meeting every week. And even if there’s nothing to really talk about they still have that meeting. Why? Really, why? Just skip it in that case!
  9. Pay attention on the meeting
    If you are already on the meeting pay attention on the meeting: no laptop, no phone, no e-mails!
There is one meeting which is really popular nowadays and it is a bit special, so I would like to mention it separately: this is the daily standup meeting.

The purpose of this meeting is that all team members can share his own status with the team. In theory the team should stand in a circle and each team member has maximum 2 minutes to answer 3 questions: what did you do yesterday? What do you plan for today? To you have any impediments? It sounds easy, but in practice it really often turns into detailed discussion about technical issues, which is simply not the purpose of this meeting. So my suggestion is: if any of the team members would like to reflect on the status report to the other team members just do it face to face after the daily stand up. So that you are not stealing the time of the others.

2/28/2019

Efficient home office

One big advantage of working as a software developer is the possibility of working from home. Although it is possible practically most of the companies does not allow to do it for all of their colleagues and there are also many developers who doesn’t like to work from home. The companies are usually arguing with non-trackable and not effective work and with pure communication. The developers has often also problems with the same points and they also think that is a bit depressing to work always from home.

My first experience with home office is coming from right the beginning of my career. It was the last semester of my bachelor studies. I only had to go once a week to the university, the other days I was just working on my thesis, which was a software with documentation, and next to that I was a trainee at a small company, where I was working in remote mode. I got my tasks and once a week I needed to present my results. So I had two big topics to work on from home and my time schedule was really flexible. First I thought it will be a really great time. After some weeks I realized that it is not good at all. In the morning I didn’t wake up in time, as I woke up I didn’t start to work, I rather watched some series. I started to work just right before lunch, then I got hungry soon, so I took a long lunch break. In the afternoon I tried to concentrate on working again, but most of the cases some friends just called me to go out somewhere and I could never say no for such invitations. So I went out until late, thanks for that next morning I couldn’t wake up again. Usually the day before my meeting I realised that I didn’t have any progress, so I was working all night long. Some week before the due date of my thesis I also realised that it’s not in a good shape at all, so I was working all weekends long on that. After a while I was totally stressed, because I always had the feeling that I should work. Next to that since I had a lack of experience I often faced with technical issues and since there was no one around who could help, it took me long hours to find a solution or I needed to wait until the next week meeting and in the meanwhile I was totally blocked. All things considered it was horrible.

After this experience I tried to avoid to do any home office, I was rather in the office until late or requested for a holiday if I had any issue at home. The years flied and 5 years later I found myself in a totally different situation. In the meanwhile I collected a good experience in software development, I became father and with that I also changed my lifestyle. At the company where I’m working I had sometimes chance to do home office and in the previous time I did it a lot. At the beginning I felt myself a bit uncomfortable at working from home, but it changed, now I really like to do it and I realized that I’m more effective at working from home as sitting in the office. But to achieve it there are some points to follow.

  1. Do follow a preset daily working time
    As normally you have any kind of working time what you are following (like you are arriving at 9 and working until 4.30 in the afternoon) set up your working time at home as well. You can save your daily travel time, it is already an advantage. So let’s decide that for example you start to work at 8 o’clock. Then really wake up at 7.30, have your breakfast and start at 8. Be strict to yourself. And let’s concentrate on working until the end of your working hours. Out of your working hours be also strict to yourself: do not work. That’s needed to be able to make a difference between your professional and private life.



  1. Do have your proper workplace at home
    This is the point what I couldn’t achieve in our current flat, but it is also needed. You should have a seperate working place at home, the best if it is a seperate room, where you have your desk and a proper working environment with all your needs: good chair, big monitor, sunlight, proper temperature etc. Be here during your working hours and don’t be here out of your working hours.

  2. Change your clothes

    Of course it’s nice to be whole day long in your pyjama, but in that case you have the feeling that you are at home and not at work. Change your clothes. Of course you don’t need business outfit at home, but at least take a T-Shirt and trousers.

  1. Your family needs to understand that you are not at home, you are at your workplace.

    It should be also clear for your family that you are not at home during your working hours, even is physically it is not true. You don’t have 2 minutes to help, you can not answer a short question and you shouldn’t be disturbed.

  2. Keep on communicate with your colleagues

    It is also important not to be totally isolated from your colleagues. Keep on communicating them with some chat client or through phone. It is also good to have a daily status meeting which is done through phone. With that you and your colleagues have the feeling, that you are not working alone.

  3. It is not working without enough experience

    The other thing I realized is that as a junior programmer at the beginning of my career I got stucked really often. That time just googling did not mean always a fast and working solution. But to ask a more experienced colleague helped really fast most if the cases. From home you can of course write to your colleagues or call him. You can also use a screen sharing application. But it is simple not so effective. That’s why I don’t suggest working from home for juniors.

  1. Set up your daily targets

    It is also a good strategy to set up your daily target in the morning, what you would like to achieve until the end of the day. Don’t stop working before achieving it. In this way you will be really motivated in concentrating on work. You targets should be realistic, so doable, but not to easy.

  2. Schedule your breaks

    If you are working in the office you are also taking breaks: going out to the kitchen to drink a coffee, chat with your colleagues etc. At home you also need breaks at work. I would suppose to stand up from the computer during your breaks. But you can use it as an advantage and you can do some house work during this time: bringing down the trash, do the washing up, put the clothes into the washmachine. Since these activities are much different than sitting at your computer it will be good to do them and as an advantage you won’t need to them after work.

  3. Don’t do every day home office

    Working every day from home can be really depressing on long term, which leads to losing your motivation. My suggestion is to work 2-3 days per week from home, otherwise work from the office, if it is possible. It makes you able to keep networking with people from personal and professional point of view and it is keeping some routine in your life.


How I prepared my first online course

Since long I didn't publish anything here. It's because I was busy with some other topics, but now it's time to share the result...