📜 ⬆️ ⬇️

Qualification of fellow programmers: expectation and reality

“The best programmers are not a little better than the good ones. They are an order of magnitude better by any measure: conceptual thinking, speed, visualization and the ability to find solutions. "
- Rendall E.Stross

Probably this quote well reflects the concept of a qualified programmer . But the world is not so beautiful. The number of years of work as a programmer is not always directly proportional to the availability of relevant experience and knowledge.


Next, we will consider (with life examples) what we need to pay attention to in order to get closer to the goal of becoming the “best” programmer.
')
I think many people have come up against the situation that senior managers do not have enough competence to lead a project. Someone is appointed to a management position because the issue of dismissal becomes, and there are not enough people, so a new position is created with a higher salary. I believe that after graduating from the institute (that is, at 22-23 years old), few people can boast of sufficient experience corresponding to a senior programmer. And in order to lead other people, you need broad technical awareness, and, of course, you need to have leadership qualities.

When you get into the team, you unwittingly begin to assess the abilities of others, especially your older colleagues. This is useful if you are given the opportunity to choose whose project you are to take part in. So, having received a leadership position (bypassing the stage of becoming a good developer, that is, almost stasis after uni), someone can simply decide that everything, nothing more is required of him in his professional growth, one can be content with the knowledge gained during his university studies and work experience in 2 years, besides with part-time employment. The further self-development of such people is limited to the knowledge and skills gained in the course of the need for the project and from the courses paid by the company. There is no desire to work with such people at all. Indeed, while you are pumping up your skills, the manager reluctantly studies something when it is necessary. And this is at best, because “I’m the leader”, I’m putting pressure on someone else, and let me retell in a few words what the “War and Peace” is about . And probably in almost every team there are people like “OK Google”, so why take a steam bath. After all, there is almost no motivation to maintain and improve the professional level: I received a management position (a), and there is no monetary motivation either, so these people apparently don’t think about professional compliance. And they don’t really want to train someone, which is actually their responsibility. I remember when I was still studying at the institute, an acquaintance (older than me) said that he had been promoted to head of a department (at his 25th birthday). When asked how many people he had in his submission, he smiled. In fact, there are 2 more people in his department, but they are not his subordinates. A year later, this person has not changed much.

I would like to draw attention to several specific things that are missed by incompetent senior programmers.

Need to know about the programs you use.


I hope that all companies use version control systems. We use SVN. One of the sad facts is that many do not know in general terms how version control systems work, what distinguishes distributed systems from centralized systems. In some projects we have involved work with databases (used by Postgres). And once I heard from one friend that Postgres is used exactly for storing commits. The man does not even suspect that SVN has its own information storage structure. They told him that there are commands add, ignore, commit, update and checkout and that’s all, that’s the end of his acquaintance with the product. When you just need to deflate a specific version of the project (without a history of all fixations), some even do not suspect that there is an export (once I came across a bunch of four people solving this issue).

But the most ridiculous situation develops when several people change the same files. And how now to commit!? And you hear: “How? Did you also change something in the x.cpp and Y.cpp file? Stop for now! Someone will do this one, and the missing one will add. ” A counter question arises: Well, then why was the opportunity created for resolving conflicts? Anyway, if someone made a commit, you first pump it out, and then make your changes. No need to think that the version control system is just a dump of changes being made in which a version is assigned to a specific state of a file / project. If a conflict situation occurs when you try to commit, it does not mean that you made a commit and the problem files were saved in the version control system. You need to understand which operations are performed in the working copy, and which in the repository. It is stupid to perform operations and to assume that “magic” has occurred is not necessary.

Need to have an idea of ​​the OSI / ISO model


Everyone at least somehow intersected with some concepts from the network model. Here is a real story in which ignorance and the presence of not a complete understanding of certain things play a cruel joke. Somehow the task of working on RS-422 interfaces arose. Well, why not take up this, because the work will be with the COM port, it remains to read about the features of the RS-422 standard itself. And then one of the senior programmers asks me: “Have you already had experience with RS422 / 485?” I answer that no, I have already worked with serial ports, so I’ll figure it out. And here I see the surprised face of a person who starts for some reason to push (for clarity: we haven’t worked with RS422 before this) that the exchange will not be via a serial port. That is, it has no idea what the physical level standard is and the interface used for exchanging.

Perhaps not everyone in his career worked as a programmer with Bluetooth, pipe, share memory, RS-422, Ethernet, etc. But a programmer must understand that if he can work on a serial port, he will be able to exchange via Bluetooth and RS422 , but do not forget to read the documentation on the features of the standards. It is necessary to distinguish the levels of ISO / OSI. There is no need to make a problem (panic) when the task arises of writing a program for exchanging over UDP, and you used to write only the exchange over TCP protocol.

Writing a product without tests is bad


The fact that there are not enough people is accompanied by the product for several years, and it will take a lot of time to write unit tests from scratch and that we don’t have such people - just excuses. You can also write tests for new features.

If you went to some courses - you did not become (a) a good specialist in this area


As already mentioned, fake executives get most of the new knowledge from courses paid by the company. And how irrelevant their comments are in conversations with which they seem to be trying to show off knowledge, but in fact they do not suspect that the interlocutors are very much in the subject and not necessarily wishing to complete heresy with a smart look.

Of course, this list can go on, and it’s possible to list the arising absurd situations for quite a long time, but this is not about me. It seems to me that it is very important to be selected as a project manager so that you will be respected as a programmer and manager. If you are given free time, you do not need to sit on the phone / tablet for half a day to play or watch the series. You can't know everything, but to some extent you need to be enlightened in technology, architecture, etc. After all, it looks very stupid when 2-3 years experience of young people is obscured by 10 years of experience in simply sitting on their pants. I have met different programmers, and this article belongs to a minority of them. But remember, you must be (or at least strive to be) an example for the younger generation.

Source: https://habr.com/ru/post/309658/


All Articles