You can’t succeed as a software developer if you lack this skill
Considering the wide variety of tools and languages we have today, you may think that developing is for everyone… Maybe it is, but there is a skill you must work on.
“You can do whatever you want,” the motivational gurus tell us.
It sounds great, but it’s not true. Besides not agreeing with that, I see another problem. People often misunderstand the idea and think that they can do whatever they want without making any changes.
Even if the advice was accurate, what it means is that you can work on improving yourself to become whatever you want.
Imagine that I want to be a lawyer, but I don’t like to read or talk to people.
Before thinking of starting my career, I need to solve those issues. I must first find a way to enjoy reading and develop an interest in social skills. Only then I’d be able to go to university, pass the exams, and become a good professional.
Each profession has its minimum requirements regarding personal characteristics, and software development is no exception.
Programmers’ characteristics
We are not all the same, but we have something in common.
I’ve met countless programmers with opposite personalities, from the classic stereotype of a person who suffers social life to the party boy who spends every night at different bars. But there is a characteristic that most of us share.
These 3 quotes describing programmers converge into that single trait:
From one of our professors at the university:
A programmer’s job is like this: You spend 10% of the time writing the program and 90% trying to find the error.
From a coworker (not a programmer) at my first job:
You programmers aren’t ordinary people. Someone who stares for hours at a screen full of random characters without saying a word and suddenly exclaims: “I got it,” with a big smile on his face can’t be normal.
Another professor at the university:
We experience 2 opposite feelings when facing a problem:
First, we don’t understand it, and we think we will never do.
But then, after we get it, we can’t understand how we couldn’t understand it in the first place.
I get this message from them:
- Programmers invest disproportionate effort to finish something that is almost done.
- Programmers spend tremendous amounts of time making no progress until something sparks and we find a solution or explanation.
- Programmers stubbornly work on problems we think we can’t solve until we do it without knowing how we did it.
I read that Software developers must be patient to succeed in this career.
Why do developers need patience?
We accumulate frustrations since our first day but must deal with them alone.
The wide variety of concepts, ideas, and problems we receive when starting something new is overwhelming. When we are programmers, the extra challenge is that our deliverables are either right or wrong. This means that once we take any assignment, we can’t escape until we get it right.
These are some of the situations that test our patience to the extreme:
The code doesn’t work even when we double-check everything
Many colleagues come to me saying there is a problem with the tool, the compiler, or the computer:
”Why do you say that?”
“Because I’ve checked everything and the program is right. There must be an bug in that tool.”
99.99% of times, the error is in the program but the programmer can’t see it.
Trying to find an error when you’ve already convinced yourself there isn’t any is highly frustrating.
There is an extra touch for this situation that drives us even more crazy and it’s when the error happens only some times, but we can’t discover when.
Programmers are the last link in the project’s chain
How does software development work? Simple and perfectly planned:
The user has an issue, the business analyst proposes a solution that the functional analyst specifies, so the developer builds a program to solve the user’s problem.
As you know, nothing is so straightforward in the practice:
Instead, the user has an issue, but they don’t know what it is. Business and functional analysts have no idea how to solve this problem. However, after many useless meetings and weeks of delay, they send a file to the developer saying it’s a specification.
Then, the programmer should take that document and create a solution for the user out of nothing. Here we have 2 problems:
- The first one is the low quality of the specification, and it’s our task to deal with it.
- The second one is the deadline that presses us. Deadlines are rigid for the implementation of the project but not for the intermediate milestones. So, the programmer should recover every delay in the definition and specification, which multiplies the pressure on us.
We can’t accelerate the process, and we often need to move backward before we can advance
We can’t use shortcuts when we face an error or a problem to solve. We always need to understand the scenario first, and then look at the whole picture before we can focus on the incorrect field.
I used to feel extremely frustrated when, after analyzing everything, I contacted a more experienced programmer to help me with the error. I wanted to show them the specific place I had isolated (where the error should be), but they insisted on asking many generic questions about the background.
The result? They used to find the error way before the part I had invested so much effort into isolating. So, their solution was always more robust and reasonable than I could propose.
Similarly, when someone brings an issue to us, they press us so we “stop wasting time with meaningless questions” and solve it. But we need to cope with those situations and impose our methodology.
These are just some examples to show it’s impossible to perform our job and stay mentally healthy if we are not patient.
What if I don’t have it?
If you don’t have patience, you carve instant gratification, and you can’t sit for a long time trying to figure something out, you will suffer as a programmer.
You may be brilliant, but you won’t reach your potential if you can’t deal with those frustrations. New tools bring the development process to more people who are less logic-oriented or interested in technical details. However, patience is still required for any developer who wants to succeed.
The good news? You can train it.
Some time back, I started meditating because I was easily distracted when I was waiting for a process to finish or was listening to someone.
It may demand lots of effort to stay calm when you are anxious, but it’s worthwhile to work on it.