Competencies of a modern programmer from a different angle

    Hi, my name is Pasha! I work at Mad Devs, and I think that just programming is not enough to be a good specialist.


    I hope this material does not hurt someone’s feelings. This material is an attempt to reveal the modern programmer’s skill system from a different angle. Not more.


    A programmer is an essential link in the software chain. Without it, new software cannot be created. What is so important that a programmer does? What responsibility lies with him, since he is so irreplaceable.


    I want to immediately draw your attention to the fact that the responsibility of a programmer depends on the historical timeline. We will return about 20 years ago.


    image


    This meme has little to do with the image of a modern developer. Nevertheless, let's discuss what this fantastic specialist is responsible for. Most likely, he is developing a system that is unstable in operation. Users of this software are the so-called advanced personal computer users at that time. At that time, only advanced users could use the software beyond a text editor.


    What is the responsibility of such a specialist? It should just write code in one programming language. This specialist proudly calls himself C ++ - a programmer (substitute another programming language, popular at that time). His leadership, as a rule, does not completely understand what he is doing. In this regard, he has the opportunity to create the image of his activities that he himself will wish. This image can be negative, programmers weren’t paid much then, it was why they were angry. It may be positive, he can solve problems from his leadership and create useful magic. Some of my colleagues still believe that maintaining the image of a negative specialist is the norm. At their companies, managers still do not understand what they are doing, and these specialists are absolutely negative about their entire world around them. But there are not many of them - it pleases. Anyway, it seems to me that IT companies are those companies where managers understand what is happening in the modern industry. This is a sufficient criterion to be an IT company, as for me.


    In this regard, the question: what is the responsibility of a modern programmer? This question can be answered for a very long time, but I will try to reveal it more quickly, and immediately discard those things that are important, but can stretch this material to infinity. And we will begin to reveal it with the competencies that a modern programmer can possess.


    The competencies of modern specialists in any industry are divided into three broad categories:


    • Hard skills;
    • Soft skills;
    • Digital skills.

    Logic suggests that in every specialist all types of skills should be equally developed. They mutually complement each other.


    I will not disclose these terms, because in Russian they don’t even have a permanent name. Many education professionals refer to these skills differently, thereby confusing the audience sometimes. I will bring to your attention a table of correspondence of these names.


    Primary keyThe name that I will useOther synonymsIn the RubleshKill for that
    Hard skillsProfessional skillsDeep skills, hard skillsHard Skills, Hard SkillsHard skills
    Soft skillsProfessional skillsSoft skills, general skillsSoft Skills, Soft SkillsSoft Skills
    Digital SkillsDigital skillsDigital Skills, Digital SkillsDigital Skills

    If the names of the problem, with the definition and even more so. I will give only those concepts that are needed for today's discussion.


    To be brief. Each specialist needs exactly one professional skill : a programmer - to program, a builder - to build, a surgeon - to surgery (inappropriate joke), and so on. This skill includes the infinite amount of knowledge that a specialist possesses. In the case of a programmer, this includes understanding the very great base that everyone should know, understanding the principles of his programming language, and so on.


    Digital skills are a different story for most professions. Because IT penetrates all industries today. It’s hard to find an industry that is not digitalized today: at another time, I would say that this is a religion, but no! Therefore, for specialists in most professions, digital skills are a separate article with which to work. For programmers, digital skills and professional skills, for obvious reasons, overlap. Although I am every programmer, I think I should be an advanced software user. I mean, use different services to organize your life, try to make a smart home, use modern applications for life and so on. It develops digital skills more. After all, to be a good supplier, it is nice to be a good consumer.


    Over-professional skills - this is the thing that we will dwell on in more detail. Compared with professional skills, each specialist needs several, and preferably a lot, supraprofessional skills. Examples of professional skills: time management, finding resources, using resources, negotiating skills, communication skills, managing people, public speaking, etc.


    Why do I need these skills? I write in React! - will sound from the audience.


    This is where the very difference in responsibility between programmers 20 years ago and programmers today begins. Today we are suppliers of the future; without us, software development is impossible. Our colleagues from companies (managers, product owners, sales, stakeholders, marketers and others) need our help. Our competencies (namely professional skills) and how we can apply them sometimes play a decisive role in the development of a product. Why so? I described in an articleabout real full stacks on Habré. It describes where you need to apply your professional skills more than most of us are used to. In fact, the skills that I am writing about now just add up to a very cool quality, which we have well developed at Mad Devs - customer affiinity (proximity to the customer).


    As I wrote above, all types of skills should be equally developed in each specialist. And in order to qualitatively apply your professional skills in situations that I described in the article at the link above, you must also have well-developed super-professional skills.
    Which specifically? I will list the top 6 important professional skills that, as I see it, any modern specialist should have:


    • Time management . Here I think, obviously. The skill of time management only indirectly relates to the assessment of tasks. Assessment of tasks is a professional skill. Time management for a programmer is a logical distribution of time for coding, reading articles, self-education and rallies.
    • Ability to work in a team . Almost no one does projects alone. The ability to work in a team is an absolutely indispensable skill.
    • The ability to teach . And to be precise, the ability to introduce into the context, a skill comparable to the ability to teach. The task of the person who teaches is essentially an introduction to the context. Only the knowledge set is more extensive. Programmers very often change contexts due to the change of projects and teams. And the ability to introduce a colleague into the context, pointing out the most important and omitting unnecessary details, is a very important skill, considering how expensive the operation of entering the context is today. By the way, this skill is also used in mentoring.
    • Business etiquette . Starting from the observance of the rules of the Russian language and ending with the elementary rules of communication with customers. Some business people forget that they are not in the slack chat of gophers or the Yii framework (substitute your technology). In some companies, business etiquette is important in correspondence by mail within the company. At us at Mad Devs, business etiquette is important only in context when it is important for the product we are making. If it is easier for team members to perceive just this type of communication, such etiquette of communication will be adopted. But at least all the customers with whom I worked are people who are primarily focused on the result and prefer to communicate without serious soup. Here to each his own. But! The ability to include business etiquette when the situation requires it is important!
    • Goal setting. Two kinds. Personal and design. Tell me, programmer, who will you be in 5 years? A typical question at the interview, but the answer to it helps to understand how a person relates to long-term planning. My personal opinion (this means that I do not impose on anyone, which means there is no point in arguing): despite the entropy of the modern world, long-term planning is NEEDED, NEEDED, NEEDED! No one asks you to stick to a plan no matter what happens. Plans need to be changed, and this is an adult way. But keeping in mind the goal and set of tasks for the coming years (preferably around 10 years) is a guideline in accordance with which decisions are made. Specifically, I find it easier to work with people with long-term planning. You can invest in and develop with them without fear that they will rain tomorrow. Goal setting in the project is also an important point. As a programmer, even if you discard all this type of nonsense about professional skills and stuff, you are responsible for one of the parts of the project. And you need to plan the development of this part of the project in the long term. What abstractions will appear, which modules will go separately to live their own lives, and so on.
    • Sociability . It's about the ability to communicate with colleagues from other professions. Be responsive, help colleagues understand their issues that are related to our professional skills. Be a lifesaver for them when they are at a standstill and so on. Sociability also helps to establish contact with the customer, and this is always useful for any project.

    These supraprofessional skills, in my opinion, will help to fully reveal your professional skills.


    The main message that a programmer today is not a code typer. This is an important combat unit: a unit that can decide the outcome of a battle if it properly uses all of its spells.
    And for this you need to not only be a good developer and be able to code, but also have a set of skills that, at first glance, remotely help in the performance of your duties, but this is not so.


    We answer the question: what is the responsibility of the modern programmer. In a first approximation, this is code to write. But in fact, a good modern programmer in most cases has such a vague set of responsibilities, as much as the concepts of professional skills today are vague. This, in addition to everything, depends on the company, team, project and team leader.


    Of course, each developer decides who he should be. And what skills to develop, what is important, and so on. You can continue to be a code dialer, and in the coming years you will feel super good.


    True, there are experts who will tell that narrow IT specialists will soon begin to die out. Complete extinction does not threaten them, but in the form in which they are now, the professions will not remain for sure.


    There is such an interesting project: Atlas of new professions . Check it out and see that new professions are, as a rule, professions of the type IT + another industry.


    разработчик сборщиков JS-кодаThere is no profession there.


    I hope this material did not hurt anyone's feelings. This material is an attempt to reveal the modern programmer’s skill system from a different angle. Not more.


    Also popular now: