Showing posts with label motivation. Show all posts
Showing posts with label motivation. Show all posts

8/20/2019

How to enjoy your project? - How to improve your technical skills during work?

Introduction
Independently of the project what I was working on I always had teammates who were not satisfied with the project. At most of the projects they were the majority. Their points are always the same: not challenging enough, not innovative enough, boring and the most typical point: I don’t learn anything new in this project.
After several projects I started thinking about this issue: does it mean that all projects are boring after a while? Yes, they are boring, unless you are finding your own challenges in the project. And if you can find your own challenges, you can always learn something new. So it is always up to you if your projects are boring or not. But how to make them more interesting?

How to find new challenges?

Fortunately, there are several ways to make your daily work more interesting. The main goal is to find new challenges so that you will enjoy your daily work and keep on learning something new every day. Let’s see some ideas.

Find your motivation in the project

If you are working on a project you have to know why you are doing it at all? Will that project to help people in their daily life? Will it make the world a better place? Will it make life easier? Will it make people happier?  Is is saving the environment? You have to find your motivation and keep it always in front of your eyes. You need to believe that you are working on something useful. That will make your daily work much better.
For example, during my work with driving assistance systems my motivation is to make driving possible for people who couldn’t drive otherwise due to health issues and to increase accidents on the roads.

Find new responsibilities

For most people it is motivating to feel themselves responsible for something. But it is also important to find responsibilities which are matching with your knowledge and interest. It must not be something too complicated. For example you can be responsible for reviewing the code of others, to support technical job interviews, to participate in project planning in tracking, to coordinate testing activities, to mentor the new team members, to integrate the code or to act as a software architect. Your responsibility can be also more project specific, like being responsible for the communication with the customer or being responsible for on software feature or component.
If you are having the right level of responsibility that will keep you motivated and it is giving the opportunity to help a lot. But pay attention: too much responsibility is making you stressful which destroys your motivation.
It is also important that you can also find a new responsibility for yourself. Just start to do new things during your daily work and with time you will become responsible for that thing.

Learn new technologies

Learning is very important in the life of the programmers. It is making you motivated and it is also required to stay up-to-date to keep your value on the market. So if you are working on a project where your colleagues are using a solution which you don’t know, just take your time to understand it. Don’t repeat always the same solution, always check for alternatives and if you find one, even if you don’t know it in details, try to understand and use it.
Always try to use the newest technologies: if there’s a new library which solves your problem just use it. Check always the solutions of your team mates: for sure you can learn something new from them. Keep on searching for topics to learn and take the time to learn them.

Find things to be improved

Things are never perfect. That’s true for your process, for your software design, for your code quality, for your testing strategy and for your teamwork as well. Find always things to be improved, point them out and try to make them better. By doing it you can learn a lot and if you are handling it in a positive way it can also motivate you.

How to improve your daily work on the project?

These were the high level ideas. Let’s see some concrete examples of what you can do.

Better code quality

Code quality is a subjective topic, but it always could be better. Keep on doing some refactoring on the codebase to make it more readable. To work with a nice code is always more motivating than working in the middle of chaos. You can also improve the process to ensure a higher quality of code: do regular code review, do pair programming, improve your coding guideline or setup a static code analyser tool.

More teamwork

Teamwork is challenging. Anyway most programmers like to sit alone in front of your computer with a headset on their ears and listening to some music.
So doing pair of mob programming is moving them out of their comfort zone.
But that’s exactly why it is making your alldays more colorful and more challenging. You can learn a lot from each other. Not only technically, but you can also improve your interpersonal skills: how to present your ideas, how to communicate with your colleagues and how to handle your anger. Not easy, but challenging. And it can be a motivation factor as well on long term.

Automate boring parts

Most projects have some parts which could be done easier and faster by some automation. It can be a part of testing, integration of just the generation of a part of the code (like getter functions, easy conversation functions etc.). Try to identify these parts of your project and automate them. For this purpose you can use some pre-implemented tools or any scripting language (like Python). You can learn a lot by doing it and at the same time you are eliminating the boring part of the work. So two points for your motivation.

