Start with a full stack and not regret it: from a senior developer to a department head in six years

    Good day to all! My name is Lukyanov Kirill. About six years ago, I came to Veeam as a senior developer and during that time I grew up to be 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 planning an interview.

    Step 1. Interview

    The decision to change jobs was not easy for me. But the delay in salary at the previous place of work was approaching three months, despite the fact that the project was generally completed. I decided it was time to put my resume on HH. The interview at Veeam was the second for me.

    I didn’t know much about the company then, but at the interview the managers clearly outlined the sphere of activity 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”, although with a slightly different aspect of it.

    Then I went to the Senior C ++ Developer vacancy, despite the fact that before that, in commercial development, my main one was C. C ++ I studied for myself. Straustrup, Sutter, practice in the evenings, the invention of bicycles and numerous bumps from the "same rake". But everything was not in vain. At a minimum, I was able to conduct a dialogue about simple things - containers, iterators, OOP primitives, and what is best not to do.

    They asked not only about professional experience, but also about hobbies - whether I program in my free time. Like many colleagues, with the help of programming, I also relax. He talked about what he wrote for himself, what tasks 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 am involved in recruiting people. For Veeam, the fire in the eyes of a potential employee is still important.

    In addition to enthusiasm, 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. Parallel programming is now the cornerstone of the entire industry; without it, you cannot write competitive mass-service applications. Coming to Veeam, a person must be prepared to work in this paradigm. And, along with this, Veeam is ready to interview candidates several times, so that, in case of failure, you can tighten the skills and try again. There are examples when, after 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 larger than anything I had previously worked with. The first two weeks my head was boiling simply from the fact that I knew the code that I had to work with. No, not because the code is bad, but because there were really a lot of it. The first week I sat and drew UML diagrams to cover all aspects of the architecture that needed to be expanded. This has not been done before.

    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 sort it out 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 knows how to lift machines of any volume in a few minutes without pumping data. In critical situations, this can be very important.

    With some caveats, we can say that it was a full stack task - from a graphical user interface to low-level driver integration. Below was a driver for virtualizing files on the file system - it was written by my colleague. Next, C ++ code was supposed to 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, however, using the copy-paste method, because the UI command was then busy, and it did not require much for the prototype. Subsequently, the interface, of course, was finalized.

    It was not only enthusiasm that helped solve this problem, but also colleagues who were happy to answer questions and provide information on those parts of the product that I did not know yet. I think, with the help of such a complex quest, the leader probed my skills, determined the place in further work. As a result, I passed the trial period, and that feature is still part of the product and is developing with it. It's nice.

    Step 3. Learning and immersion

    At Veeam, on the whole, the word-of-mouth experience transfer is well established. So no one is left alone with the problem and can quickly get the right answers. At the initial stage, I mainly talked with my leader. Then questions arose about the organization of 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 came together around the product. In fact, we have one big project, which is the main one for our team - this is Veeam Backup & Replication. Product development tasks are divided into areas that ultimately bring a whole layer of features to the finished version.

    As a rule, one team deals with one feature. However, there are such epic features where more teams are involved. Then they actively communicate with each other. Current state meetings are held at which we synchronize our activities. So that everyone understands what their 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 my own devices. It is useful, teaches independence and responsibility. Usually I got a big task and went into free swimming to solve it. They controlled the execution of the task more according to the situation, rather than regularly.

    In Veeam, this is not so. If requirements or conditions change, everyone responds quickly and continues to move in the right direction. If I can’t find the answers to some questions myself, I know who to go to. At the same time, no one is engaged in micromanagement here - the balance is maintained.

    I don't get my head on deadlines

    But what immediately caught my eye: Veeam has no super-tight deadline requirements. We can retreat a week or two from the deadlines if the product benefits from this. After the implementation of some new feature, we spend a lot of time to bring 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 a product better, he has the opportunity to convey it to the leadership. After talking with the leader and testing ideas for sustainability, they are submitted for general discussion - they have every chance of becoming features in future versions.

    We measure seventy times and maybe we don’t even cut

    We are not in a hurry to run to new standards and developer tools. We evaluate everything through the specifics of the product; there are severe restrictions on the market and customers. Replacing the same .NET framework with developers usually does not cause problems - it is written with compatibility in mind. But in new versions, errors may appear that will cause something to float in our product. So when replacing the framework, you need to test the entire product again for compatibility.

    Nevertheless, we try to prevent our stack from becoming dusty: now we are preparing to switch to C ++ 11 and will solve the latest support problems in legacy Linux systems. Sometimes other factors push progress. For example, a partner has a new version of the product that we must support, and for this we need a newer .NET.

    Step 4. From developers to team leads

    Let's get back to my story. After about 8-9 months of work, I was offered to become a team leader: head a 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, they hired a couple of people to help me. Then, for another year, I hesitantly stuffed leadership bumps, just not knowing how to develop further. I read the popular book "How to graze cats", but brought 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. This is the kind of leadership bag I had when I agreed to try myself as a leader in Veeam.

    In general, the developer has two development options - in the technical or in the administrative direction. According to my feelings, there is a certain shortage of the latter on the market. Few want this, and those who want to grow into team leaders or project managers are slower than the business is developing.

    Often, companies do not close team leader positions with a hired employee, but with their own former developer. I was also offered to try and at the same time remain in the position of senior developer. If you like it, I was opened the road in the administrative direction. If not, I could safely continue development in the technical branch.

    The intricacies of the administrative branch of books and articles are difficult to learn, so the company sent me to various trainings on soft skills. Which for team leads turn into hard skills. There were many different programs, the trainings of two companies - the international online school of managers Stratoplan and LiCO - were most remembered.

    Veeam has established 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 - so that in different situations I have more tools for solutions. The rest comes with personal experience. You encounter a specific problem, you solve it, and in the future you try to prevent this from happening or use already developed solutions.

    Step 5. Administrative vs technical

    Over the course of six years at Veeam, I have grown to become the head of software development for Hyper-V and Agent Management. In direct submission, I have seven people, from junior s to senior s. And we deal with all issues related to support for Hyper-V: backups, replication, restores of all possible options, integration with a hypervisor, etc.

    I am glad that, despite the career advancement, I am still immersed in the technical side of the product. Everyone writes code in Veeam, even project managers sometimes drop by. Although their involvement is much less than that of the developers themselves. Timlids are constantly involved in development. Veeam does not have strict requirements for how much code a lead should write, how much time it takes to do administrative tasks, synchronize the work of other people, etc. All that matters is that the team as a whole will succeed.

    As elsewhere, the balance is sometimes upset. For six years, my team has been divided twice: people grew up in it who themselves became leaders in the framework of a new topic. It happens that team members who closed certain tasks switch to other issues. At such moments, you have to devote more time to the technical part, and at the same time the administrative should not “float” - an excellent shake is obtained. For six years there have been no such critical situations that colleagues and managers would not have helped me get out.

    Veeam is constantly recruiting employees, teams are quickly replenished. This is due to the growth of the team in Russia and the opening of the European R&D center in Prague. Developers who decide to change their place of residence and pursue a career in Veeam can go there.

    And after the new employees are recruited, my work begins - to educate people so that everything returns to normal.

    Step 6. New Team Leads

    My journey to Veeam is not unique. The company is trying to create all 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 middle-developer position to the team lead with the passage of all intermediate stages (experienced developer, senior developer, junior team leader) on average takes us 3.5-4 years.

    Therefore, at work, one of my main tasks is to grow a replacement for myself. Just kidding. To raise subordinates on whom you can rely in work as yourself. I do not mind if, sooner or later, all the employees who are today under my command, become leaders or architects, gain independence and take charge of their direction.

    In the end, I’ll talk a little about “extracurricular” activity. In addition to the usual holidays, several times a year we hold events that we choose. The company allocates a budget for such an event, and we can use it at our discretion. At such a moment, there are almost no indifferents, the whole team chooses between a bar, bowling or something new. There are also massive activities when ~ 150 people go to the campsite to ride ATVs and grill kebabs.

    The company also has a lot of “interest clubs”, for example, e-sports enthusiasts can unite and arrange a corporate tournament for “Contra”. Almost all kinds of leisure activities have their own circle of like-minded people, there are already more than ten of them.

    Now Veeam has more than 100 developers - it is 4 times more than when I joined the company. Now HR periodically conducts mass polls about what we are missing. As a result of such surveys, webinars, a full-time teacher of English, and attendance at conferences 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 training course and master the most popular technologies on the market, gain experience on a project using the Agile methodology. At Veeam Academy, I act as a guest lecturer and code reviewer. Upon successful completion of the academy, all students of the course can be interviewed and join our team. But studying at the academy to start working at Veeam is, of course, not necessary.

    This is how my career has developed. I am glad that at one time I got to Veeam and I can do my favorite thing that benefits society, together with my colleagues. Thank you for your interest, see you all.

    Also popular now: