
Alexander Baranov works at Veeam as the R&D director and lives between two countries. He spends half his time in Prague and the other half in Saint Petersburg. These cities house Veeam's largest development offices.
In 2006, it was a startup of two entrepreneurs from Russia focused on software for backing up virtual machines (hence the name V[ee][a]M, virtual machine). Today, it's a giant corporation with over four thousand employees worldwide.
Alexander told us what it's like to work at such a company and how hard it is to get in. Below is his monologue.
Traditionally, we'll discuss the company's rating on "My Circle": Veeam Software received from its employees . It is valued for a good benefits package, a comfortable working atmosphere within the team, interesting tasks, and for making the world a better place.

What products does Veeam develop
Products that ensure the resilience of IT infrastructure. Fortunately, over time, hardware has become reliable enough, and clouds provide resilience. But human errors remain.
For example, the classic problem of update incompatibility with the organization's infrastructure. An administrator rolled out an untested update, either manually or automatically, disrupting the operation of the company's servers. Another example: someone made changes to a shared project or set of documents, considering it appropriate. Later, a problem was discovered, requiring a rollback to a week's earlier state. Sometimes these changes are not even related to conscious human actions: ransomware viruses have recently gained popularity. A user brings a flash drive with dubious content to their work computer, or visits a cat website, resulting in computers on the network becoming infected.
In a situation where something unfortunate has already happened, we provide the ability to roll back changes. If changes are only planned, we allow checking their impact in an isolated infrastructure recreated from a data center backup.
Backup copies often serve as a 'silent witness' during audits in organizations. Public companies need to comply with external regulators' requirements (such as the Sarbanes-Oxley Act), and this is not without reason. In 2008, the global economy shook due to certain financial market participants, to put it bluntly, falsifying their performance results. This triggered a snowball effect, leading to an economic downturn. Since then, regulators have been monitoring processes in public companies more closely. The ability to restore the state of IT infrastructure, email systems, and document management systems for reporting periods is one of the audit requirements.
Microsoft, Amazon, Google, and other cloud providers have native solutions that ensure the backup of resources within the cloud. However, their solutions are 'things in themselves.' The problem is that large companies often have hybrid IT infrastructure: part of it is in the cloud, and part is on the ground. Typically, web projects and customer-oriented applications reside in the cloud. Applications and servers that store confidential information or personal data are most often on-premises.
Additionally, organizations use several different clouds to build a single hybrid one to minimize risks. When a multinational company establishes a hybrid cloud, it needs a unified and common resilience system for the entire infrastructure.

How difficult is it to develop such products?
New technologies are constantly emerging that require study, adaptation, and experience. When we first came onto the scene as a startup, few took virtualization seriously. There were applications for backing up physical data centers. Virtualized data centers were viewed as toys.
We began supporting backup with virtualization in mind from the very beginning, when the technology was only used by enthusiasts. Then came its explosive growth and recognition as a standard. Now we see other areas awaiting a similar qualitative leap, and we try to stay ahead of the curve. The ability to keep our ear to the ground is somehow woven into the DNA of the company.
The company has long moved past its startup phase. Now, many large clients prioritize stability and reliability, and decisions regarding fault tolerance can take several years. There is a process of adaptation, product testing, and compliance with numerous requirements. It creates an amusing scenario — on one hand, there is a need to ensure reliability and confidence in the products, while on the other hand, staying modern is essential.
However, new developments always come with a certain level of unfamiliarity with technologies, the market, or both.
For example, after working for several years, we realized that we needed to leverage the built-in capabilities of data storage systems to speed up backups. This led to the establishment of an entire direction focused on integration with hardware manufacturers. Today, all the largest players in this market — HP, NetApp, Dell EMC, Fujitsu, and others — are partners of Veeam in this program.
We also thought that virtualization would replace traditional servers. However, life showed us that the last 10% of physical servers remain, either because they cannot be virtualized or it makes no sense to do so. These servers also need to be backed up. Thus, Veeam Agent for Windows/Linux was born.
At one point, we thought it was time for Unix to take its place in the museum and stopped supporting it. But once we started working with clients who had a long history, we realized that Unix is very much alive. We eventually developed a solution for it.
A similar situation occurred with tape drives. We thought, 'Who needs them in the modern world?' At that time, we were focused on features like granular data recovery or incremental backups with synthetic full copies — which simply cannot be done on tape, a disk is required. Later on, we discovered that tape drives serve as one of the means to ensure immutable backups needed for long-term storage — so that in five years, you can come back, grab a tape off the shelf, and conduct an audit. We started with small clients — and there, no one uses tapes. Then we grew to clients who told us that they wouldn't purchase the product without tape support.

What technologies are used in Veeam?
For tasks related to business logic, we use .NET. It's where we started, and we continue to optimize it. Currently, in a number of solutions, we utilize .NET Core. When the startup was first formed, there were several advocates of this stack on the team. It excels in writing business logic, speed of development, and tool convenience. Back then, it wasn’t the most popular solution, but now it’s clear that those advocates were right.
At the same time, we code for Unix and Linux, and work with hardware, which requires the use of different solutions. The system components related to data information that we store in backups, data search algorithms, and algorithms related to hardware operations are all written in C++.

How employees are distributed around the world
Currently, the company employs around four thousand people. About a thousand of them are in Russia. There are two large groups in the company. The first focuses on product development and technical support. The second makes the products visible to the outside world: sales and marketing fall within its expertise. The ratio between the groups is approximately thirty to seventy.
We have about thirty offices around the world. Sales are more broadly distributed, but development keeps pace as well. Work on some products is carried out simultaneously in several offices — some in St. Petersburg, others in Prague. Certain products are developed solely in one location, for example, the product that ensures physical backup for Linux is developed in Prague. There’s a product under development only in Canada.
We perform distributed development to meet client requirements. Large clients feel safer when development is in the same region where the product operates.
We already have a large office in the Czech Republic, and next year we plan to open another one in Prague — for 500 developers and testers. Those who moved to the capital of the Czech Republic in the 'first wave' share their experiences and tips on Habr with everyone interested in the possibility of working in Europe. Our office in Russia is located in St. Petersburg, some internal projects are managed in Izhevsk, and support is partially based in Moscow. In total, customer support includes several hundred people around the world. There are specialists with various levels of technical expertise and specialization. The highest level consists of individuals who can understand the product at the source code level, and they work in the same office as the development team.

How the processes are structured
Approximately once a year, we release major updates with new functionality, and once every two to three months — updates that include bug fixes and refinements that address urgent market demands or platform changes. We prioritize requirements from minor to critical, without which a release would be impossible. The latter are referred to as 'epics'.
There is a classic triangle — quality, quantity of resources, deadlines (colloquially, 'fast, good, cheap - choose two'). We cannot afford to do a poor job; quality must always be high. Resources are also limited, although we are constantly attempting to expand. There is much more flexibility in managing time, but it is often fixed as well. Therefore, the only thing we can vary is the amount of functionality in the release.
We typically try to keep the epics to no more than 30-40% of the projected duration of the release cycle. The remainder can be cut, postponed, refined, or modified. This is our maneuvering space.
For each requirement in a release, a temporary team is formed. It can consist of anywhere from three to fifty people, depending on the complexity. We adhere to an agile development methodology, holding reviews and discussions of the completed and upcoming work for each functionality once a week.
Half of the release cycle time is spent on development, and half on refining the product. However, we have a saying — 'the technical debt of a bankrupt project is zero.' Therefore, it is more important to create a product that works and is in demand than to endlessly polish the code. If the product is popular, then it's worth continuing to develop it and adapting it to future changes.

How Veeam Hires Developers
The selection algorithm is multi-tiered. The first level is a conversation between the candidate and the recruiter about the candidate's preferences. At this stage, we try to understand if we are a good fit for the candidate. It is important for us to be appealing as a company since onboarding someone to a project can be a costly endeavor.
If there is interest, we move to the second level where we offer a test assignment to assess the relevance of the candidate's experience and what they can demonstrate as a specialist. For example, we might ask them to create a file compressor. This is a standard task that reveals the candidate's approach to code, their culture and style, and the solutions they use.
The test assignment usually shows a lot. A person who has just learned to read and is writing their first letter is noticeably different from someone who writes letters regularly.
Next, we conduct an interview. Typically, it's done by three team leaders to ensure that the evaluation is as objective as possible. Moreover, this helps in hiring technically compatible individuals who have similar methods and approaches to development, even if they will ultimately work in different teams.
We conduct several interviews for an open position over the course of a week and make a decision on who we will continue to work with.
Often, candidates come to us and say they are looking for a job because there is no room for growth in their current position — promotions are only anticipated with the retirement of their boss. We have a slightly different dynamic. Twelve years ago, Veeam was a startup with ten employees. Now, it's a company with several thousand employees.
People come here like entering a raging river. New directions constantly emerge, and team leads are becoming yesterday's regular developers. Individuals grow technically and administratively. If you're working on a small feature but want to expand it, half the job is already done. Support will be available at all levels, from the team leader to the company owners. If you lack administrative skills—there are courses, internal trainers, and experienced colleagues. If you're short on development experience—there's the Veeam Academy project. So we are open to everyone, both professionals and beginners.
The Veeam Academy project is a free evening offline intensive course in C# for beginner programmers, with job prospects at Veeam Software for the best students. The goal of the project is to bridge the gap between the knowledge and practical skills of an average university graduate and the knowledge required to attract a good employer. For three months, participants study OOP principles in practice, immerse themselves in the specifics of C#, and explore the underpinnings of .Net. In addition to lectures, tests, labs, and personal projects, participants develop a joint project according to the rules of real companies. The project topic is not known in advance—it is chosen together with everyone in the first days after the course starts. The most recent project was a Virtual Bank.
Applications are now open for .
Source: habr.com
