7/26/2018

How to manage your working time?

Most of the programming tasks have a due date for yesterday, but best case until end of the day. At quite a lot of companies it is a common practise to ask you to not to go home until your task is not done or asking you to cancel your holidays because of the current work situation.
On the other hand however people thinks that programmers have no life, most of the cases it is not true. Programmers have family, hobbies, friends and need for simple having rest.
And there is something what is called work-life balance by HR people, first it can sound as bullshit, but it is very important in fact, it is very important for you.
So normally you are working on a task which has a due date. And this due date is usually earlier than it should be. What can you do?
  • Do some over hours/work on the weekend or during your holiday and finish it in time
  • Being late with your task
  • Show to your manager before starting your task that it is not possible to finish your task in time before you’re starting it
What will happen in case of the first solution: you are working when you shouldn’t. You will achieve the due date. Your manager will be satisfied and will find your next task immediately. So you can continue to work on the next day and you are loosing the time to spend with friends, family or having rest. On long term if you are doing it frequently your manager will know that you can achieve the critical tasks in time and will assign all urgent tasks to you. And this situation will happen to you more and more often. On the other hand your boss will be satisfied with you, but to be honest at most of the companies it is not honoured enough.
In case of the second option your task will be done late. Of course your boss and manager will be unsatisfied. There won’t be any feeling of success from your side. And you can block your colleagues in their work as well, since they may are waiting for you or for your inputs. It is a loose-loose situation.
The third solution it the one I would suggest to follow. For that you need to be able to estimate your tasks as precise as possible. It’s up to the company and working model who is estimating your tasks. It’s either you or one of the most experienced colleagues of you. If it’s you then it is pretty easy. Otherwise always check the estimation/planned due date before start to work on the task and if it is unrealistic for you let your manager know about that. Always inform your manager about the followings: what if a realistic due date in your view and how did you calculated it (show him all subtasks you identified and their estimations). If there is a possibility to skip any of the subtasks to make it faster (not testing a part, less documentation, less nice solutions etc.) let always mention it with advantage and disadvantages. Then it should be clear to your manager that your task won’t be done until Tuesday, only until Thursday. He can adapt his plan and you won’t block the others. And you can finish the task until Thursday without doing overhours.
Of course there are situations when it is not possible to change the plans such way, but most of the cases it is possible.
This is the way of working which turned be best for me to be successful in my work and having time for my family and friends as well.

If you have any other idea feel free to share it with us in a comment!

All the best for you!
RelaxedProgrammer

7/20/2018

How could your manager understand your technical issues?

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?
  1. You need to bring some technical details, but not too much.
  2. You need to describe the technical background, even if it should be trivial for a developer.
  3. You need to make the feeling to you manager that you are sure that he/she is understanding every technical details, like:
  4. “I’m sure you understand that if you are not deallocating the memory it will cause memory leak”
  5. Always start with a short introduction: what you code shall do by requirements, what is it doing know, what is the missing functionality.
  6. Always mention the estimated time as well what you need to fix the issue.
  7. 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.
  8. Talk slow and calm, look confident.
An example:
“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?

Best regards,
RelaxedProgrammer

7/19/2018

Introduction

Welcome to my blog. In this first post I would like to introduce myself and the purpose of this blog.
So I’m a software developer with some years of experience and I just realised during my work that as a software developer you need some special knowledge next to your technical skills to be able to achieve your professional goals: better projects, better position, better salary, better company etc. But this knowledge is not really collected anywhere, you need to collect it for your self during your work. What kind of knowledge do I mean? Let me mention some examples:
  • How to give a clear understanding to your manager about your work?
  • How to show to your boss about that you are a good developer?
  • How to get a good job?
  • How to ensure your teammates about your technical proposals?
  • How to avoid stress and over hours?

I know there are several people who have wonderful proposals (team managers, life coaches, trainers, HR colleagues), but based on my experienced you can not always use their ideas easily.
So my idea would be to set up a platform where we, programmers can share our non-technical experience with each other. I’m really looking forward for your comments, experiences and questions. Feel free to share this page to get more audience and more experience. I’m open for new ideas of topics as well.
But don’t forget one point: what I’m writing here is just my opinion based on my experiences, nothing else. Maybe sometimes you will disagree, feel free to share your point of view. Maybe you will think I’m an idiot: in this case sorry for stealing your time. I hope you will enjoy my blog! RelaxedProgrammer

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