Programmer 2020: Terminator Resting

A programmer today is not the same as before - knowledge of a programming language (or languages) is not enough to be truly competitive in the labor market. You can write as much as you like in the C ++ code a pointer to a pointer to a pointer, but what's the point if your employer is crying (less vanilla guys yell, deprive them of bonuses, threaten and stand on the client's side - in the sense of a live client and user of your program, not something that communicates with the server)? Some time ago, that gadgets, that management concepts, that the tendencies of personnel selection gravitated towards the same: modularity, discreteness, and even primitivization and narrow specialization of employees, software, tools. But evolution has taken a wrong turn and now the world requires smart devices that can do everything, multifunctional programs and applications (hello,Yandex Go) and, of course, universal specialists. The concept of the "man-orchestra" returned to the trend, not having time to leave it. 





So what do you need for the complete programming happiness of a set matching at the end of 2020?



▍Data structures and algorithms



Now there are a lot of self-taught programmers with good coding skills in a specific programming language. These are techies, retrained from other profiles, “vhozhdens in IT”, amateurs of self-education, etc. they really understand how to write code, they are well versed in functions and syntax, they know some tricks, and they are especially advanced in OOP and patterns. This is already a lot to be competitive in the labor market. 



But in the very first working days on a good project, problems begin and it becomes obvious that the educational tasks that made you a great coder have nothing to do with the code in production. To write good, professional code, you need to understand data structures and algorithms, and be able to design software. I have seen very intelligent programmers who did not use arrays, trees, linked lists, sorts, etc. These guys have two distinctive features: 1) they are stubborn and confident in their superiority; 2) they spend a hell of a lot of time writing what already exists as a structure - I've seen sorts and trees reinvented, it's scary and weird. I am already silent about resources.



Therefore, a programmer of any level must easily operate with structures and existing algorithms. By the way, HR professionals and CIOs love to use these topics in interviews. Whether it is worth turning an interview into an exam is a topic for a separate article, but the fact remains.



▍Business Processes



I still remember the good times when it was possible to create the product of your dreams, and product specialists, marketers, salespeople turned it into a dream product of the company's clients. Now, of course, it is different: the commercial guys have relaxed, and the client has become picky, and competitors have learned to make beautiful things instead of the old shafts on their knees. Now any programmer and any developer must understand the business processes for which he creates software, must have a minimum understanding of the company's field of activity. And here arguments like "A surgeon does not have to be operated on ten times" will not go, because this is a forgery of argumentation and sophistry: the surgeon, in addition to the site of the incision and a specific organ, understands analyzes, pharmacology, resuscitation, general anatomy, physiology, etc. 



And this is a big problem: developers create a product simply according to technical specifications, not for the convenience of specific customers. Therefore, if it is important for you to be effective and create a valuable, sellable (for the benefit of your salary) product, create it with the client's needs in mind, not taking into account your view of needs. Ask the user for requirements, collect information about how the product is used, identify inconvenient and convenient modules and functions - then it will turn out both better and easier. 



By the way, a small life hack on how to understand the business processes for which your application is being created. Get together with colleagues from the “selling” part, from the front office and conduct a mutual seminar: they tell you about processes and clients, about the use profile and important advantages, and you tell them that development is not a wave of a stick and “washed down a calculator for me the client asked very much to calculate the parameters and cost of a nuclear power plant project in half an hour. "   



▍Math



Queen of the fields. Well, or sciences, not the essence. No matter how we avoid mathematics in the IT world, its importance increases every year. Neither machine learning, nor neural networks, nor artificial intelligence can be developed without knowledge of mathematics. And if you, a website developer or front-end developer, just grunted and went to read the next paragraph, stop, this applies to everyone. Because soon programs without at least some rudiments of ML / AI / neural networks / BigData will be lagging behind. Therefore, the solution is simple: before it's too late, study the necessary slice of mathematics.



I have a little secret on how to start: buy any advanced children's encyclopedia or popular science book on mathematics and immerse yourself in the atmosphere, brush up on basic terms. And then it will go and even tighten. 



▍Basic knowledge in related fields



This point may outrage anyone, but yes - the programmer and his colleagues will be better off if they all know a little more about the work of a neighbor in an open space, office, team. If you are a programmer, you better know some basics of UI / UX, frontend and backend, system administration, testing, etc. This will allow building a productive working dialogue without mutual accusations and suspicions. There is no need to delve into the very depth of the subject - a basic textbook, online lectures and an Internet course are enough. If you are really interested in a developer's career, you can take some full-time integrated software development program - everything will be given there in moderate amounts, however, most often it is paid. 



These “universal soldiers” with a broad working outlook are more likely to fall into the ranks of project managers and team leads. If you are interested, grow in breadth and a little in depth in terms of studying dependent disciplines. 



▍Techno-trio, without which the future will not be allowed



It may seem strange, but often programmers only know about the existence of these three technologies and can explain what it is in general terms. However, soon these technologies will affect everyone in one way or another.



  1. . — , , ( ). . Amazon Web Service (AWS), Google Cloud Platform (GCP) Microsoft Azure . 
  2. . , , . ,   ,  . ( ).
  3. ( Docker Kubernetes) , , . , , , , . 


▍ -



I love toxic company employees. If a PR person or a project manager nervously corrects a square and says that “Javist Sergey is toxic” in the company, I know that most likely Javist Sergey oppresses colleagues with his volume of knowledge, professionally finds mistakes and explains them boringly out of the best intentions, and because of irritation others withdraw into themselves and behave rudely. But he is a pro - and there are many of them. But, alas, people are social creatures with a finely organized psyche and therefore cannot stand people without empathy, a social vector and, excuse me, emotional intelligence. Therefore, while the javist Sergey is freezing and is having smart conversations with the garbage collector, the pythonist Savely is already a senior, and is aiming for team leaders, and has attended three conferences, and he leads friendship with his superiors, and flies with a client to an exhibition in Barcelona (you already understood,that the examples are invented and all the coincidences are random, because no one flies to Barcelona in 2020). 



Now is the time for communications, which are less frequent, the more valuable, so write down what you need to pump:



  • communication skills, objection, questioning and discussion;
  • the ability to empathize and, through empathy, pull out the necessary information;
  • the ability to express thoughts competently and intelligibly;
  • skills of informal communication without familiarity and personal transition;
  • the ability to defend your point of view. 


I have good news for you: most of the soft skills are installed in a person by default, you just need to competently pull these skills out of yourself. Do not go to coaches and coaches, 2-3 basic books on organizational psychology, conflict management and social psychology will make you a thoughtful conversationalist. 



In general, our life is developing in an interesting way: I now remember how breakthrough Google Glass was, how clearly Pokemon Go came in, how various project management systems took off and immediately collapsed. These were waves of hype demand, demand for trends. Therefore, the listed skills of a programmer in 2020 seem to be so "good-looking": they are long-term, and not for a couple of seasons. That is, you can live with them until about 2030 without much stress. And the rest of the world rests on these elephants. Well, programming languages, of course, the turtle under the elephants, the basis of the basics.  



What are we for? Happy programmer's day, friends! You change your life for the better with code, you make requirements into working applications, you read the technical specification between the lines and you know what the customer or team lead thinks. Love your work, grow on it and on yourself, and let not a single ";" be missed. All hello word and fewer bugs.



All Articles