Où travailler en informatique, numéro 2: SKB Kontur

image

SKB Kontur est l'une des sociétés informatiques les plus importantes et les plus anciennes de Russie. Fin octobre, elle a 30 ans, le nombre de tous les employés a dépassé les 8 000.

Selon les estimations recueillies sur le service d'évaluation des employeurs My Circle, en juillet 2018, Kontur partageait la première place avec Yandex parmi les entreprises de poids lourds.

«Kontur» a été fondée à Ekaterinbourg, alors que la ville s'appelait encore Sverdlovsk. Mais alors l'informatique et maintenant l'informatique sont deux domaines différents. Tout se développe à la vitesse de la lumière, l'héritage et l'échelle n'aident pas toujours à la compétition.

Par conséquent, nous avons essayé de déterminer quel «Kontur» est en fait un ancien dinosaure ou une société de technologie de pointe, et nous avons discuté avec Alexander Golubev, qui est responsable des développeurs de l'entreprise.




Alexander Golubev

Que fait SKB Kontur?


- Andrei Mikhailov, qui était à l'origine de Kontur, a déclaré que tout avait commencé avec la vente de programmes de comptabilité des salaires et du travail. Au début des années 90, le temps était difficile et dans le "Circuit", ils ont fait des choses différentes. Même la vente d'équipement et d'imprimantes.

Les programmes ont ensuite été rendus bureautiques, ils ont été écrits en C ++, Delphi, souvent pour les besoins d'un seul client spécifique. Ensuite, bien sûr, tout le monde a réécrit et transféré sur le Web. Peu à peu, tout ce qui est superflu a disparu, mais l'essentiel reste pour l'instant - la comptabilité des salaires et les logiciels de comptabilité.

Certes, maintenant ce n'est qu'une des directions. Nous fabriquons des produits pour tous les besoins des entreprises. Certificats, workflow, signature électronique, reporting. Il y a tellement de produits que compter combien d'entre eux est en réalité une tâche difficile. Les estimations divergent dans une fourchette de 30 à 60. Juste à cause des questions, ce qu'il faut considérer comme un seul produit.


Bureau "Contour" à Iekaterinbourg

"Mais y a-t-il un produit de locomotive?"

Pendant longtemps, c'était Kontur.Ekstern. Au début des années 2000, il est devenu possible de soumettre des déclarations fiscales via Internet. Et même si personne n'avait vraiment Internet, nous parions toujours sur le web. Et ils avaient raison: le produit a été tourné et l'entreprise a commencé à croître rapidement.

Il y a sept ans, à mon arrivée, l'entreprise était trois fois plus petite. Aujourd'hui, environ un millier de personnes sont engagées dans le développement. Et puis il y avait un homme de trois cents.

- A-t-il été difficile de faire face à la croissance?

Pourquoi? La croissance se poursuit maintenant. Les gens, les produits et les clients sont de plus en plus nombreux. Nous progressons d'un quart d'année en année. Nous adaptons les processus, nous refusons du ralenti, nous inventons de nouveaux. Apparemment, nous nous débrouillons en quelque sorte.

Nous aimons que nous développions nos propres produits. Les gens en équipes - programmeurs, analystes, testeurs - traitent tous les produits comme une idée originale, proposent des idées, des améliorations. Nous ne sommes pas intéressés à passer des commandes pour les externes qui ne sont pas liés à notre travail principal - il ne s'agit pas de Kontur.



À propos de la technologie et des langues


- Vous avez probablement encore des exigences élevées en matière de qualité et de propreté du code, comme c'est le cas dans les grandes entreprises. Les développeurs n'ont pas de culte de l'outil à cause de cela?

- Lorsqu'un étudiant d'hier ou actuel aux yeux brillants entre dans l'entreprise, il est plus engagé dans une langue particulière. Il l'a essayé, quelque chose a commencé à marcher pour lui, et il en est très spiritualisé. Et bien sûr, il veut travailler et se développer dans une seule direction. C'est vraiment bien.


L'équipe de programmation des zombies sur le hackathon "Contour"

Mais avec l'expérience vient la compréhension que la langue est un outil et que les outils peuvent être modifiés. Vous commencez à développer en termes de construction d'une architecture, en utilisant des algorithmes, des référentiels, des files d'attente, des protocoles, des API - tous là où le langage n'est pas important, mais des choses de niveau supérieur sont importantes.

Par conséquent, il y a beaucoup moins de siniors qui se consacrent fanatiquement à une langue.

