SMART goals

If you want to reach something in your life, you have to set goals. And if you do, you better set SMART goals.

It does not matter if you are a developer, a doctor or a secretary. If you do not want to live from day to day, you have to set some goals for yourself. And it is not enough to you just choose your goals, you have to be smart and you have to do it SMART. SMART is a system that helps you to set proper goals for yourself.

SMART

Your goal is smart, if it is:

  • Specific
  • Measurable
  • Achievable
  • Reasonable, Relevant
  • Time bound

Example

The best way to explain is a fitness example. It is new year’s eve. And you want to make a new-year’s resolution. Most of the people say I am a bit fat. I will loose weight. It is a great idea, let us see how it can be transformed into a smart goal:

  • Specific: Actually it is somehow specific already. I know that I am fat and want to loose some weight. I do not want to be fat any more.
  • Measurable: How much kilograms do I want to loose? I have some vision in my head of me being fit and healthy, but I do not know when I would say: ‘It is great, i  have accomplished my goal’.
  • Achievable: Back to the previous point. I do not know if I have achieved that or not because it is not really measurable.
  • Reasonable: I will not lose 20 kilograms in one week. I have to set a goal that possible.
  • Time bound: I have to decide when I want to reach that goal. I need a deadline.

Let’s make the goal SMART. What happens if I say I am a bit fat. I want to lower my weight to 85 kilograms in one year. Now I have a way better goal: I know exactly what I want to achieve, I know how much my weight will be in one year and I know that I am able to do that. It is impossible to loose 10 kilograms in a day or a week. But it’s possible if I give it a year.

Set up additional goals

There is no reason to stop after one SMART goal. If I really want to achieve my previous goal I am sure I need some additional ones:

  • In the next year, I going to fix my eating habits. I start to count my calorie income and I do not allow more than one cheating day every two weeks. I set my daily calorie limit to be able to loose 10 kilograms in one year.
  • In the next year, I start to run. I am going to run 3 times a week and I want to be able to run 5 kilometers by July and 8 kilometers by November.

Conclusion

As you can see, you can plan your life. You can set  yourself goals and I think it is worth to give you some extra time to not only plan your resolutions, but to specify them by defining goals that you are able to reach. If you do it in that way, you greatly increase your chance to obtain your goal. You know where  youe are going and how you will do that.

Fitness as a remote programmer

If you work remotely, you can have a huge advantage in your fitness. You will be invisible to your teammates. There are a lot of areas when you have to do extra work when you are invisible. But if you want to be healthy, I can give you some great tips when you work remotely.

Use Pomodoro

As I wrote before, when you work remotely, especially when you work from home, one of the most important thing that you have to do is a proper time management.

I do not want to write a lot about this technique. Basically, that means you have to focus on your work 25 minutes and take a 5-minute break. Do it two times and take a 10-minute break. Your daily goal is to finish as much Pomodoro as it possible. As John said, using Pomodoro technique is a great way to make your day more productive by increasing your focus.

You can ask the question: Ok, there is a post with the title ‘Fitness as a remote programmer’ and I read about time management. What the hell happens here?

Active your body when you have to rest your brain

The answer is simple: If you are able to manage your time, you can have some benefit in your fitness routine. First of all, most people just want to drop some weight. My recommendation is the following: Use your rest time to activate your body.

The rule is simple: Every time when you have to take a break, you have to do something. You can just stretch out your muscles, do some push ups, squats, you can wash the dishes (I recommend you to do some leg exercises during that) or just walk 10 floors up and down in the stairs. It does not matter. The main goal is to activate your body while your brain rests.

Use your lunch time smart

If you live a country that similar to my, it is a high chance to every single person do a long lunch break. Mediterranean people prefer to take a rest after lunch. I highly recommend you to do some similar but in a smart way. Find your best places near your home and get your lunch here. You were in your house all day, there will be good to see some people around you. When you have finished go back to home and take a long, 20 minutes rest in your bed. You do not have to sleep but you can rest your muscles and your mind together. Use that 20 minutes to do some meditation and to enjoy your life.

Find your best places near your home and get your lunch here. You were in your house all day, there will be good to see some people around you. Do not eat too much just enough to remove your hunger. Do not forget to enjoy your meal. When you have finished it, go back to home.

When you at home, take a long, 20 minutes rest in your bed. You do not have to sleep but you can rest your muscles and your mind together. Use that 20 minutes to do some meditation and to enjoy your life.

After your 20 minutes, wake up, start your next Pomodoro session and you will be refreshed and more focused so you will have enough energy to do your remaining tasks during the day.

Give a frame to your daily work

