📜 ⬆️ ⬇️

Start with full stack and not regret: from senior developer to head of department for six years

Good day to all! My name is Lukyanov Kirill. About six years ago, I joined Veeam as a senior developer and during that time I became a project manager. Now Veeam is actively expanding, and I decided to write about my development in the company and how it works. So that you know what to expect, and feel confident if you are thinking about an interview.



Step 1. Interview


The decision to change jobs was not easy for me. But the salary delay at the previous place of work was close to three months, while the project was generally completed. I decided it’s time to put a resume on HH. The interview at Veeam was second to me.

I knew little about the company at that time, but at the interview the managers clearly described both the scope of activities in principle and the range of my tasks. Now there are a lot of directions, and in those years there were two main ones - backup for VMware and backup for Hyper-V. I was familiar with virtualization at the user level, and with data protection I was “you”, albeit a bit with another aspect of it.
')
Then I went to the job of Senior C ++ Developer, despite the fact that before that, my main development in commercial development was C. C ++ I studied for myself. Stroustrup, Sutter, practice in the evenings, the invention of bicycles and numerous bumps from "the same rake." But it turned out not in vain. At a minimum, I was able to carry on a dialogue about simple things - containers, iterators, PLO primitives and what is best not to do.



They asked not only about professional experience, but also about hobbies - whether I program in my spare time. Like many colleagues, with the help of programming, I also relax. He told about what he wrote for himself, what problems he solved, gave a link to his SVN-server and offered to get acquainted with the code of some of his projects. Perhaps in my case, this optional activity played a key role.

Now I myself participate in the recruitment of people. For Veeam, fire is still important in the eyes of a potential employee.

In addition to enthusiasm, an understanding in the field of parallel programming is also required, hence the input test task, which allows you to test these skills and has not changed since I joined the company. Now parallel programming is the cornerstone of the whole industry; without it, it is impossible to write competitive applications for mass service. Coming to Veeam, a person must be prepared to work in this paradigm. And at the same time, Veeam is ready to interview candidates several times, so, in case of failure, you can pull up the skills and try again. There are examples when in a year and a half after the first interview candidates come again and get a job.

Step 2. Unknown C #


I came to Veeam six years ago, and even then the product was the bulk of everything I had worked with before. For the first two weeks, my head was boiling up simply because I understood the code with which I would have to work. No, not because the code is bad, but because it was really a lot. The first week I sat and drew UML diagrams to cover all aspects of the architecture that needed to be expanded. Previously, this was not necessary.



For a trial period I was given a task requiring knowledge of C #, and I only had serious experience with C / C ++. I sat down to understand and by the end of the third month I implemented a working prototype of my first feature in the product - Instant VM Recovery for Hyper-V. She is able to lift cars of any size in minutes without transferring data. In critical situations this can be very important.

With some reservations, we can say that it was the full stack task - from a graphical user interface to low-level integration with the driver. Below was a driver for file virtualization on the file system - it was written by my colleague. Next, the C ++ code should receive read requests and redirect them to our repositories. On the other hand, in the C # part of the product, it was necessary to program the business logic and make some kind of graphical user interface features - admittedly, using the copy-paste method, because the UI team was then busy, and there was not much needed for the prototype. Subsequently, the interface, of course, finalized.

Solving such a task was helped not only by enthusiasm, but also by colleagues who happily answered questions and gave information about those parts of the product that I did not yet know. I think, with the help of such a complex quest, the manager would test my skills, determine his place in further work. As a result, I passed the trial period, and this feature is still part of the product and develops with it. It's nice.

Step 3. Exploration and immersion


In Veeam, on the whole, word-of-mouth transfer of experience is well established. So no one is left alone with the problem and can quickly get the answers you need. At the initial stage, I mostly communicated with my supervisor. Then there were questions about the organization of the UI - I went to other, profile managers. With further development, more and more colleagues were involved in such communications.

I know what the neighbors are doing


At Veeam, I especially liked the way the team teams up around the product. In fact, we have one big project that is central for our team - this is Veeam Backup & Replication. Tasks for the development of the product are divided into directions, which ultimately bring into the finished version a whole layer of features.

One feature is usually handled by one team. However, there are such epic features where more teams are involved. Then they actively communicate with each other. Current state meetings are held where we synchronize our activities. So that everyone understands what colleagues are doing, internal product webinars are held. In addition, we go to specialized conferences - we study and plan them for the year ahead after the New Year holidays.

I know where to go


At the previous place of work, basically, I was left to myself. It is useful, teaches autonomy and responsibility. I usually got a big problem and went into free swimming to solve it. Controlled the execution of the task more on the situation, but not regularly.

In Veeam, it's not like that. If requirements or conditions change, everyone responds quickly and continues to move in the right direction. If I cannot find the answers to any questions myself, then I know who to go to. At the same time, no one deals with micromanagement here - balance is maintained.



I do not worry on deadlines


But what immediately caught my eye: in Veeam there are no super-rigid deadlines. We can retreat for a week or two from the deadline, if the product benefits from this. After implementing a new feature, we spend a lot of time on bringing it to mind from all sides. Everyone is involved in this process: developers, testers, analysts, technical writers, support and sales staff who provide us with feedback from our customers. If someone has an idea how to make the product better, he has the opportunity to bring it to the leadership. After talking with the lead and checking ideas for stability, they are put up for public discussion - they have every chance of becoming features in future versions.

We measure seventy times and maybe not even cut off


We are not in a hurry to run to new standards and developer tools. We estimate everything through the specifics of the product; there are hard restrictions on the market and customers. Replacing the same .NET framework with developers usually doesn’t cause any problems - it is written taking into account compatibility. But in the new versions there may be errors, because of which something will float in our product. So when replacing the framework, you need to test the entire product again for compatibility.

Nevertheless, we are trying to keep our stack free from dust: now we are preparing to switch to C ++ 11 and solve the latest problems with support in outdated Linux systems. Sometimes other factors are pushing for progress. For example, a partner has released a new version of the product we need to support, and for this we need a newer .NET.

Step 4. From developers to tmlids


Let's go back to my story. After about 8-9 months of work, I was offered to become a team leader: to head the Hyper-V direction and take a couple of people to help. I had some experience from the previous place of work, but there I was my own boss: I was sitting alone in my own department and wrote the code. Only when the project was 95% ready, I was hired to help a couple of people. Then, for another year, I tentatively filled the heads of the leaders, not knowing exactly how to develop further. I read the popular book “How to feed cats”, but I took out only positive emotions from it. When I realized that I needed to learn how to work with people, I just had to change jobs. I had such leadership bag when I agreed to try myself as a leader in Veeam.



In general, the developer has two options for development - in a technical or administrative direction. According to my feelings, there is a certain shortage of the latter on the market. Few people want it, and those who want grow into tmlid or project managers more slowly than a business develops.

Often, companies close their positions as a team leader, not by an employee hired by their own, but by their own former developer. I was also offered to try and at the same time stay in the position of senior-developer. If you like it - I was open the road in the administrative direction. If not, I could safely continue to develop in the technical branch.

The subtleties of the administrative branch are difficult to learn only from books and articles, so the company sent me to various soft skills trainings. Which for timlidov go into hard skills. There were many different programs, the most memorable are the trainings of two companies - the international online school of managers Stratoplan and LiCO.

Veeam has an exchange of experience in solving not only technical, but also administrative tasks. I tried to develop here, to learn as many different points of view as possible - in order to have more tools for solutions in different situations. The rest comes with personal experience. You encounter a specific problem, you solve it, and in the future you try to prevent it or use the solutions you have already worked out.

Step 5. Administrative vs technical


In six years at Veeam, I grew to the leadership of the software development department in the areas of Hyper-V and Agent Management. In direct submission I have seven people, from junior to senior. And we deal with all issues related to Hyper-V support: backups, replications, restorers of all possible options, integration with the hypervisor, etc.

I am glad that, despite the career advancement, I am still immersed in the technical side of the product. Everybody writes code in Veeam, even project managers sometimes drop in. Although their involvement is much less than the developers themselves. Timlides participate in the development constantly. Veeam does not have strict requirements on how much code should write a lead, how much time to do administrative tasks, synchronize the work of other people, etc. It is only important that the team as a whole will achieve success.

As elsewhere, the balance is sometimes disturbed. For six years, my team has divided itself twice: people who have become leaders in the framework of a new theme have grown up in it. It happens that team members who have closed certain tasks switch to other questions. At such moments, you have to spend more time on the technical part, and at the same time you shouldn’t “float” administratively - an excellent shake-up is obtained. For six years, there were no such critical situations from which my colleagues and managers would not have helped me out.

Veeam constantly recruits staff, teams quickly replenished. This is due to the growth of the team in Russia and the opening of the European R & D center in Prague. There can go the developers who have decided to change their place of residence and continue his career in Veeam.

And after new employees are recruited, my job begins - to train people so that everything will return to normal.

Step 6. New Team Leads


My path to Veeam is not unique. The company is trying to create all the conditions so that people gradually grow in an interesting direction for them. It is clear that this is not happening instantly. In the management branch, the path from the position of middle-developer to timlid with the passage of all intermediate stages (experienced developer, senior developer, junior team leader) takes on average 3.5-4 years.



Therefore, at work one of my main tasks is to grow a replacement for myself. Just kidding Raise subordinates on whom you can rely in work as yourself. I don’t mind if, sooner or later, all the employees who are in my submission today will become leaders or architects, become independent and lead their direction.

Finally, I’ll tell you a little about “out-of-class” activity. In addition to the usual holidays, several times a year we hold events that we choose ourselves. The company allocates a budget for such an event, and we can master it at our discretion. At such a moment there is almost no indifferent one, the whole team chooses between a bar, a bowling alley or something new. There are also mass activities, when ~ 150 people go to the camp site to ride quad bikes and fry kebabs.

Even in the company there are a lot of "clubs of interest," for example, eSports fans can unite and arrange a corporate tournament on "Contre." Almost all kinds of leisure have their own circle of like-minded people, there are already more than ten of them.

Now there are more than 100 developers in Veeam - this is 4 times more than when I came to the company. Now, HR periodically conducts mass polls about what we lack. As a result of such surveys, webinars, a full-time English teacher and conference attendance appeared.

Six months ago, we launched the Veeam Academy project - for those who are going to connect their lives with programming, but still do not have much experience. In it you can take an intensive course of study and master the most popular technologies on the market, gain experience working on a project on Agile methodology. In Veeam Academy I act as a guest lecturer and code reviewer. Upon successful completion of the academy, all students of the course can have an interview and join our team. But studying at the academy to start working at Veeam is, of course, not necessary.

That's how my career went. I am glad that at one time I got to Veeam and can do what I love to benefit society, together with my colleagues. Thank you for your interest, to all of you.

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


All Articles