- J'ai parcouru les exigences de vos postes vacants , et il semble que vous utilisiez vraiment tout ce qui existe.

- Eh bien, oui, nous n'utilisons pas que des choses de très bas niveau. Dans l'assembleur, ils n'écrivent pas à Contour.

La plupart du code serveur est écrit en C #. Il y a des Java, Go et Node.js dans l'infrastructure et certains produits. Applications mobiles - sur Kotlin, Swift et C # (Xamarin). Tout ce qui concerne la science des données est écrit en Python et R, sans eux, il n'y a nulle part. Selon les tâches, nous utilisons des magasins de données relationnelles, documentaires, colonnes ou valeurs-clés appropriés: MS SQL Server, MariaDB, PostgreSQL, MongoDB, Cassandra, ClickHouse, Redis, Kafka, HDFS. Il y a aussi nos propres développements: par exemple, Kanso est un entrepôt de données distribué tolérant aux pannes avec une sémantique de journal binaire (similaire à Google GFS), Zebra est une base de données en mémoire de documents, Echelon est une file d'attente de travaux tolérante aux pannes distribuée. Nous les utilisons en production depuis de nombreuses années, et peut-être qu'un jour ils apparaîtront en open source .

Nous écrivons du code client en TypeScript ou JavaScript avec Flow. Le cadre principal est React, pour lequel nous avons écrit une bibliothèque de composants pour les guides frontaux, mais ailleurs, nous utilisons Angular. Mais dire avec certitude qui a gagné - TypeScript ou JavaScript - n'est pas encore possible. Le combat est toujours en cours.

- Qu'en penses-tu?

- Étant donné que je suis du back-end, j'ai tendance à taper sur TypeScript (même si bien sûr j'ai beaucoup écrit sur JS, même quand il n'y avait pas de React). Pour quelqu'un qui est habitué à la frappe statique, TypeScript est plus familier. Dans tous les cas, presque tout le code pour le front-end ou pour Node.js est écrit avec des types.


Master class à Summer Confur 2018 - la conférence interne des développeurs Contour

Mais en général, mon attitude envers les langues n'est pas religieuse. Quels outils sont plus pratiques pour des tâches spécifiques, ceux-ci doivent être utilisés. J'ai généralement écrit une maîtrise sur Erlang. En 2011, lorsque je suis arrivé à Kontur, un produit a même été écrit sur Erlang. Mais lorsque son principal cerveau idéologique est parti, il a été difficile de trouver un remplaçant. Par conséquent, réécrit en C # éprouvé.

"Et comment déterminez-vous où la langue sera utilisée?"

Les responsables du développement et les chefs d'équipe ont un degré de liberté assez important, ils sont libres de choisir des outils et des technologies. Mais comme le produit ne démarre pas dans le vide, ils discutent du choix avec des «voisins», des collègues plus expérimentés, et voient s'ils peuvent trouver des spécialistes. Il y a de la liberté, mais je ne peux pas dire que chaque jour, nous expérimentons de nouvelles langues. Nous avons besoin d'outils éprouvés pour le développement industriel, afin que plus tard nous puissions développer et entretenir nos propres produits.

Nous avons une pratique d'examen de la conception. Si vous voulez lancer un nouveau projet ou apporter une modification sérieuse au projet actuel, vous faites une présentation et réunissez une réunion d'une communauté spéciale où des ingénieurs sympas vous donnent des commentaires.

Bien sûr, si vous décidez que personne ne décide pour vous - il n'y aura pas d'ultimatums et d'interdictions, ils ne vous enlèveront pas votre salaire. Mais, malgré tout, l'équipe décide de choisir une technologie controversée, il faut se préparer aux risques. Le projet peut ne pas être compatible avec une partie de l'infrastructure ou certaines fonctionnalités ne peuvent pas y être intégrées - alors tout le monde ressentira beaucoup de douleur.



Habituellement, tout est discuté. Il y a un mois, il y avait une idée d'écrire l'un des nouveaux services en F #. Dans de tels cas, j'essaie de mener un dialogue, je demande: «Et pourquoi exactement F #? Où allez-vous chercher des gens? " Finalement, ils ont convaincu la personne de rester en C #. Autrement dit, pour convaincre - oui, pour commander - non.

- Avez-vous essayé d'écrire vous-même en F #?

Non, mais je ne suis pas seul dans des discussions de ce genre. Nous avons une astuce d'ingénierie: sept ingénieurs sympas. Ce sont des personnes sélectionnées sur la base d'histoires de réussite au sein de l'entreprise. Ils ont gagné en crédibilité dans de nombreux projets. Les enfants sont également impliqués dans des projets de développement de la Direction du Développement (c'est l'unité qui réunit la plupart des développeurs de Contour).

- Vous avez essayé de collecter une variété de piles dans ce conseil?

La variété est un bon point, mais pas le principal pour nous. Puisque les ingénieurs sont cool, ils ont suffisamment d'horizons. Ils écrivent du code en C #, mais ce ne sera pas un problème pour eux de résoudre les problèmes Java.

Il n'y a pas de diversification au sein du conseil, mais il ne faut pas penser que toutes les discussions n'y entrent que. En plus des conseils d'ingénierie, nous avons des communautés professionnelles. Par exemple, les frontends ont leur propre leader, leur propre communauté avec des compétences élevées. La décision de développer le frontend est prise par une équipe hybride, comprenant un représentant du conseil d'ingénierie.



Boîte à outils


La plupart des équipes utilisent YouTrack comme outil de suivi des tâches. Certaines équipes utilisent Trello et Jira. Nous écrivons le code dans Visual Studio, Visual Studio Code, Rider, WebStorm, etc. Nous utilisons beaucoup les produits JetBrains pour différentes tâches.

Nous utilisons TeamCity comme système CI, déployons des services via Octopus vers un cloud privé sous le contrôle de notre propre système Houston ou Kubernetes. Nous collectons des métriques via Graphite. Pour les alertes par métriques, nous utilisons Moira. Les journaux sont collectés, stockés et consultés dans ELK.

La communication quotidienne va à Slack et Telegram. Il y a du personnel - son propre réseau social interne. Il publie des informations sur les produits, les offres d'emploi, la vie sociale et les événements sportifs. Vous pouvez y réserver des salles de réunion et rédiger des articles. Cela devient un canal de communication populaire. De plus en plus de choses sont discutées en ligne.

Ces dernières années, nous avons développé des solutions d'infrastructure directement sur GitHub. Le produit open source le plus célèbre est le système de notification d'urgence de Moira , en plus de nous, il est utilisé dans Avito et Yandex.Money. Le plus grand est l' Est . Il s'agit d'un ensemble d'outils pour développer des microservices sur la plate-forme .NET, qui les aident à communiquer entre eux et collectent automatiquement leurs journaux, mesures et traces distribuées.



À propos de la structure de l'entreprise




Le plus grand bureau "Kontur" est situé à Iekaterinbourg. Avec la croissance de l'entreprise, de plus en plus d'employés sont nécessaires, de sorte que l'entreprise est en constante expansion. Des bureaux de développement se trouvent déjà à Novossibirsk, Perm, Izhevsk, Kazan, Innopolis, Rostov-on-Don et Saint-Pétersbourg. De plus, l'initiative d'ouvrir de nouveaux bureaux vient souvent des employés eux-mêmes. Plusieurs ingénieurs sympas prévoyaient de déménager à Saint-Pétersbourg - puis nous avons ouvert un bureau dans cette ville.

La grande majorité des employés travaillent dans des bureaux, mais comme les équipes peuvent être réparties entre les villes, Kontur a décidé cette année d'ouvrir le recrutement de télétravailleurs. Nous apprenons toujours à travailler dans ce format, et il y a de plus en plus de tels employés.

«Kontur» est divisé en trois grands domaines - développement de produits, vente et service client, services internes. Les relations se construisent le plus horizontalement possible dans une entreprise de près de 10 000 personnes: nous travaillons activement au maintien de l'ancien et à l'émergence de nouvelles relations entre collaborateurs.

Les équipes produits emploient des collaborateurs de différentes spécialisations: programmeurs, testeurs, analystes, concepteurs d'interfaces, marketeurs, experts, managers ... Les nouvelles startups sont sciées par une seule équipe, les produits cultivés sont souvent divisés en plusieurs services et développés par plusieurs sous-commandes.
Les équipes sont indépendantes et autonomes: les dirigeants essaient de ne pas interférer avec eux avec des instructions, une bureaucratie et des protocoles inutiles.

Les équipes ont des leaders avec des rôles différents. Timlids est responsable de la qualité du développement. Le responsable du développement, le plus souvent un ancien ingénieur, construit le processus de création du produit. Le chef de projet est engagé non seulement dans le développement, mais aussi dans la vente, la promotion, le marketing, la communication avec les partenaires. Il y a encore des chefs de gamme de produits. Ils prennent des décisions concernant le lancement de nouveaux produits ou l'expansion d'anciens.



À propos de l'embauche




- Est-ce difficile de vous rejoindre?

- Difficile, mais possible. Il existe, par exemple, un vaste système de stages pour les étudiants, qui se déroule désormais toute l'année. Cet été, par exemple, 140 étudiants internés, la plupart sont restés dans l'entreprise.

"J'ai entendu parler de vos guildes d'intervieweurs." Dis moi c'est quoi?

Ce sont des ingénieurs de diverses spécialités qui sont impliqués dans l'embauche de programmeurs. Par exemple, pour les développeurs backend, ils mènent des entretiens techniques en trois ou quatre étapes: ils testent la capacité à écrire du code qui fonctionne; capacité à utiliser des algorithmes et des structures de données; capacité à créer une architecture. Le milieu et les siniors testent également leurs horizons technologiques.

La guilde comprend maintenant environ 90 développeurs. Pour y arriver, vous devez sélectionner les étapes que vous souhaitez réaliser (code, algorithmes, architecture) et mener plusieurs entretiens en tant qu '«esclave» (généralement les entretiens sont menés par une paire d'ingénieurs «principaux» et «esclaves»). Après avoir passé cette sélection, une personne tombe dans le pool de la guilde des enquêteurs.

Nous considérons normal que chaque participant réalise un entretien une fois par semaine. Ainsi, les gens peuvent faire leur travail et contribuer à l'embauche de programmeurs.

La guilde évalue le niveau technique du candidat et me transmet le rapport à moi ou à mes adjoints. Nous menons l'entretien final, nous vérifions les compétences générales les plus probables, l'importance d'une personne pour la valeur du travail, combien elle peut réfléchir à ses erreurs.


Section d'affiches du hackathon d'été

- Un tel système a-t-il accéléré le processus?

Il est certainement devenu plus rapide et plus compréhensible. Auparavant, il y avait une liste des priorités de l'équipe sous forme de notation. Eichar descendit et offrit à son tour les équipes au candidat. En conséquence, une équipe pourrait lui parler et rejeter, une autre parler et rejeter, la troisième. Il était impossible de comprendre combien d'entrevues une personne aura. L'évaluation des compétences techniques était également floue - l'équipe a prêté attention à diverses choses.

Maintenant, une personne passe par quatre étapes et une entrevue finale pendant quarante minutes. Dix minutes après, nous faisons déjà une offre ou refusons.

Elle dure trois, maximum quatre jours. Auparavant, l'attente était de deux à trois semaines.

- Composez-vous le même pour toutes les directions?

Non, toutes ces étapes sont principalement liées à l'endossement - les tranchants et les javistes. Pour les appels d'offres, ces étapes sont regroupées en une seule grande interview.

En général, il est important pour nous non seulement les compétences techniques des humains. Bien sûr, il y a une certaine frontière, un minimum technique. Mais plus important encore, si une personne sera capable de s'adapter et de se développer. Dans un sens, nos développeurs ont un culte du développement.

Les gens sans yeux brûlants et désireux de se développer ne nous conviennent pas. Même si nous acceptons une telle personne, très probablement, nous ne travaillerons pas ensemble.

- Le nouveau venu arrive. Et ensuite?

Ils se retrouvent à Butcamp et y subissent une adaptation. Le bootkamp se compose de deux parties. La première - la formation - dure deux semaines: trois jours pour découvrir le "Kontur" dans son ensemble, avec des produits, des moments d'affaires - où est le café, où est la salle de conférence, immersion dans la culture, les traditions, les vacances; encore une semaine et demie pour se familiariser avec les technologies et les outils. Par exemple, les développeurs répètent du code propre, la gestion des exceptions, l'utilisation d'éléments de programmation fonctionnels, les tests et TDD, SOLID, DI. Ils étudient comment l'infrastructure et les services communs sont organisés afin de parler le même langage avec d'autres développeurs.


Standup de bureau

En plus de la formation, les débutants communiquent avec les chefs d'équipe et les responsables du développement. Les timlids et les gestionnaires peuvent commencer eux-mêmes la communication, car il s'agit d'informations ouvertes - qui sont venus avec le jeu suivant. Et l'inscription au Butcamp a lieu toutes les trois semaines.

En conséquence, pendant ces deux semaines, le candidat est déterminé à quelles équipes il ira pour le stage.

Les stages sont déjà la deuxième étape. Pendant la période probatoire, une personne peut visiter plusieurs stages. En moyenne, il y a trois, environ trois semaines dans une équipe. Ou il peut choisir une équipe à la fois et y rester.

- Concernant les capitales, Ekaterinbourg est une petite ville. Il n'y a rien de tel que les Jones viennent juste pour pomper avant de se déplacer, et les Siniors partir pour des pays ensoleillés?

- Oui, non seulement les gens viennent, mais ils partent. Kontur investit beaucoup dans l'éducation, mais il n'engage jamais les gens, ne les oblige pas à signer des contrats avec des obligations. Bien sûr, nous sommes tristes quand les gens partent, mais restons presque toujours en contact.

Il y a des ingénieurs sympas qui quittent Contour et travaillent maintenant sur Facebook, Amazon et Google.

Bien sûr, pour les conserver, il n'y a pas assez de goodies dans la cuisine et plus de salaires. Besoin de tâches révolutionnaires. Nous avons des systèmes volumineux et lourdement chargés, des tâches de produits complexes et d'importants projets open source.

Nous surveillons le marché et payons les salaires correspondants afin qu'il n'y ait pas de situations où une personne arrive avec une offre concurrente, et nous commençons à tourner comme un serpent dans une casserole.



À propos des vols internes d'employés



Espace de travail dans le "Contour"

Lorsque de nouveaux projets sont lancés, nous commençons d'abord à chercher des personnes à l'intérieur. L'embauche interne se produit souvent dans les coulisses. Un manager vient me voir et lui demande de trouver quelqu'un dans l'équipe qui n'est pas assis à sa place. Et il arrive qu'ils viennent à Kontur pour s'installer tout de suite en équipe, ils disent: "Nous voulons travailler pour vous." Ensuite, je vais dans le sens des directions et je dis: "Découvrez les arriérés, obtenez des produits retardés - toute une équipe est apparue."

Mais en général, le sujet des transitions entre équipes est un peu douloureux pour Contour. Cela est dû au fait qu'ils sont largement indépendants les uns des autres et que le personnel est également recruté de manière indépendante. Bien sûr, il arrive parfois qu'un employé se déplace brusquement, sans accord préalable. Différents dirigeants ont des attitudes différentes à cet égard.

Quelqu'un est calme - après tout, une personne continue de bénéficier à l'entreprise. Quelqu'un est plus jaloux, dit: "L'équipe a des moments difficiles, mais j'ai encore des gens qui sont emmenés." Quelqu'un dit: «Je ne suis pas opposé au don, mais je voudrais d'abord parler avec moi. Pas besoin d'aller directement à l'employé et de convaincre. »

La discussion sur la mobilité horizontale se poursuit depuis de nombreuses années, les points de vue sont différents. Tout le monde peut être compris. Je crois moi-même qu'il vaut mieux offrir à une personne quelque chose à l'intérieur de l'entreprise que de se laisser aller à l'extérieur.

Il existe de nombreuses opportunités au sein de l'entreprise. Par exemple, un analyste de produit, psychologue de formation, a vu une opportunité de travailler dans la spécialité de Kontur: nous avons maintenant un psychologue à temps plein qui explique aux autres comment changer son travail.

Mais la question, bien sûr, est délicate.



Comment gérer l'épuisement professionnel



Transformation énergétique - Hackathon 2018

- Faites-vous souvent face à l'épuisement professionnel des employés?

Je ne le dirai pas souvent, mais je tombe sur. Nous essayons de nous retrouver. Nous donnons la possibilité de basculer entre les projets, changer le rôle, les responsabilités. Vous pouvez rencontrer ou appeler Skype avec le même psychologue à plein temps: il vous conseillera comment être.

, . , , . — .

— ?

, . , . .

, . , , , .

, . — , . , — , , , . , , , .

, , , , . , , . , — , - .

.




, , . , . , , . .

, , , .

— ? , -?

, . - , .

, . , . , .

— , . — , . , . . , , , . , - , .




— «» , ?




, . . , . .

— « », — , -. , , ICFP Contest. , . , .

, , , . , «» . , .

— - ?

? , . Bentley , , . , , , . «» , . - , , — , .

— ?

, . — . , .

. , . data science , . , . .

— «» , ?

, , , . . !


— , ?

— , , - , . , .

, .

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


All Articles