The worst thing that you Pomodoros just waking up and start to work. When you work in an office you have a daily routine from getting up until arriving to work. You have a similar routine when you go home at the and of the day. If you work remotely I highly recommend to you to do the same.

When I have worked from home, I woke up, cleaned my face, got my clothes on and walked about 20 minutes before work. At the end of the walk, I have arrived at my working place: my home and started to work. At the end of the day, I worked out. I just went running or did a longer walk. Or I went to do my martial art training.

Fitness rules as a remote programmer

  • Do one longer workout at the beginning or at the end of the day.
  • Have a shorter walk at the beginning of the day.
  • Use your rest time to activate your body while your brain take a break.
  • Take some rest.
  • Do not forget to walk at least 30 minutes a day.

Extra tip if you are a parent

You can let your children playing computer games during the whole day or watch tales on the television to make your life easier. My opinion is that the worst that you can do with your family.

Believe me, I know: you can burn a lot of calories just by playing with your kids. And they will be more energy than you have, there is no way to have more energy than a young child. It means there are multiple benefits playing your kids:

  • You will burn extra calories.
  • You help them to use some of their energies.
  • You spend your time with your family.

Never use your family as an excuse for your laziness

I have heard from a lot of people, ‘Sorry, I cannot work out I do not have time for fitness, I have a family with two children and I have no life’. I think it is total bullshit. Here is a video with me doing the russian twist with a living weight:

WP_20150516_001.mp4

Russian twist élősúllyal

Posted by Zsolt Miskolczi on Saturday, May 16, 2015

 

Remote code review

Code review is one of the best tools for developers to make good quality software. Code review means you show your colleagues your work, they read your code, ask questions and give you some advice about improving your work. A good review can greatly decrease the number of bugs, so if you work in the environment, where it is not common to do code reviews, I highly recommend to introduce it.

When I was a junior developer there were only one person who I was thinking about: It was me. I have written my code, sent a mail to the team to ask for a code review and went to the next item on my to do list. Today, I think this is the most inefficient way. Imagine that you get an email to review a code and you know nothing about the task, about the requirements, generally you are not familiar with the context.

Do not worry, it can be worse: what will happen if you get the same email with high priority and you have to throw away your current work and try to figure out the code that you see. You will ask a lot of questions about the task and interrupt the other side multiple times to get the picture. That is the perfect way to waste working hours of several people.

How to do code reviews

The best way to do code reviews is as follows: do everything that needs to be done to minimize the interruption of the reviewers time and help them do their work as fast as possible. I know my teammates and I almost always know who will do the code review. The reviewer has to be able to allocate time to the review, so my job is to gather all the necessary information form him/her to be able understand the task and get the picture and schedule a review meeting for the next day. The reviewer will have only one job: accept the meeting and take time only for the review. Actually I solve two problems with that:

  1. I create a time window for the review. There will be no interruption at all.
  2. Reduce the number of possible questions. The code review will be more effective.

Code review as a remote programmer

If you work remotely, you become an invisible developer. You cannot just walk to your colleague to schedule a meeting for the next day and prepare him or her to the code review next day. And you also cannot sit down next to the reviewer to help to understand your code.

Actually, we live in the 21st century so we have really great tools that can support us to do the proper communication. I give you some examples of software  I use every day and they are very useful if you want to do a code review online:

  • We use Outlook. This is a great tool. If I want to schedule a code review session, I just use the scheduling assistant, so I do not have to disturb the reviewer to find the proper time. I pick a good and short topic for the meeting, e.g.: ‘Code review – Refactor new login flow’ and I always fill the description with the necessary information that helps to understand the change.
  • JoinMe is the next great tool. I can create a personal URL that contains a single link. If you schedule a meeting in Outlook, you can add the place. As I am invisible in the office, the place will be always a JoinMe link with my personal URL. It is easy to remember and the reviewer has nothing else to do but click on the link.
  • A great diff application. Yes, I know. If we use proper version control, we have pull requests and we can check the diff easily. However, I always find some exception and for that case, I have an application installed called WinMerge and I am able to show any kind of diff with that.
  • A great diff tool for version control. Sometimes I have to check some diff in my local computer. If you have ever tried to use the embedded diff in SourceTree, you know it is terrible. I recommend to set up P4Merge. It works perfectly with SourceTree.

Human factor

As a developer it is easy to forget, but we work with human beings. That means we can have any kind of software toolset in our repertoire if we do not care about our colleagues. It is really important to know the people that we work with to be prepared for their reactions.

My examples for my boundary personality types

The easiest personality type: the silent thinker. The analyzer.

