Where to work in IT, issue 2: SKB Kontur
SKB Kontur is one of the largest and oldest IT companies in Russia. In late October, she turns 30 years old, the number of all employees exceeded 8 thousand.
According to estimates collected on the service assessment of employers "My Circle", in July 2018, "Kontur" shared first place with "Yandex" among heavyweight companies.
"Contour" was founded in Yekaterinburg, when the city was still called Sverdlovsk. But then IT and IT are now two different areas. Everything develops at the speed of light, heritage and scale do not always help in competition.
Therefore, we tried to figure out which “Kontur” is actually - an ancient dinosaur or an advanced technology company - and talked with Alexander Golubev, who is responsible for the developers in the company.
What makes SKB "Kontur"
- Andrei Mikhailov, who stood at the origins of the "Contour", said that everything began with the sale of programs for the accounting of wages and labor. At the beginning of the 90s, the time was hard, and in the “Contour” they did different things. Even selling appliances and printers.
The programs were then made desktop, they were written in C ++, Delphi, often for the needs of only one specific customer. Then, of course, everything was rewritten and transferred to the web. Gradually, and all the excess has departed, but the main thing remains to this day - payroll accounting and accounting software.
True, now this is only one of the directions. We make products for all business needs. Certificates, document flow, electronic signature, reporting. There are so many products that it is difficult to count how many they really are. Estimates vary in the range from 30 to 60. Just because of the questions and what to consider as one product.
Office "Kontura" in Yekaterinburg
- But is there any kind of locomotive product?
For a long time it was "Kontur.Ekstern." In the early 2000s, it became possible to submit tax returns via the Internet. And although no one really had the Internet, we still made a bet on the web. And they were right: the product fired, and the company's rapid growth began.
Seven years ago, when I came, the company was three times smaller. Now about a thousand people are developing our products. And then there was a man of three hundred.
- It was difficult to cope with growth?
Why was it? Growth and now continues. People, products and customers are becoming more and more. We are growing by a quarter from year to year. We scale processes, we refuse from non-working ones, we invent new ones. Apparently, somehow cope.
We like the fact that we develop our own products. People in teams - programmers, analysts, testers - all relate to the products, as their brainchild, offer ideas, improvements. We are not interested in making orders for the exterior, which are not related to our main work - this is not about Contour.
About technologies and languages
- You probably still have high demands on the quality and purity of the code, as is the case in big businesses. Do developers have a tool cult because of this?
“When yesterday’s or current student comes to the company with burning eyes, he has more commitment to a particular language.” He tried it, he began to get something, and he is very soulful by this. And of course he wants to work and develop in one direction. This is really good.
Zombie programming team on the contour hackathon
But with experience comes an understanding that the language is a tool, and the tools can be changed. You start to develop from the point of view of building architecture, using algorithms, storages, queues, protocols, APIs — everything where the language is not important, but higher-level things are important.
Therefore, among the Sinyori there are significantly fewer of those who are fanatically devoted to one language.
- I ran through the requirements of your vacancies , and it seems you really use everything that exists.
- Well, yes, we do not use only very low-level things. The assembler in the "Contour" is not written.
Most of the server code is written in C #. There are some Java, Go and Node.js in the infrastructure and some products. Mobile applications - on Kotlin, Swift and C # (Xamarin). Everything that is around data science, we write in Python and R, without them there is nowhere. Depending on the tasks, we use suitable relational, document, column or key-value data stores: MS SQL Server, MariaDB, PostgreSQL, MongoDB, Cassandra, ClickHouse, Redis, Kafka, HDFS. There are also our own developments: for example, Kanso is a distributed fault-tolerant data storage with binary log semantics (similar to Google GFS), Zebra is a document in-memory database, Echelon is a distributed fault-tolerant task queue. We use them in production for many years, and maybe one day they will appear in the open source .
- How do you think?
- Since I am from backend, I tend to TypeScript (although of course I wrote a lot on JS, even when there was no React). A person accustomed to static typing is more familiar with TypeScript. In any case, almost all the code for the frontend or for Node.js is written with types.
Master class at the summer Konfure 2018 - the internal conference of the developers of "Contour"
But in general, my attitude towards languages is not religious. What tools are more convenient for specific tasks, and they should be used. I generally wrote the master on Erlang. In 2011, when I came to Kontur, there was even one product written on Erlang. But when his main ideological mastermind left, there were problems with finding a replacement specialist. Therefore rewrote on checked With #.
- And how do you determine where what language will be used?
Development managers and team leaders have a high degree of freedom, they are free to choose tools and technologies. But since the product does not start in a vacuum, they discuss the choice with "neighbors", more experienced colleagues, see if they can find specialists. There is freedom, but I cannot say that we experiment every day with new languages. We need proven tools for industrial development so that later we can develop and maintain our own products.
We have a practice design review. If you want to launch a new project or make a serious amendment to the current one, you make out a presentation and you are going to meet a special community where cool engineers give you a feedback.
Of course, if you decide that no one decides for you - there will be no ultimatums and prohibitions, the salary will not be taken away. But, if a team, contrary to all, decides to choose a controversial technology, it must be prepared for risks. The project may not be compatible with a part of the infrastructure or it will not be possible to integrate any functionality into it - then everyone will feel a lot of pain.
Usually everything is discussed. A month ago there was an idea to write one of the new services on F #. In such cases, I try to conduct a dialogue, asking: “Why exactly F #? Where are you going to look for people? ”In the end, they convinced the person to stay in C #. That is, to convince - yes, to order - no.
- Have you tried writing on F #?
No, but after all, I am not the only one participating in discussions of this kind. We have engineering advice: seven cool engineers. These are people selected on the basis of success stories within the company. They have gained credibility in many projects. The guys are also involved in development projects of the Development Department (this is a division that unites the majority of Contour developers).
- Have you tried to collect a variety of stacks in this council?
Variety is a good point, but not our main one. Since the engineers are cool, they have a sufficient outlook. They write C # code, but it’s not a problem for them to figure out the Java questions.
There is no diversification in the council, but one should not think that all discussions are only in it. In addition to the engineering council, we have professional communities. For example, the frontend has its own leader, its own community with high skills. The decision to develop the frontend is made by a hybrid team, including a representative of the engineering council.
Most of the teams use YouTrack as a task tracker. Some teams use Trello and Jira. We write the code in Visual Studio, Visual Studio Code, Rider, WebStorm and so on. We use JetBrains products for many different tasks.
We use TeamCity as a CI system, deploying services via Octopus to a private cloud managed by our own Houston system or at Kubernetes. Metrics are collected through Graphite. For alerts on metrics use Moira. Logs are collected, stored and viewed in ELK.
Daily communication goes to Slack and Telegram. There is Staff - own internal social network. There are news about products, vacancies, social life, and sporting events. You can also book talks and write articles. It is becoming a popular communication channel. More and more things are being discussed online.
In recent years, we have been developing infrastructure solutions right away on GitHub. The most famous open source product is the Moira emergency notification system , besides us it is used in Avito and Yandex.Money. The most ambitious - the East . This is a set of tools for developing microservices on the .NET platform, which helps them communicate with each other and automatically collects their logs, metrics and distributed traces.
About company structure
The largest office "Kontur" is located in Yekaterinburg. With the growth of the company, more and more employees are needed, so the company is constantly expanding. Development offices are already in Novosibirsk, Perm, Izhevsk, Kazan, Innopolis, Rostov-on-Don and St. Petersburg. Moreover, the initiative to open new offices often comes from the employees themselves. Some cool engineers planned to move to live in St. Petersburg - then we opened an office in this city.
The overwhelming majority of employees work in offices, but since teams can be distributed between cities, this year Kontur decided to open up to hire remote workers. We are still learning how to work in this format, and there are more and more such employees.
“Contour” is divided into three major areas - product creation, sales and work with clients, internal services. Relationships are built as horizontally as possible in a company of almost 10 thousand people: we are actively working to preserve the old and the emergence of new relationships between employees.
In product teams there are employees of different specializations: programmers, testers, analysts, interface designers, marketers, experts, managers ... New startups saw one team, grown products are often divided into several services and are developed by several subcommands.
Teams are independent and autonomous: managers try not to interfere with them with unnecessary instructions, bureaucracy and protocols.
Teams have leaders with different roles. Timlides are responsible for the quality of development. A development manager, most often a former engineer, builds a product creation process. The project manager is engaged not only in development, but also in sales, promotion, marketing, communication with partners. There are also leaders of the product line. They make decisions about launching new products or expanding old ones.
- Is it hard to get to you?
- It is difficult, but possible. There is, for example, a large internship system for students who are now held all year round. This summer, for example, 140 students trained, the majority remained in the company.
- I heard about your guild interlocutors. Tell me what it is?
These are engineers of various specialties who are involved in hiring programmers. For example, for backend developers they conduct technical interviews in three or four stages: they check the ability to write code that works; ability to use algorithms and data structures; the ability to create architecture. In midl and sineor, they are also testing the outlook in technology.
The guild now includes about 90 developers. To get there, you need to select the stages that you want to carry out (code, algorithms, architecture), and conduct several interviews as a "slave" (usually interviews are conducted by a pair of "leading" and "slave" engineers). After passing this selection, a person enters the pool of the guild interlocutors.
We consider it normal if each of its participants conduct an interview once a week. So people can do their work and contribute to the hiring of programmers.
The guild assesses the technical level of the candidate and reports to me or my deputies. We conduct the final interview, we check more soft skills, how important is the value of work to a person, how much he can reflect on his mistakes.
Poster section on the summer hackathon
“Has such a system made the process faster?”
It certainly became faster and clearer. Previously, there was a list of priorities of teams in the form of a rating. Eychar walked down on it and in turn offered to the candidate's teams. As a result, one team could talk with him and reject, the other talk and reject, the third. It was impossible to understand how many interviews a person will have. Evaluation of technical skills was also blurred - the teams paid attention to different things.
Now a person goes through four stages and the final interview for forty minutes. Ten minutes after it, we already offer or refuse.
Everything lasts three, maximum four days. Previously, the expectation was two or three weeks.
- For all directions, dial the same?
No, all these stages relate primarily to backenders - Sharpistam and Javistam. In front-fenders, these stages are collapsed into one big interview.
In general, not only technical skills of a person are important for us. Of course, there is a certain limit, a technical minimum. But more importantly, can a person adapt and develop. In a sense, our developers have a cult of development.
People without burning eyes and desire to develop do not suit us. Even if we accept such a person, most likely we will not work together.
- Newbie is coming. What's next?
They get into Butcamp and are adapting there. Butcamp consists of two parts. The first one is learning - it lasts two weeks: three days to get acquainted with the “Contour” as a whole, with products, business moments - where is the cafe, where is the conference room, immersion in culture, traditions, holidays; another week and a half to get acquainted with technology and tools. For example, developers repeat clean code, exception handling, use of functional programming elements, testing and TDD, SOLID, DI. Learn how infrastructure and common services are designed to speak the same language with other developers.
In addition to training, beginners communicate with team leaders, development managers. The Timlids and managers can start communicating themselves, because this is open information - who came with the next set. A set in Butcamp happens every three weeks.
As a result, during these two weeks the candidate is determined in which teams he will go for an internship.
Internship is the second stage. During the probationary period a person may attend several internships. On average, there are three, about three weeks in a team. Or you can choose one team at once and stay in it.
- Regarding the capital, Ekaterinburg is a small city. There is no such thing that the juna come just to get pumped before the move, and the Siniors leave for sunny countries?
- Yes, people not only come, but leave. “Contour” invests a lot in education, but it never binds people, does not force them to sign contracts with some obligations. Of course, we are sad when people leave, but almost always keep in touch further.
There are cool engineers who have left Contour and are now working on Facebook, Amazon and Google.
Of course, in order to keep them, there are not enough buns in the kitchen and a bigger salary. We need breakthrough tasks. We have large and highly loaded systems, complex product tasks, important open source projects.
We monitor the market and pay salaries corresponding to it, so that there are no such situations when a person comes with a competing offer, and we start spinning like snakes on a griddle.
About internal hijacking of employees
Workspace in “Contour”
When new projects are launched, we first start looking for people inside. Internal hiring most often happens behind the scenes. A manager comes to me and asks him to find in the team someone who cannot sit in his place. And it happens that the whole team comes to “Kontur” at once, they say: “We want to work for you”. Then I go to the direction leaders and say: "Uncover backlogs, reach out pending products - a whole team has appeared."
But in general, the theme with transitions between teams is a bit painful for Kontur. This is due to the fact that they are largely independent of each other and the staff is also recruited independently. Of course, sometimes it happens that an employee moves abruptly, without prior agreement. Different managers treat this differently.
Someone is calm - all the same person continues to benefit the company. Someone is more zealous, says: “The times are tough in the team, and my people are still gone.” Someone says: “I would like to give it away, but I would talk to me first. No need to go directly to the employee and persuade ”.
Discussion of horizontal mobility is not the first year, different points of view. Each can be understood. I myself think that it is better that we offer a person something inside the company than let go of the limits.
Opportunities within the company are many. For example, one grocery analyst, a psychologist by training, saw within the “Contour” the opportunity to work in the specialty: now we have a staff psychologist who tells others how to change their work.
But the question is, of course, delicate.
How to burn
Energy Transformation - Hackathon 2018
- Often faced with burnout employees?
Not to say that often, but I come across. We try to help find ourselves. We give opportunities to move between projects, change roles, responsibilities. You can meet or phone on Skype with the very staff psychologist: he will advise how to be.
Sometimes it seems to me that I myself act as such a psychologist. People come to talk for life, it is important for them to just be heard, to get support. Specific transition proposals or business decisions are not always important - sometimes just participation is important.
- Did you personally burn out?
Yes of course. This was relatively recent when I assumed the role of the head of development management. From the beginning of the year to June there was burnout due to the transition.
Before that I was a manager in a team, and became the head of a direction. The chain of feedback from what I do has grown a lot before the company comes to its favor.
When I was a programmer, it was easier. There is a feature - zakommitili, zarelizili and ready. The development manager has already become more difficult, but all the same - I'm still in the team, we have updates, discussions, life is boiling. I see that the service is improving, users give feedback, everything is cool.
Now, having come to the management, I understand that there are a lot of teams, they will be released and released. But my spiritual involvement in this is not, I cannot say with absolute certainty that I have put my hand to this. No, I didn’t put it - people on the ground made these features, and I somehow was very high.
And it was hard for me to handle it.
Alexander Golubev at Konfure
But awareness helped that I was already in a similar situation, albeit on a smaller scale. Then I treated the problem as a challenge. Ok, I don’t know how to work with large tasks when there is no fast feedback. So I need to learn.
I managed due to the fact that I changed my attitude, and began to pay more attention to promoting global initiatives, rather than immersion in turnover.
- And why did you spend hakaton on games? This is not for those who are bored of writing business software?
This is just a fan, I see in this an element of creating a comfortable environment. If a person wants to participate in some competitions, you need to help him.
But I do not believe that such a tool will help with burnout. Here is a man at the game hackathon peeed and realized that it was cool. But we in the company do not develop games and cannot offer a person to continue to do them if he liked it so much.
Just when the team ran out of mana and you need to replenish the fuel - you connect to activities, and not even necessarily to hackathons. We have Confur, a developer conference twice a year, and quite a lot of people are involved in its organization. It is possible and useful for the company to do, and to diversify their activities. And we also have sports events all over the country every year. Of course, conferences and contests are needed to unite, strengthen horizontal ties. But, to some extent, these are ways to relieve stress.
- If the guys from Yandex tell you about their awesome corporate event, how do you boast to them?
Awarding the winners at Konfour
I, in general, do not particularly like to brag about who brought the cooler group to the new year. Not to this lies the soul. I would boast of our conference, which takes place every six months. There are going to developers from all offices.
On the one hand, there is something to be entertained - the traditional “What Where When When”, concerts, etc. - and a large working program, all sorts of master classes. Engineers arrange hackathons and participate in competitions, for example, they have been playing in the ICFP Contest for many years. Everyone can make a report at the conference, hold a meeting. This year we had about thirty mitaps, competitions and machine learning trainings.
So if I brag, I will say that we are not only hanging out, but also combining work. Although I am sure that there is such a thing in Yandex too. I do not think that it will impress them.
- Feel like rock stars in Yekaterinburg?
And how can this be understood? I think that in general we are fine. We don’t go to Bentley, but everything you need is there. A car, an apartment, people go on holidays to different countries, they live well. “Contour” helps in this, even gives loans in difficult situations. So I don’t feel like a rock star, but I’m happy that everything is in prosperity, perhaps yes.
- How soon will software replace accountants and lawyers?
We just thought about such issues, but could not articulate unanimously. Personally, my opinion is that in ten years professions like lawyers and accountants will change a lot. The familiar part, knowledge of the heap of different rules will be taken over by cars.
Accountants and lawyers will become closer to programmers and date to Scientists. The task of the accountant will not do the wiring, and analyze the financial flows. At law, data science will help in finding answers to questions, but these questions will need to be correctly formulated. A person’s influence will still be needed, but there will be fewer people in these professions. But qualification from them is required above.
- If Kontur was a cyberpunk corporation, what social structure would it have established in its city?
Well, probably closer to democracy, maybe a little technocracy. Just not totalitarianism. Power to the people!
- When the tower was demolished in Yekaterinburg, was it not a pity?
My opinion - what is and is not used, you need to either demolish and build something necessary, or find use. In general, not just stuck up and reminded of the bygone days.
If the old is obsolete, it must be replaced with a new one.