Getting better: the thorny path of a programmer. Part 1

Original author: GaarlicBread
  • Transfer
This article is a free translation of the article "The hardest and easiest way to be a better coder" by medium.com.
It expresses an idea that is not commonly accepted in the software development industry.
This idea that programmers are people too . But people living in a culture that denies emotions in communication.
The author describes us an important way of development. And this is not at all pumping technical skills or GTD.


From translator


Attention! The article is heavy. Designed to "think"!
Why transfer?
I have long been interested in the issue of developing productivity and self in the framework of the profession of a programmer.
One way is to learn tools and practices, hone technical skills.
But there is another way - the way of man : improving communications, emotional intelligence, social relations - what is called "soft skills".

In my circle, few people ask the question “How to upgrade soft skills?”, Because these skills are considered secondary.
And I notice that these skills are almost basic to becoming a professional.

The author of the article describes exactly the same idea!
I could not write better, so I took up the translation.


The translation will be divided into several parts.
I believe that this will help the assimilation of information.
Such a topic should be dosed.

The first part reveals the idea that programming is built on communication .
The second part describes the role of code as a way of communication .
The third part will explain why we are enraged by a deepening in details or a strong abstraction when explaining a new one.
The fourth part is devoted to the dark side of power - the desire to be evil and harmful .

Hereinafter in italics are the notes of the translator.



Programming is communication


Warm up


Imagine that you are on a planet that is very similar to modern Earth.
It is inhabited by humanoids. They love music, cats and funny stories.
Their technological development has already given them various complex things: newspapers, trains and beautiful complex architectural ensembles.
Their culture is based on a good education, excellent medicine and a thirst for research.
But they have not discovered electricity yet .

There are no computers. Internet too .
Cap hints that there are no video games either. Incomprehensible.

It seems to me that our modern culture of programmers is likewise devoid of very important “electricity”.
We do not know how to maintain healthy daily communication.

On the one hand, training this skill is simple: the first steps are very simple and effective.
On the other hand, this is a very vast area of ​​knowledge with a bunch of nuances.

Blood programming


Contrary to popular belief, the blood of programming is communication between a programmer and a programmer , not communication between a programmer and a computer.

Many people think that programming is an explanation to the computer what exactly needs to be done. When I write code directly, and do not respond to emails or design a solution, I describe the specific actions that the computer will then perform.

The goal of programming is definitely the solution to a specific problem of the user. Where is the very “communication of the programmer with the programmer”?

Programming is an ongoing process. What does it mean?

Economics is also a continuous process, the process of exchanging goods and services.
This process never stops. There is simply no way for a magical moment when every person has everything he needs and the economy stops and disappears.

Similarly, the base of existing code is constantly evolving, and this evolution is programming.

Money is the "blood" of the economy. This is what flows from one participant in the process to another. This is what feeds the process itself.

The only thing that feeds the programming process is communication between the participants in this process.

Why do programmers underestimate communication?


It is difficult for a programmer to realize the importance of communication because of such things:
  • A man tries not to notice evidence that hinted at some kind of flaw.
  • It is much easier to pump a specific skill than an abstract one.
  • Most of the developers that I know say that improving “soft skills” is not cool.

And the most important factor is that programmers talk about communication and “communication skills” only during interviews and salary reviews, and avoid these topics at any other time.
How many articles on communications have you read for programmers?

The disregard for “good communication skills” has become a tradition.

Even programmers have feelings!


There is another tradition that is not talked about.
We pretend that we do not have dumb emotions: anger and envy. And that we do not protect our code from the attacks of colleagues.

Imagine that your friend says: “I do not want to change this code, because I have grown to my soul!” It sounds dumb. Such dumb emotions are not openly talked about.

We all rely on the "ideal programmer" who experiences only good emotions: inspiration, curiosity, the desire to help others. For some, scorn of criticism is valuable. But I’ll talk about criticism a bit later.
We try not to show how we differ from this ideal image.

At the same time, we all experience a heap of emotions. It `s naturally.
Maturity of a person is not a change in our emotions, it is a change in attitude and reaction to these emotions and feelings.
Emotions play a crucial role in shaping our desires. A mature reaction is not ignoring these emotions, but their awareness and utmost honesty with oneself.

Many do not even realize how useful it is to be aware of their feelings. It is extremely difficult to do. The most common behavior during communication is to immediately succumb to a burst of feelings, rather than trying to analyze them first. You don’t think, “Now I want to humiliate the interlocutor, because I am extremely angry.”

Awareness and control of feelings and emotions is the main component of the concept of “emotional intelligence” . An interesting topic, I advise you to study.

What could be more difficult than controlling your own emotions? The answer is simple: respect other people's emotions.
When we try to guess how our interlocutor feels, much less information is available to us than our interlocutor. And sometimes it is not clear what is worse: to ignore other people's feelings or to understand them incorrectly.

It would be great if programmers could openly discuss emotions.

Such a tradition is probably based on the notion that working with code has nothing to do with feelings. But this denies the fact that programming is a collaborative, ongoing process.

You can’t just turn a blind eye to feelings. Bad emotions are like bugs - they are inevitable. It would be much more productive to notice, discuss and “correct” such feelings. A happy, positive and motivated programmer is more productive than a resentful and puffing and grunting.

Unfortunately, culture cannot be changed with the click of a finger. To date, the situation is such that a programmer who is interested in the feelings of others runs the risk of getting in the forehead.

But not everything is lost!
You can start a conversation about feelings by asking a question accordingly. You must show that you want to understand a person’s point of view without wanting to condemn it .
People are much better at those who understand their feelings and understand the reason for these feelings.

This is a great first step towards a productive solution to a difficult situation that causes negative emotions.



In the above, I found a lot of coincidences with my reality. You need to communicate and learn to do it productively. Do you agree?

How do you solve conflict situations?
Does your code evoke any feelings?
Do you explain to your comrades the reason for your decisions and behavior?

Translate further or well it?

Also popular now: