The author of a book on career building, Roman Zhikharev, talks with G-Core Labs technical director, Vasily Mihaleny, about what modern IT companies expect from their employees.
- What does the concept of developer value look like in your understanding?
To increase your value, you need to do three things:
- Learn technology in demand in the market today and tomorrow.
- Develop universal skills (soft skills).
- Take on more responsibility.
- Let's start with the simplest. What technologies to master?
')
Trends today are changing incredibly fast. Therefore, I would like to voice some general principles, and not to describe trends or engage in predictions. The ideal configuration of experience and skills I consider a person with a T-shape people (T-shape people). The essence of the term is that, being an expert in a specific technical field, it must have an idea of ​​what is happening in the neighboring ones.
For example, the backend developer, in addition to a deep knowledge of the features of the language (for example, Python) and common frameworks, definitely need to know and, preferably, be able to build a process of testing, building and deploying (CI / CD pipeline, for example, in Jenkins). He should know the features of the environment in which the code will work, and how to ensure fault tolerance in it. For example, to cope with AWS / Azure / GCE or on-premise installation of k8s, to be able to correct the error in the deployment tools written in golang.
In some areas, the value increases the availability of certificates. When applying for a job, your portfolio is important; the easiest way is to demonstrate your skills and code through participation in open-source projects or placing your pet-projects on github.
- You mentioned several popular technology solutions. So, it is necessary to learn what is in trend?
Not necessary. In the market you can go for HYIP, and you can go in the opposite direction. If you are interested in rare technology and you do not want to run for fashion, there is a chance to increase your value at the expense of unique knowledge.
Modern technological giants are quite flexible and can afford to successfully upgrade their systems. And, as far as can be judged, Yandex and Google do not have an impressive legacy of solutions based on outdated technologies.
But there are more conservative industries:
international banks , industrial and energy giants, defense. It is very hard for them to find specialists under their stack and they are willing to pay good money. A good example is the use of “dying” Perl on booking.com and mail.ru. Or
COBOL , developed in the 60s, and still used in some US financial institutions.
- And then what is meant by universal skills?
The ability to communicate with other people greatly increases the value of the developer for the company. In practice, this means that a person can raise a problem, substantiate his opinion, propose a solution, correctly identify stakeholders, know how to effectively interact with different people (flexibility), constructively solve conflicts, negotiate, train, mentor and coach. And even publicly speak or present.
This also includes the ability to speak the same language with the designer and an understanding of the motives of their leader. I think about knowledge of English and everything is clear.
- What does it mean to take more responsibility?
We strive to hire people who look a little further than their working tool (technology) and concentrate on the value for the end user. For example, those who offer options for optimizing development processes, looking for solutions to a client’s problem, are ready to make efforts to discuss and implement changes.
Unfortunately, you can often see developers who create a cult around their tools. But it must be understood that if the code was not produced in time, then its quality or the tools used do not matter. This code did not bring profits to the company.
“It reminds me of Agile values.” Is there a connection?
Yes. There is a set of
practices called DevOps, which develops Agile values. He helps the company to shift the focus from formalizing processes to interacting internally to create value. But this is impossible without taking responsibility for the final result by all team members.
A good developer understands the DevOps culture and knows how to use it in his team and, ideally, the company. Or even plant. For example, one of the DevOps practices is CI / CD (most frequent releases). And if you really want to make frequent releases (at least one per day), you cannot do it without automation of integration and testing, automation and stabilization of the deployment process, separation of the release from feature toggling, which works and is understandable to developers of monitoring, saving backward compatibility, change rollback mechanism, etc. It will become obvious to you that the responsibility of a good developer does not end with the transfer of the task to the QA department.
The value of frequent releases seems to be obvious to everyone.
Anti-DevOps pattern is the separation of the production process into two or more functional wells: development, testing, operating, safety. As a result, each function solves only its own problems.
The general meaning is that the team must assume responsibility for the quality of the product being produced, the value of the features for the client, the timing, and to a much lesser extent formal compliance with the requirements in the task description. A developer should not have a bias towards limiting his responsibility: “I have already transferred the task to testing. I can't help you anymore. ”
The more responsibility, the more influence on the company's results. In a good company, people influencing its growth are moving up the career ladder.
Team responsibility requires good communication. To build all of the above without the skills of constructive communication and teamwork is almost impossible.
- Everywhere so?
In a large company with already established mature processes, accepting responsibility will mean doing something beyond the work on your project: organization of meetings, tech talks, hackathons; participating in presale or training interns.
- Findings?
Summarizing, we can say that the most
optimal personal development
strategy will be the
acquisition of communication skills to more effectively
expand the boundaries of responsibility for what happens to your product and in your team or company.