How to motivate your team members?

You are behaving just like the people around you. If your teammates are demotivated that can destroy your motivation very fast. So it is also your responsibility to motivate your team. By doing it you are not only helping them but even for yourself. There’s nothing worse than working in a demotivating environment.
You can use the above mentioned points to motivate them: help them to find new responsibilities or things to be improved. Try to understand what motivates them the most and try to find the most fitting tasks for them.

Summary


As you can see, you need to do your daily project work anyway and it is much better for you if you are motivated in the meanwhile. Luckily you can do a lot to improve your motivation. Just do them and be a happier developer.

7/18/2019

Motivation and developers - what is in the background?

Introduction
Most of the software companies are suffering from the high fluctuation of their employees. It makes them big difficulties and their are losing a really huge amount of money on recruiting constantly new people and ramping them up.
On the other hand it is also bad for the developers if they can not find a place for themselves where they are  feeling comfortable.
So the situation seems to be bad for everyone, but as for now there’s no solution for that.
Of course I also can not solve it, but I took some effort to analyze the situation a bit to have a picture about this whole process.
There are of course different people, different situations and different decisions which are not covered by my model, but I tried to cover the most typical career paths.
The purpose of this analysis is to help for the developers to find their optimal place as fast as possible and to help the employers to keep their employees.
It was prepared based on my own experiences, but I am interested in other opinions as well.

The model

I just prepared a short state diagram to have a graphical overview of my model.




If you start to work at a new place (mostly new company) you will start as a novice. This covers the first weeks and months. This is about introducing yourself and exploring your new place. In this period you are having the first contact with the team, with your new boss and with your new customers, you have to show your best side. On the other hand, you need to understand the working process and the technical background of your new project and achieve your first tasks. You need to prove that you are good enough to work there.

This stage can end up in three different ways.
The first one that you or your boss decides to not continue your work there. It can happen either if you are not fitting well to the team or to the project or if the workplace does not satisfy your expectations, so you decide to leave.
Otherwise you are staying at the company. But it makes a big difference in which way you are doing it. The first way is that your boss has the impression that you are better than expected. In this case you will be in focus and you will get several opportunities to grow (new responsibilities, new roles, etc.), but this means of course also higher expectations against you. If you are accepting this challenge you are becoming a rising star: being always in focus, getting new challenges and good career opportunities for the future. There are such people in each and every organisation who are reaching new levels of the hierarchy pretty fast. But this status also has a dark side: most of the cases you will irritate your co-workers who are working there already for several years and now having such opportunities.

But it also can be that you are “just” fulfilling the expectations and you are becoming a totally average “grey” co-worker. You are part of the team, you are contributing, but you are not really stepping further in this stage of your career. It is also fine for a while, since you can learn a lot during the first period and you can feel the lack of high responsibilities. There’s sometimes opportunity to change from this state to be a rising star, but it is not typical. Usually it only happens if something is happening with the current rising star (changing to another place etc.).


After sometime you are changing your state again, for some people it is coming sooner, for others it is coming later. Being a rising star is exhausting on long term and the magic of chilling as a grey co-worker also does not take forever.
From now on there are two opportunities again: finding your comfort zone or becoming unsatisfied. And the best part, that the same is happening both with the rising star and with the grey co-worker.
As rising star you will grow until a while, but once you will reach the state when you feel that it would be uncomfortable for you to take over higher responsibilities. For some people it is a position of leading a small project team, for others it is a CEO position, it is up to your personality. In the ideal case you can keep this position for you which makes you really happy, so that you can just work from your comfort zone in the next decades.

But it also happens (unfortunately really often) that you are not reaching this state, because always more and more responsibility is pushed on you (you can keep the one which is comfortable for you), you don’t agree with the direction of the company or your salary is not following your new roles and responsibilities. Of course there’s several additional potential reasons. In this case you are becoming an unsatisfied employee.

