Being a programmer requires much more than the simple act of sitting at a computer looking for solutions through Stack Overflow. To be a programmer, you need a set of skills that allows you to reach these solutions in an abstract way and use the specific knowledge of programming languages to make them come true. We are problem solvers. But is this really all it takes to be a good programmer? Not necessarily.
Everything you see every day is part of a system, from the leaf of a tree to the ant that eats it. All these individual systems inhabit and interact with each other directly or indirectly. Your body is a system that works towards the goal of keeping you alive, but if your system starts to fail, everything else does too.
As a programmer, I know that we spend most of our work time sitting in front of a desk with at least one screen pointed at us. Additionally, I also know that when we are working we focus so much on our task or on meeting a set goal that we forget to give our mind and body a break. Why do I mention this? Because our average screen time is 7 hours a day and this is not the problem. The problem is what this entails: it is 7 hours of sitting in the same position, 7 hours of concentrating, 7 hours that represent approximately 30% of the entire day.
In order to solve this problem, you can follow the next suggestions:
1. For every hour of work:
Take 5 minutes of rest, and if you can’t take those 5 minutes, save them for the next work hour and take the accumulated time (in this case, 10 minutes). Never accumulate more than 10 minutes of rest; you will be procrastinating by the end of the day and you will not see the advantages of taking a break if you save 7 hours of work to rest for 35 minutes at the end of the day.
2. When you take your 5 or 10 minutes of rest:
If it is easy for you, make sure to go out and get some sun. If that’s not possible, stay where you are and find a calm place.
Breathe. This sounds obvious but it is very important. Take a 1-minute deep breathing session. It’s not hard.
Clear your mind. Do another thing unrelated to what you are currently working on. Watch a video, listen to a song, play a short video game match, whatever. But don’t think of work during your rest time.
Do some exercise or stretching. You can find a lot of those on the internet and make a daily routine.
Make sure to drink water or any other liquid to stay healthy and hydrated.
The point here is that you have to take care of your well-being. If you have a healthy body and mind, you will be able to carry out your tasks without feeling tired or overwhelmed by day-to-day problems and be a more effective programmer.
As programmers, we tend to be a bit jealous of our code and how we develop it. So it can be harsh when some of our colleagues tell us that our code is wrong or that it can be optimized in a different way than what we have. As a result, we begin to adopt a defensive attitude rather than a receptive one.
In my previous job, I was a kind of technical leader in the area I was driving, so everything I knew, in theory, was fine and there was no one to tell me otherwise. I was always proud of my code because I was pretty sure it was perfect or near perfect. All this changed when I joined FullStackLabs. The first thing they gave me was a document that said that team members review code before being merged. At first, I was intimidated by this fact, but I considered myself a good coder so I did not give it much importance. What a mistake.
When I began submitting my code for review, several times it would come back with simple errors: a comma here, an arrow function there. At first, I just took care of implementing the changes without asking anything and I felt attacked until one day I decided to ask what was the difference between my code and what they asked me to correct. The result was a small talk on optimization and standardization that allowed me to understand what I was doing wrong. I felt ashamed but at the same time very happy because I had learned something new. I was starting to play in a new league.
So my second tip to be a more effective programmer is, take a receptive attitude instead of a defensive one. If you give yourself the task of seeing the world in the eyes of different people, you can grow with the help of their knowledge, never take for granted that you know everything, defend your ideas and solutions but also listen to the solutions of others. In programming, for the same problem, there are infinite solutions.
When we are working on a specific problem that does not allow us to move forward, we tend to think about it a lot while we find a solution without realizing it makes us less effective programmers.
Instead of being focused on a small problem for a long time (more than 1 hour), it is best to ask your coworkers for help. This will increase your knowledge in a more effective way and additionally increase your communication skills. Now, our co-workers won’t always be available to us, or perhaps we are the only ones working on a certain technology. In cases like these, it is best to stop working on the problem and divert your attention to another feature that has the same priority and resume the task later. Our brain will continue to work in the background and we can return to the problem from a different perspective.
Throughout my career, I have come across different types of code, some very impressive and difficult to understand due to their complexity, some simple and very easy to understand. But also many that are simple to begin with and for some reason became complex with no need other than to satisfy a programmer's ego.
I think this is one of the elements that make a programmer very ineffective and additionally harms others around him. For some reason, every time I come across this type of excessively complex code, it is related to an individual who feels he has something to prove by his status or seniority when all he is doing is writing code that could be very simple and for some reason is turned into spaghetti that only he understands and can explain.
My advice here is: keep the code simple and consistent. If the character described above leaves the company and a new developer enters to add/maintain the code, it will be much more difficult than if the code had been kept simple from the beginning. As my algorithms and discrete mathematics teacher once said, "Elegance is in simplicity because everyone can understand what you want to communicate".