In this article Cheslav Novytskyi, Engineering Manager at Innovecs, shares his experience which may be useful for software developers in advancing their careers vertically.
Three years ago, I started as a React Middle Developer. Today I help others develop, manage teams, and am responsible to the clients for important decisions.
I have been planning to work in IT since my school years and studied at the University majoring in Computer Science. I studied until the 4th year and then started to develop independently. I do believe that education in IT is important, but it does not guarantee success in the profession.
My team includes both engineers with higher education in IT and diplomas in specialized courses, as well as those who chose self-study. It is not a diploma or certificate of the course completion that all good specialists have in common but rather the desire to work and take on extra responsibility.
Professional and personal growth is an ongoing process, not a one-time achievement in a short period of time. Therefore, I still continue to change, and gain experience and new knowledge, especially in the area of management.
People Management is first of all the ability to guide people, set the direction, help develop and motivate, and keep them in a constant energy tone. I also help expertise-wise by giving advice on the best technology for the product, important development stages, and possible nuances.
I evolved gradually in various positions, from Developer to Tech Lead, and later to Engineering Manager.
Prior to Innovecs, I worked as a programmer in various IT companies for 5 years. I started with a local outsourcing company, then a local product company, and later gained experience mainly in startups. At the time of joining my current company, I had a certain desire for stability.
It was here that I developed first as a Tech Lead and then as an Engineering Manager.
The difference between these two managerial positions is again in the level of responsibility. If Tech Lead is responsible for a particular area within the technical dimension of the project, the Engineering Manager monitors the development of both technical and business factors.
Tech Lead works with a small part of the product, while the Engineering Manager is responsible for the entire product and the entire project team.
One of the most noticeable changes was the increase in the number of calls and communications with the team. As a manager, it is crucial for me to catch my teammates’ vibes because they directly affect our overall productivity. Among the skills I honed was the ability to negotiate with clients, defend our own position, and offer a reasonable alternative. Also, I learned to let go more, delegating certain tasks to others.
At the level of Engineering Manager, the team is expanding, and it is essential to allocate a new Tech Lead, which can be entrusted with some of the responsibilities because it becomes difficult to keep track of everything. You also need to pay attention to time management, otherwise, you will not have time for anything. Another important task in this position is participation in the processes of hiring, and selection of people for the team. If Tech Lead conducts only the technical part of the interview, the Manager evaluates soft skills. These are the main skills I acquired in my new positions.
Experience comes through practice, not theory. Success comes with hard work. In the end, it all comes down to ambition. Anyone who wants to grow will definitely do so. There are no easy or beaten tracks. Personally, I worked a lot both at work and off it. I developed startups with friends, took on various adventures, and it nurtured us a lot. I could dedicate all my free time during the week to this. I tried myself in different areas of the project and dealt with management responsibilities. In the process, I learned a lot of new things.
I was never afraid of responsibility. Quite often I had to work with Junior and Middle Developers who asked for advice and support, including helping to negotiate with the client. Solving problems is the manager’s task. I succeeded in that, and I was happy to help. Later, when there was a need to expand the team and appoint leaders and managers, I was officially assigned to this position.
Mentoring is also vital. It is possible to work for years only as a developer on a project and grow, but without a super-experienced mentor, the knowledge you gain can be very chaotic. That was my case to a certain extent. When I joined the company, the team Lead helped me systematize all the knowledge I gained, mentored me, and helped me advance my career. Well, of course, there is another important growth factor which is a cool team. In an inspiring work environment that has ambitions and goals, you grow faster.
My team includes both IT graduates and developers without a university degree. There are those who have completed programming courses and those who have studied on their own via YouTube tutorials. They are all professionals because of their desire to work, not because of a diploma or certificate. I have not completed education or specialized courses, but instead, I have a lot of practice.
At the same time, self-development is important in IT, meaning constant reading of technical articles, keeping abreast of trends, and delving into documentation. Without all of that, stagnation is inevitable. Possibly, certification might be useful, but for me, it is more of an incentive to learn something new than a factor in significant career changes.
To my mind, such engineers do not really want to grow, although at first glance it looks different. The fact is that people often confuse the inner desire to increase compensation with the desire for professional growth. Some would like to stay in the same position, with the same responsibilities, but earn more. This is where a conflict of interest arises between the employee and the employer. Therefore, the first questions to answer are what you really want and how you can achieve it.
There are cases when a Senior Developer has been working for one company for five years and does not change anything because he is so comfortable. In order for things to change, one should go further. In general, I think that the development of Engineering Leadership should not necessarily mean a shift to management. There are other perspectives for the developers, such as becoming an architect and deepening their expertise.
I am often asked the following question: can a Middle Developer evolve fast enough to become a Manager right away, or is it still important in the technical field to go through all the stages of development, from Senior to Team Lead and beyond.
In fact, it all depends on the company and the team. Personally, I am against such a leap. Not all Middle Developers can be good team leaders. Firstly, it will be difficult for them to gain the attention of more experienced employees, and secondly, I don’t think they have enough technical expertise and managerial experience to take responsibility for making certain decisions.
Theoretically, you can shift from the Middle level to management, but it is unlikely to become a Team/Tech Lead or Engineering Manager if it is the technical field. Technical expertise and horizontal development are important here. You will not be able to quit programming halfway and become an effective manager. I am speaking from my own experience. Although indeed, in some companies the most outgoing and inspiring people can become leaders, managers, and execs.
In managerial career growth, just as in professional evolution from Middle to Senior, I always advise taking more responsibility. As a rule, Seniors work independently with tasks, need no mentoring and verification of completed tasks, can cope with challenges, and is ready to be responsible for the decisions made. The quality of the work done is entirely on the Senior’s conscience. Senior feels responsible and has the deep technical expertise and an understanding of how to scale a technical solution.
As for the difference between Middle and Senior, the first marker is being well-versed in technology. Usually, a Middle Developer knows how to solve a specific problem, and a Senior can offer alternatives and justify the use of a particular technology. Another marker is the experience of working with technology and different teams. Senior Developers can anticipate events because they have encountered both the right solutions and failures. They never sacrifice quality for the sake of speed, just to meet deadlines. One of my markers is: does the Developer know what Open Closed Principle is? As a rule, Senior knows, and Middle doesn’t yet.
From my observations, the most difficult was learning to delegate and get rid of excessive responsibility. The volume of work is growing, and the quality of tasks should remain high. In this case, the ability to delegate is the first thing a manager needs to develop. Along with the ability to delegate, you also need to be skilled in time management. I've customized notifications and turn them off when they distract me. I schedule appointments in the calendar in advance and schedule a lunch break because someone will definitely want to book a manager’s free slot. The calendar is the best tool in my work.
I had a hard time letting go and not worrying too much. If you have a heightened sense of responsibility, anxiety affects your sleep, and you can burn out very quickly. Then everything will definitely go wrong. I am still learning to let go and delegate, sometimes I want to be everywhere and have time for everything.
It is unacceptable when your teammates come to you for advice, and you instead of helping, say: "But that’s pretty simple!".
Support, tips, and guidance are expected from Team Lead. Any ridicule or humiliation of team members directly affects your overall result. Therefore, an important feature of a Team/Tech Lead and a Manager of any level is the desire to help the team, strengthen it and watch everyone grow.
An Engineering Manager has a clear understanding of how well-coordinated teamwork affects the business due to seeing the big picture, but not at the level of separate details. The Team/Tech Lead gradually realizes that and broadcasts this perspective to the rest of the team.
One of the worst possible shortcomings of the Team/Tech Lead or Engineering Manager is micromanagement. It undermines team spirit and motivation. Such conditions lead to team disbanding, and ultimately to a constant staff turnover. Having no stable team results in delayed decisions. Despite the fact that micromanagers justify their actions with the desire to speed up the process, the result is the opposite. It is never possible to finish on time. I think that all micromanagement is a kind of corporate school of the past, which will soon retire and the world will be a better place.
First of all, it is the ability to сonvincingly convey one's point of view, without getting too personal or involving destructive criticism. Another important skill is to stay calm and even-tempered when negotiating with a difficult client, keep your emotions in balance, and channel all your energy into a constructive track.
Managers from time to time have to resolve conflicts and prevent them from arising between team members. Here, one must learn to listen to everyone and address the issue without hurting anyone.
In general, you develop soft skills only through constant communication with people. Being among people and communicating with them is the most important condition. I learned from my mistakes and the mistakes of others. Improper negotiations have consequences. The customer may be wrong in choosing a solution and still exert pressure, and if you agree, it turns into a problem. The team is not satisfied. There is a gap between productivity and efficiency. Having several such cases, you begin to understand that flexibility is not beneficial for either customers or the team. It’s not that you had warned, and no one listened. The fact is, you didn’t say enough and didn't convince. In short, all managers have a common rule which is not to buckle under.
Apparently, it is necessary to understand whether they need them at all and to what extent. Everything must derive from our goals. In my opinion, the basic soft skill of any Developer is the ability to talk to colleagues for at least an hour a day during daily calls, it would be really good. And if can do more than that, it would be awesome. Other soft skills one might have a hard time with should be developed for specific purposes. Excluding the possibility of being toxic or spreading negative moods is what all those skills boil down to. The ecological working environment is simply vital.
I couldn’t agree more with this saying. Sometimes you learn from mistakes, correct them, and things get better. Sometimes you succeed the first time, and you feel like a winner. But the worst is when things don't work out, and it doesn't teach anything. The main thing is to keep going and continue learning because development is a process of moving to the top.