As a grey co-worker you also have these two options: finding your comfort zone, or becoming unsatisfied. There are several people who don’t want to have high responsibilities, they just would like to do a job, which is kind of OK for them and don’t make much stress on work. If such persons think that their place in comfortable (salary is acceptable, the project is fulfilling their expectations, there a good work-life balance) then they are finding their comfort zone as an average developer. They are usually the one who are living a stressful and well-balanced life, their are doing their tasks, but nothing more and they are happy with that.
But if the average developer would like to reach more (getting higher responsibilities etc.), but their doesn’t have a chance for that they will become unsatisfied as well. It can also happen if other conditions are not optimal (salary, work environment, work-life balance etc.). It is important to mention that each developer needs different kind of motivation. For some of them work-life balance is very important, for others it is more important to have interesting projects etc.

As a boss (team manager etc.) you need to know your employees and their motivation of work. You also need to understand in which state they are in their career and what is their future expectation. If it is so you can set up actions which can keep your employees at the company.
Pay attention: if the circumstance is changing it possible that employees from the comfort zone are changing to be unsatisfied and it is also possible to happen in the other way around. But this is unfortunately not so typical.

From being an unsatisfied employee there’s a highway to burn out. Burn out is bad for both parties: developers with burn out are depressive, demotived and not effective. They are just making the team slower and they are suffering at going to work day by day. From burn out there’s no way back. If you reached this state the best what you can do is to change company as soon as possible. But it is better to do this step before reaching the burn out state.

After leaving the company you need to do a restart at a new place and it will be pretty clear more difficult then your start at your previous place: you are older, you are having less motivation, you would like to reach everything faster what is mostly not possible.

What are the consequences for developers?

First of all you need to decide what is the position what would make you satisfied. Maybe you can figure out at the beginning that you are pretty happy as a simple developer without high responsibilities. In this case you have an easier way to your comfort zone.

Work during your first week and months based on that: if you don’t want to be a rising star just try to do the same level as the others, otherwise do your best. If at the end of this period you can already see that it won’t work at all at the company don’t hesitate to leave, instead of reaching the burn out state very fast.

If you are becoming a rising star try to keep a balance and not to grow to fast, because then you are losing the chance of reaching your comfort zone. And the most difficult: tell stop in time.
If you are a simple “grey” developer just do what is expected: not more, not less. And try to orient yourself to a position (project, topic etc.) which makes you happy.

If you are grey developer you still have some chance to become a rising star if you want. In this case just try to do your best and be patient.
If you reached your comfort zone try to keep it, try to avoid changes which can bring you out from this state.

If you are becoming unsatisfied let’s figure out if you still see any chance to find your comfort zone. You can talk about that to your boss, you can evaluate the opportunities. But if you see too low chance for that: change company before it is too late and don’t waste your time!

What are the consequences for employers?

As a boss (team manager, team leader etc.) you need to protect your employees from reaching the burn out state. It is even better if they are not reaching the unsatisfied state, but from that state there’s still a way back. If you find any of your employees in unsatisfied state support them to find their comfort zone to be able to keep them as a valuable long term employee.
Next to your rising stars, always pay attention also on your “grey” developers, understand their goals and support them to reach it.

If your rising stars are telling “No” accept their decision, it is very important!
And maybe one last point: if you can see at new colleagues that it won’t work at all, just resign them as soon as possible, otherwise both of you will have a lot of difficulties. Sooner is always better in such situations.

Do you agree with these points? Or you have other experiences? Don’t hesitate to share them!

5/10/2019

16 points which motivates programmers