I know a guy who needs no instructions at all. He is a typical thinking machine. I put the ticket into the machine, it processes it and sends the output. That is the example when you do not have to schedule a meeting. You will receive a whole list with his findings and you can talk all of them in a short call later.

My hardest type: the important man.

I know an other guy who thinks he is the most important man in the Company. If you want to ask him you have to be prepared. If he has any question, he calls you immediately. That is the hardest type. I had a lot of painful code reviews until I could figure out the solution.

He does not need any written information at all: I just have to call him one day earlier, tell him that I really need his help and it would be great if he could help me on the next afternoon to walk through my work. After that, I tell a brief introduction about the task and tell him how much time I will need next day.

Actually, I tell him the very same information that I would write down to the meeting description for other people. I can write down the description and read that for him, it does not matter. He will never ever read the description. He just needs to know, that I need his help and he is really important to get the job done. Next day, I call him again to tell I could finish my job and I kindly ask him sacrifice some of his time for me to check my work.  He says ‘OK, show me what you have’ and we are already in the finish. He does the code review.

Handling different personality types

I only introduced two examples: the easiest person type and the hardest person type. Actually every person is different and they have different behavior. You have to analyze your colleagues and find the best way to handle each of them. Maybe it is some extra effort, but it has huge benefit and  it will help you a lot during your daily job.

Time management

It is 5:44 am and I am writing an article about time management. More precisely, about how to schedule my time. I know that sounds crazy but believe me there is a good reason for that crazy time.

At a regular 9 to 5 job

When I had a regular 9 to 5 job I had no problem with time management. I knew I have to arrive at 9 am and I will go home at 5 pm. And the reason is simple: I had an employer who have created a rule and my employer decided when I have to start and when I finish my work. It is really easy.

Freedom when work remotely

In 2012 my life has been changed. From October, I was the first in our company who was allowed to work remotely. There was no culture of remote work, there were only a few rules and I had to figure out how to do my daily job. I become the invisible programmer. Everybody knew about me but nobody saw my face.

That change meant a lot of freedom for me. It is something similar to the change when I have left the high school and started the university. In the high school I had to attend every class and when I didn’t go to the school I had to bring a medical certificate about my illness or I have been punished. Opposite of that at the university nobody cared about me. I had completely freedom of what I do and when I did it. I just had to pass my exams.

Time management problems

When somebody works remotely it is really easy to lose control over the time. Sometimes you start your work a bit later and sometimes you finish it at midnight. Or You might have a good idea at 10 pm and you sit down to your computer and start to implement it. At first hearing, it sound good but actually that means you have no idea about how many hours you actually work to your employer and when do you do that.

It causes two problems: First of all you don’t know how much your salary per hour is, because you don’t even know how many hours you have worked. Secondly, your team does not know when you are available for them. You will be the invisible programmer and nobody will know, when they can reach you. And it is horrible because you work in a team. You have to find a way to be visible for the others. And that is what I want to write about in this blog: how you can be visible, when you are the invisible programmer in your working environment.

Proper time management

I think the best solution for time management is simple: You have to define when you will work. In 2012 I had a simple solution for that: I decided to work from 10 am to 18 pm and set my alarm clock to 9:45 am and 17:55 pm. That was my crutch to be strict on my time, and I knew when I will start and I when I will finish my work.

I have decided to do that in the same way as working in the office. When I was late or I had to go out somewhere I always sent a message to my manager and my team and they knew when I was unavailable. They knew they can call me from 10 am and they knew when I went from my desk and when I will response their messages.

It was a bit easier when I had worked in the office: when I left my desk everybody saw I am not here. I am visible at the office. When I came back they could ask their questions. And I have created a rule that fakes that I am in the office so my team could trust me because my behavior was transparent for them.

My example

It is now 2017 and there were a lot of change during the last five years: I still work at the same company but the company is way larger, today I am not the only one who works remotely, I have two kids, I work on a way different project and I have my own side project so my schedule changed a lot. But I show you my daily schedule at the moment:

  • 05:00 – 07:00: Working on side project
  • 07:00 – 09:00: Family stuff: breakfast bring the older to kindergarten, etc
  • 09:00 – 11:30: Work
  • 11:30 – 12:30: Lunch break (I know I should work on that. It takes a bit more time than it needs)
  • 12:30 – 17:00: Hard work
  • 17:00 – 19:00: Family stuff
  • 19:00 – 19:40: Fitness break
  • 19:40 – 22:00: Family stuff / Learning something If I have time

That is my basic schedule. I try to keep the timing, of course I cannot be strict to that schedule all the time but I think this is a good frame for my day.