Thodoris Kouleris
Software Engineer
Three (3) things for programmers to avoid
In the years I’ve worked as a programmer, I’ve noticed, mostly in myself but also in other developers, various behaviors that make us unproductive. These are usually either low self-esteem, fear of the unknown, or arrogance, which create the problems. Human characteristics that, as human experience has shown, when we master them, we make the world better.
1. I need to learn everything to be a good programmer
This can happen when you start your journey as a programmer. Slightly influenced by the countless movies showing programmers as centers of knowledge and wisdom, and a bit by the huge amount of technologies out there, you think you're too insignificant to become a programmer or that you need to dedicate your life exclusively to it.
When I finished school and was trying to find my first job as a programmer, I read all the job listings and the skills potential employers wanted me to have, and I broke into a cold sweat. Technologies I had never heard of, terminology that was unknown and incomprehensible. This was the reason I didn’t continue as a professional programmer at that time and chose something simpler, like network technician.
However, if I had overcome my fears back then and managed to find a job as a programmer, I would have faced another problem that many beginners face—the imposter syndrome.
And indeed, when I started working as a programmer in 2016, for two years I thought I was just lucky and that soon they would discover how incompetent I was and fire me. This anxiety made me try to learn as much as possible. Learn WordPress, learn JavaScript, learn Laravel, learn C and C++ (as if I needed them as a web developer), learn the significance of every new buzzword I saw in the programming world.
Fortunately, I soon realized that all I needed to do was focus my attention on one language, one framework, and learn the basic concepts and how I could apply them in my everyday work as a programmer.
As programmers, we need to understand that we can't learn everything. Programming languages, frameworks, and technologies are so numerous out there that even two lifetimes wouldn’t be enough to learn them all. We only need to understand that all we need to learn are the basics, the fundamentals. The client-server model, recursion, SOLID, design patterns. These concepts are tied to a single technology or language but can be applied across most technologies and languages.
2. I know everything, I am the best programmer
Fortunately, I have never met a programmer with the arrogant behavior of the all-knowing who is always right. However, it is another human behavior that we encounter in our daily lives, and sooner or later, we will encounter it in our profession as well.
At some point, we may acquire so much programming knowledge that we begin to believe we are something special. This may even be reinforced if, in the environment you work in, you always have the answers and help others with their problems. However, it’s good not to have illusions.
We must always have an open mind and listen to the opinion of someone who may not have the experience or the same knowledge as we do. A good idea can come even from our local newsagent, who might have nothing to do with programming. Rejecting an idea to insist on our own superiority helps no one.
More important than being right is the ability to collaborate with others, and this cannot be done if you believe you are always right or that your opinion is better than others. Collaboration solves problems, and that's the only thing we want to do as programmers—to solve problems.
3. This problem is impossible to solve, no one has ever solved it
Let’s say you’ve been working as a programmer for some years, you have self-confidence (but not arrogance), and you are presented with a problem you’ve never encountered before. It seems impossible to implement, and you reject it. Congratulations, you just missed an opportunity to become a better programmer.
I understand the fear someone might have about the unknown, but a programmer doesn’t exist to create simple CRUD applications. After all, even an AI could do that today. A programmer is for the tough problems. And these are the ones that improve him and make him better.
Certainly, not all problems can be solved, but we shouldn’t dismiss even the attempt to solve them. Before you say that you cannot solve this problem, give it a try. See if others have solved it or solved part of it. Ask another programmer if they have any ideas. Only when you reach an absolute dead end should you admit defeat. It’s not a bad thing. Then say that at this moment, this problem cannot be solved by me.
The process of solving it, or even admitting defeat, takes you a step forward. It’s no small thing to break out of a routine of creating simple CRUD applications and do what you were made for—to solve real problems.