For programmers motivation is really important. It can make their effectivity much higher and it can make them loyal to the company. That means motivation is money. Motivating programmers also costs money, but it is done properly then it makes more benefit on long term. There are things which are difficult to change: topic of the project, due dates etc. But there are several things which are easy to change, several of them does not cost anything. This point is not only for managers, who have usually the power to change these things, it is also for developers to make initiative or to be able to choose the best work environment for themselves. You need to take into account, that motivation is like health: if it is there no one realizes it, but if there’s a lack of that it generates terrible issues. Let’s see the points

  1. Regular feedback session
    Everyone need a feedback about his job, even if it is good and even if it is bad. It simple makes it feel that it is important what they are doing and suggestions about how to make it better are always welcomed. Try always give positive and negative points in the same time, not only one of them. As a programmer you can ask your manager for a feedback session any time. It costs nothing, but some short time.



  1. Doable goals

    It is nice to set some goals for the developers: learn a new technology, reach project goals, make the development more effective (for example by creating tools). It is important that it should be doable inside the given time frame without a lot of stress. The topic of the goal should be something which is also wanted by the developer, that’s what is making the motivation. At some companies there’s a certain time frame every month to work on such topics. If your manager is not  cooperating in such activities you can set up such goals for yourself. It cost nothing but some short time.



  1. Opportunity for trainings
    A programmer needs to learn always about new technologies, soft skills etc. The working environment need to support it by providing trainings, books, e-learning courses etc. It has some costs but it has also a lot of benefits. Costs can be kept low by organising the trainings internally held by more experienced colleagues of the company. You as a developer can always offer the do such trainings for the team and handle all these trainings as an opportunity to learn something new.
  2. The freedom to choose the trainings
    It is also important that the developer needs to have the freedom the decide what he wants to learn and which trainings he want to attend. To push someone to a training is never a good idea.

  3. Flexibility in work place and hours

    For most of the working models home office and flexible working hours are total doable with some limitations (core hours, maximum allowed of home office days/week etc.). And the best: it costs nothing. Let the developers live with these opportunities.



  1. Career opportunities
    It makes a lot of developers to get new roles in the future: senior developer, software integrator, mentor of new colleagues, software architect, technical lead, team lead, project manager etc. So your environment needs to have a lot of well-defined role which are not meaning a new level in the hierarchy in all case, just some additional responsibility and give the developers to get such roles in case of fulfilling certain requirements. It costs nothing, but increases the motivation of a lot of people. It is important to know that salary and career are most of the cases not correlating. In a lot of cases being leader at a small company pays less than being a simple developer a big/better working company. It’s always up to the situation of the company.
  2. Opportunity to change between projects
    To work always on the same project can be boring. Let’s give the opportunity to the developers to change project if they want to change.

  3. Free fruits and coffee
    It costs less than 1% of the salaries, but it makes developers much happier if they have free fruit, coffee, tee etc. in the kitchen. Then why not?
  4. Proper technical environment
    It makes people really demotivating if you are always need to wait because of your slow computer, your build is also failing due to a buggy build system, it in uncomfortable to work because of too small display or simple having a slow internet connection. Always try to avoid all such issues to keep the team motivated.
  5. Good IT support
    It is making developers mad if they are wasting too much time with solving IT issues: install programs, setup printers, configure the network etc. Let’s have a proper IT team who can overtake all of these tasks.
  6. Team events
    Every team needs sometimes team events when they can get known each other better. It is always making them motivated. And the best: at a point they will anyway start to talk about work. So let’s organise such events. You can organise such events for your team as a developer as well.
  7. Competitive salary
    Of course salary is also important. More is better, but what is important: it shouldn’t be much less than the market average with the specific skill set. Because in that case people will leave even if everything else is fine.

  8. Freedom
    Give as much freedom to the developers as possible. It makes them use their creativity and it will make a lot of benefits on long term.
  9. Challenging projects
It is of course important for everyone on which project they are working on. The main goal here is that the project should be challenging. A project which is challenging for one programmer is not necessarily challenging for an other one. It is something to pay attention at resource allocation.
  1. Modern technologies
Try to avoid the usage of technologies from the stone age. Try to always use the newest version of tools and languages.
  1. Clean source code
    Everyone hates to work with spaghetti code. So keep your codebase clean to keep the developers motivated.

After finishing this list I realized that this list is also good to evaluate workplaces and opportunities. So before starting somewhere try to get information about these points and it can help you to make the right decision.

What is motivating you as a programmer? Did I miss something?

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