Хабрахабр

Где работать в ИТ #2: «СКБ Контур»

image

В конце октября ей исполняется 30 лет, количество всех сотрудников перевалило за 8 тысяч. «СКБ Контур» — одна из крупнейших и старейших ИТ компаний в России.

По оценкам, собранным на сервисе оценки работодателей «Моего круга», в июле 2018 «Контур» разделил первое место с «Яндексом» среди компаний-тяжеловесов.

Но ИТ тогда и ИТ сейчас — две разные сферы. «Контур» основали в Екатеринбурге, когда город еще назывался Свердловском. Все развивается со скоростью света, наследие и масштабы не всегда помогают в конкуренции.

Поэтому мы попытались разобраться, какой «Контур» на самом деле — древний динозавр или передовая технологическая компания — и поговорили с Александром Голубевым, отвечающим за разработчиков в компании.


Александр Голубев

Что делает СКБ «Контур»

— Андрей Михайлов, который стоял у истоков «Контура», рассказывал, что всё началось с продажи программ по учету зарплаты и труда. В начале 90-х время было тяжелым, и в «Контуре» занимались разными вещами. Даже продажей техники и принтеров.

Потом, конечно, все переписали и перевели в веб. Программы тогда делали десктопными, их писали на C++, Delphi, часто под нужды только одного определенного заказчика. Постепенно и всё лишнее отошло, а основное осталось до сих пор — учёт зарплаты и софт для бухгалтерии.

Мы делаем продукты для всех нужд бизнеса. Правда, теперь это только одно из направлений. Продуктов стало так много, что сосчитать, сколько их на самом деле — трудная задача. Сертификаты, документооборот, электронная подпись, отчетность. Просто из-за вопросов, а что считать одним продуктом. Оценки расходятся в диапазоне от 30 до 60.


Офис «Контура» в Екатеринбурге

— Но есть какой-то продукт-локомотив?

В начале 2000-х появилась возможность сдавать налоговую отчетность через интернет. Долгое время им был «Контур.Экстерн». И оказались правы: продукт выстрелил, и начался бурный рост компании. И хотя интернета толком ни у кого не было, мы все равно сделали ставку на веб.

Сейчас разработкой у нас занимается около тысячи человек. Семь лет назад, когда я пришел, компания была раза в три меньше. А тогда было человек триста.

— Трудно было справляться с ростом?

Рост и сейчас продолжается. Почему было? Мы на четверть прирастаем год от года. Людей, продуктов и клиентов становится все больше и больше. Видимо, как-то справляемся. Масштабируем процессы, отказываемся от неработающих, придумываем новые.

Люди в командах —  программисты, аналитики, тестировщики — все относятся к продуктам, как своему детищу, предлагают идеи, улучшения. Нам нравится, что мы разрабатываем именно свои продукты. Нам не интересно делать заказы на внешку, которые не связаны с нашей основной работой — это не про «Контур».

О технологиях и языках

— У вас наверное еще высокие требования к качеству и чистоте кода, как это бывает в больших бизнесах. У разработчиков не возникает культа инструмента из-за этого?

Он его опробовал, у него что-то начало получаться, и он очень одухотворен этим. — Когда в компанию приходит вчерашний или текущий студент с горящими глазами, у него больше приверженности к конкретному языку. Это хорошо на самом деле. И конечно хочет работать и развиваться в одном направлении.


Команда программирующих зомби на хакатоне «Контура»

Ты начинаешь развиваться с точки зрения построения архитектуры, использования алгоритмов, хранилищ, очередей, протоколов, API— всего, где язык не важен, а важны более высокоуровневые вещи. Но с опытом приходит понимание, что язык — это инструмент, а инструменты можно менять.

Поэтому среди синиоров значительно меньше тех, кто фанатично предан одному языку.

— Я пробежался по требованиям ваших вакансий, и кажется вы реально используете всё, что существует.

На ассемблере в «Контуре» не пишут. — Ну да, не используем только совсем низкоуровневые вещи.

Есть немного Java, Go и Node.js в инфраструктуре и некоторых продуктах. Большая часть серверного кода у нас пишется на C#. Все, что вокруг data science, пишем на Python и R, без них там никуда. Мобильные приложения — на Kotlin, Swift и C# (Xamarin). Есть и собственные разработки: например, Kanso — распределённое отказоустойчивое хранилище данных с семантикой бинарного лога (похоже на Google GFS), Zebra — документная in-memory база данных, Echelon — распределённая отказоустойчивая очередь заданий. В зависимости от задач используем подходящие реляционные, документные, колоночные или key-value хранилища данных: MS SQL Server, MariaDB, PostgreSQL, MongoDB, Cassandra, ClickHouse, Redis, Kafka, HDFS. Мы много лет используем их в продакшне, и, возможно, однажды они появятся в опенсорсе.

Главный фреймворк — React, для которого у нас написана библиотека компонентов по интерфейсным Гайдам, но где-то еще используем Angular. Клиентский код пишем на TypeScript или JavaScript с Flow. Борьба еще идет. А вот сказать однозначно, кто победил — TypeScript или JavaScript — пока нельзя.

— Как ты сам думаешь?

Человеку, привыкшему к статической типизации, TypeScript привычнее. — Поскольку я из бэкендеров, то склоняюсь к TypeScript (хотя конечно писал и на JS очень много, даже еще когда не было React). В любом случае, почти весь код для фронтенда или для Node.js пишется с типами.


Мастер-класс на летнем Конфуре 2018 — внутренней конференции разработчиков «Контура»

Какие инструменты удобнее для конкретных задач, те и надо использовать. Но в целом у меня отношение к языкам не религиозное. В 2011-м году, когда я пришел в «Контур», на Эрланге даже был написан один продукт. Магистерскую я вообще на Erlang писал. Поэтому переписали на проверенный С#. Но когда его главный идейный вдохновитель ушел, с поиском специалиста на замену были проблемы.

— И как вы определяете, где какой язык будет использоваться?

Но поскольку продукт стартует не в вакууме, они обсуждают выбор с «соседями», более опытными коллегами, смотрят, могут ли найти спецов. У менеджеров разработки и тимлидов достаточно большая степень свободы, они сами вольны выбирать инструменты и технологии. Нам нужны проверенные инструменты для промышленной разработки, чтобы потом можно было развивать и поддерживать собственные продукты. Свобода есть, но не могу сказать, что мы каждый день экспериментируем с новыми языками.

Если ты хочешь запустить новый проект или внести серьезную поправку в текущий, ты оформляешь презентацию и собираешь встречу специального сообщества, где крутые инженеры дают тебе фидбэк. У нас есть практика дизайн-ревью.

Но, если команда вопреки всему решает выбрать спорную технологию, она должна быть готова к рискам. Конечно, если ты решишь, что никто тебе не указ — ультиматумов и запретов не будет, зарплату не отнимут. Проект может оказаться не совместим с частью инфраструктуры или в него нельзя будет интегрировать какую-то функциональность — тогда все почувствуют много боли.

Месяц назад была идея писать один из новых сервисов на F#. Обычно все обсуждается. Где ты будешь искать людей?» В итоге убедили человека остаться на C#. Я в таких случаях стараюсь вести диалог, спрашиваю: «А почему именно F#? То есть, убедить — да, приказать — нет.

— А ты сам пробовал писать на F#?

У нас есть инженерный совет: семь крутых инженеров. Нет, но ведь и в обсуждениях подобного рода я участвую не один. Они наработали авторитет во многих проектах. Это люди, отобранные исходя из историй успеха внутри компании. Ещё ребята занимаются проектами по развитию Управления разработки (это подразделение, объединяющее большинство разработчиков «Контура»).

— Вы пытались собрать в этом совете разнообразие стеков?

Поскольку инженеры крутые, у них есть достаточный кругозор. Разнообразие хороший поинт, но для нас не главный. Они пишут код на C#, но для них не будет проблемой разобраться в вопросах по Java.

Кроме инженерного совета у нас есть профессиональные сообщества. Диверсификации в совете нет, но не надо думать, что все обсуждения идут только в нем. Решение о развитии фронтенда принимает гибридный коллектив, в том числе представитель инженерного совета. Например, у фронтендов есть свой руководитель, свое коммьюнити с высокими скиллами.

Инструментарий

Большая часть команд использует YouTrack как трекер задач. В некоторых командах используют Trello и Jira. Код пишем в Visual Studio, Visual Studio Code, Rider, WebStorm и так далее. Много используем продукты JetBrains для разных задач.

Метрики собираем через Graphite. В качестве CI-системы используем TeamCity, деплоим сервисы через Octopus в приватное облако под управлением собственной системы Houston или в Kubernetes. Логи собираем, храним и просматриваем в ELK. Для алертов по метрикам используем Moira.

Есть Стафф — собственная внутренняя соцсеть. Ежедневное общение идет в Slack и Telegram. Там же можно бронировать переговорки и писать статьи. Там публикуются новости о продуктах, вакансиях, социальной жизни, о спортивных мероприятиях. Все больше и больше вещей обсуждается в онлайне. Это становится популярным каналом обмена информацией.

Самый известный опенсорсный продукт — система для уведомлений о нештатных ситуаций Moira, кроме нас её используют в Avito и Яндекс.Деньгах. В последние годы мы разрабатываем инфраструктурные решения сразу на GitHub. Это набор инструментов для разработки микросервисов на платформе . Самый масштабный — Восток. NET, который помогает им общаться друг с другом и автоматически собирает их логи, метрики и распределённые трассировки.

О структуре компании

С ростом компании нужно все больше сотрудников, поэтому компания постоянно расширяется. Самый большой офис  «Контур» находится в Екатеринбурге. Причем инициатива об открытии новых офисов часто идет от самих сотрудников. Офисы разработки уже есть в Новосибирске, Перми, Ижевске, Казани, Иннополисе, Ростове-на-Дону и Санкт-Петербурге. Несколько крутых инженеров планировали переехать жить в Питер — тогда мы и открыли офис в этом городе.

Мы ещё учимся работе в этом формате, и таких сотрудников становится всё больше. Подавляющее большинство сотрудников работают в офисах, но поскольку команды могут быть распределены между городами, в этом году «Контур» решил открыться к найму удаленщиков.

Отношения выстроены настолько горизонтально, насколько это возможно в компании из почти 10 тысяч человек: мы активно работаем над сохранением старых и появлением новых связей между сотрудниками. «Контур» разделен на три больших направления — создание продуктов, продажи и работа с клиентами, внутренние службы.

В продуктовых командах работают сотрудники разных специализаций: программисты, тестировщики, аналитики, дизайнеры интерфейсов, маркетологи, эксперты, менеджеры… Новые стартапы пилит одна команда, выросшие продукты часто разделяются на несколько сервисов и разрабатываются силами нескольких подкоманд.
Команды независимы и автономны: руководители стараются не мешать им лишними инструкциями, бюрократией и протоколами.

Тимлиды отвечают за качество разработки. У команд есть руководители с разными ролями. Менеджер проекта занимается не только разработкой, но и продажами, продвижением, маркетингом, общением с партнёрами. Менеджер разработки, чаще всего бывший инженер, выстраивает процесс создания продукта. Они принимают решения о запуске новых продуктов или расширении старых. Есть еще руководители продуктового направления.

О найме

— К вам сложно попасть?

Есть, например, большая система стажировок для студентов, которые теперь проводятся круглый год. — Сложно, но можно. Этим летом, например, стажировались 140 студентов, большинство остались в компании.

Расскажешь, что это? — Я слышал про ваши гильдии собеседующих.

Например, для бэкенд-разработчиков они проводят технические собеседования в три или четыре этапа: проверяют умение писать код, который работает; умение пользоваться алгоритмами и структурами данных; умение создавать архитектуру. Это инженеры разных специальностей, которые участвуют в найме программистов. У мидлов и синиоров проверяют еще кругозор в технологиях.

Чтобы попасть туда, нужно выбрать этапы, которые хочется проводить (код, алгоритмы, архитектура), и провести несколько собеседований в качестве «ведомого» (обычно собеседования проводят пары «ведущих» и «ведомых» инженеров). В гильдию сейчас входит порядка 90 разработчиков. Пройдя этот отбор, человек попадает в пул гильдии собеседующих.

Так люди могут и заниматься своей работой, и вносить вклад в найм программистов. Мы считаем нормальным, если каждый ее участник раз неделю проводит собеседование.

Мы проводим финальное собеседование, проверяем скорее софт-скилы, насколько человеку важна ценность работы, насколько он может рефлексировать над своими ошибками. Гильдия оценивает технический уровень кандидата и передает отчет мне или моим заместителям.


Постерная секция на летнем хакатоне

— Такая система сделала процесс быстрее?

Раньше существовал перечень приоритетов команд в виде рейтинга. Безусловно стало быстрее и понятнее. В итоге одна команда могла с ним пообщаться и отклонить, другая пообщаться и отклонить, третья. Эйчар шел по нему сверху вниз и по очереди предлагал командам кандидата. Оценка технических скиллов тоже была размытой — команды уделяли внимание разным вещам. Нельзя было понять, сколько будет собеседований у человека.

Через десять минут после него мы уже делаем оффер или отказываем. Сейчас человек проходит четыре этапа и финальное собеседование минут на сорок.

Раньше матожидание было две-три недели. Всё длится три, максимум четыре дня.

— Для всех направлений набираете одинаково?

У фронтендеров эти этапы схлопнуты в одно большое собеседование. Нет, все эти этапы относятся в первую очередь к бэкендерам — шарпистам и джавистам.

Конечно, есть некая граница, технический минимум. Вообще, для нас важны не только технические скиллы у человека. В некотором смысле, у наших разработчиков культ развития. Но важнее, сможет ли человек адаптироваться и развиваться.

Даже если мы такого человека примем, скорее всего, не сработаемся. Люди без горящих глаз и желания развиваться нам не подходят.

Что дальше? — Новичок приходит.

Буткамп состоит из двух частей. Они попадают в Буткамп и там проходят адаптацию. Например, разработчики повторяют чистый код, обработку исключений, использование элементов функционального программирования, тестирование и TDD, SOLID, DI. Первая — обучение — длится две недели: три дня на знакомство с «Контуром» в целом, с продуктами, хозяйственными моментами — где кафе, где конференц-зал, погружение в культуру, традиции, праздники; ещё полторы недели на знакомство с технологиями и инструментами. Изучают, как устроена инфраструктура и общие сервисы, чтобы говорить на одном языке с другими разработчиками.


Стендап в офисе

Тимлиды и менеджеры могут начинать общение и сами, потому что это открытая информация — кто пришел с очередным набором. Кроме обучения новички общаются с тимлидами, менеджерами разработки. А набор в Буткамп случается каждые три недели.

В итоге, за эти две недели кандидат определяется, в какие команды он пойдёт на стажировку.

За время испытательного срока человек может побывать на нескольких стажировках. Стажировки — это уже второй этап. А может выбрать одну команду сразу и остаться в ней. В среднем их бывает три, примерно по три недели в команде.

Нет такого, что джуны приходят просто прокачаться перед переездом, а синиоры уезжают в солнечные страны? — Относительно столиц, Екатеринбург — маленький город.

«Контур» очень много вкладывает в образование, но никогда не привязывает людей, не заставляет подписывать контракты с какими-то обязательствами. — Да, люди не только приходят, но и уходят. Конечно, мы грустим когда люди уходят, но практически всегда поддерживаем связь дальше.

Есть крутые инженеры, которые ушли из «Контура» и работают теперь в Facebook, Amazon и Google.

Нужны прорывные задачи. Конечно, чтобы их удерживать, недостаточно плюшек на кухне и зарплаты побольше. У нас есть большие и высоконагруженные системы, сложные продуктовые задачи, важные опенсорсные проекты.

Мы следим за рынком и платим соответствующие ему зарплаты, чтобы не было таких ситуаций, когда человек приходит с конкурирующими оффером, а мы начинаем вертеться, как ужи на сковородке.

Про внутренние угоны сотрудников


Рабочее пространство в «Контуре»

Внутренний найм чаще всего происходит кулуарно. Когда запускаются новые проекты, мы в первую очередь начинаем искать людей внутри. А бывает, что в «Контур» приходят устраиваться сразу целой командой, говорят: «Хотим работать на вас». Ко мне приходит менеджер и просит найти ему в команду кого-то, кому на своем месте не сидится. Тогда я иду к руководителям направлений и говорю: «Расчехляйте бэклоги, доставайте отложенные продукты — появилась целая команда».

Это следствие того, что они во многом независимы друг от друга и персонал тоже набирают независимо. Но вообще тема с переходами между командами немного болезненная для «Контура». Разные руководители по-разному к этому относятся. Конечно, иногда случается, что сотрудник переходит резко, без предварительных договорённостей.

Кто-то более ревностно, говорит: «В команде времена тяжелые, а у меня ещё людей уводят». Кто-то спокойно — все таки человек продолжает приносить пользу компании. Не надо идти напрямую к сотруднику и подговаривать». Кто-то говорит: «Я не прочь отдать, но поговорил бы сначала со мной.

Каждую можно понять. Обсуждение горизонтальной мобильности идет уже не первый год, точки зрения разные. Я сам считаю, что лучше мы предложим человеку что-то внутри компании, чем отпустим за пределы.

Например, один продуктовый аналитик, психолог по образованию, увидел внутри «Контура» возможность работать по специальности: теперь у нас есть штатный психолог, который рассказывает другим о том, как менять свою работу. Возможностей внутри компании очень много.

Но вопрос, конечно, деликатный.

Как быть с выгоранием


Преобразование энергии — хакатон 2018

— Часто сталкиваетесь с выгоранием сотрудников?

Стараемся помогать найти себя. Не скажу, что часто, но сталкиваюсь. Можно встретиться или созвониться по скайпу с тем самым штатным психологом: он проконсультирует, как быть. Даем возможности переходить между проектами, менять роль, обязанности.

Люди приходят пообщаться за жизнь, им важно просто быть услышанными, получить поддержку. Порой мне кажется, что я и сам выступаю в роли такого психолога. Не всегда важны конкретные предложения о переходе или деловые решения — иногда важно просто участие.

— Ты сам лично выгорал?

Это было относительно недавно, когда я вступил на роль руководителя управления разработкой. Да, конечно. С начала года и до июня было выгорание в связи с переходом.

Очень выросла цепочка обратной связи от того, что я делаю, до того, как компании приходит польза. До этого я был менеджером в команде, а стал руководителем направления.

Есть фича — закоммитили, зарелизили и готово. Когда я был программистом, было проще. Я вижу, что сервис улучшается, пользователи дают фидбэк, все круто. Менеджером разработки стало уже сложнее, но все равно — я все ещё в команде, у нас обновления, обсуждения, жизнь кипит.

Но моего душевного вовлечения в это нет, я не могу со стопроцентной уверенностью сказать, что я приложил к этому руку. Сейчас, придя в руководство, я понимаю, что команд много, они релизят и релизят. Нет, не приложил — люди на местах сделали эти фичи, а я как-то уж больно высоко.

И мне было тяжело с этим справляться.


Александр Голубев на Конфуре

Тогда я отнёсся к проблеме, как к вызову. Но помогло осознавание, что я уже попадал в подобную ситуацию, пусть и меньшего масштаба. Значит мне надо научиться. Окей, я не умею работать с задачами большого размера, когда нет быстрой обратной связи.

Я справился благодаря тому, что изменил свое отношение, и начал больше внимания уделять продвижению глобальных инициатив, нежели погружения в текучку.

Это не для тех, кому стало скучно писать бизнес-софт? — А для чего вы проводили хакатон по играм?

Если человеку хочется участвовать в каких-то соревнованиях, надо ему помочь. Это просто фан, я вижу в этом элемент создания комфортной среды.

Вот человек на хакатоне игры пописал и понял, что это круто. Но я не верю, что такой инструмент поможет с выгоранием. Но мы же в компании не разрабатываем игры и не можем человеку предложить продолжать их делать, если ему так понравилось.

У нас два раза в год проходит Конфур — конференция разработчиков, и в её организацию вовлечено довольно много людей. Просто когда в команде кончилась мана и надо топлива пополнить — ты подключаешься к активностям, и даже не обязательно к хакатонам. А ещё у нас каждый год у нас проходят спортивные мероприятия по всей стране. Можно и для компании полезное сделать, и разнообразить свою деятельность. Но, в какой-то степени, это способы снять напряжение. Конечно, конференции и состязания нужны, чтоб сплачивать, укреплять горизонтальные связи.

Веселые вопросы

— Если ребята из «Яндекса»расскажут тебе про свой офигенный корпоратив, чем перед ними похвастаешься ты?


Награждение победителей на Конфуре

Не к этому лежит душа. Я в целом не особо люблю хвастаться, кто круче группу на новый год привёз. Там собираются разработчики из всех офисов. Я бы похвастался нашей конференцией, которая проходит каждые полгода.

Инженеры устраивают хакатоны и участвуют в соревнованиях, например, много лет играют в ICFP Contest. С одной стороны есть и чем развлечься — традиционные «Что где когда», концерты и прочее — и большая рабочая программа, всякие мастер-классы. В этом году мы у нас было около тридцати митапов, соревнований и тренировок по машинному обучению. Каждый может сделать доклад на конференции, провести митап.

Хотя я уверен, в «Яндексе» тоже такое есть. Так что если я буду хвастаться, скажу, что мы не только тусовки тусуем, но и с работой совмещаем. Не думаю, что это их впечатлит.

— Чувствуйте себя рок-звездами в Екатеринбурге?

Я считаю, что в целом у нас всё хорошо. А как это можно понять? Машина, квартира, люди ездят в отпуска в разные страны, живут хорошо. На Bentley не ездим, но все, что нужно есть. Так что рок-звездой себя не чувствую, а счастливым от того, что все в достатке — пожалуй, да. «Контур» в этом помогает, даже займы дает в сложных ситуациях.

— Как скоро софт заменит бухгалтеров и юристов?

Лично моё мнение — лет через десять профессии типа юристов и бухгалтеров очень сильно изменятся. Мы как раз думали о подобных вопросах, но единодушно сформулировать не смогли. Привычную часть, знание кучи разных правил возьмут на себя машины.

Задачей бухгалтера будет не проводки делать, а анализировать финансовые потоки. Бухгалтеры и юристы станут ближе к программистам и дата сайентистам. Влияние человека все равно будет нужно, но людей в этих профессиях станет меньше. У юристов data science будет помогать в поиске ответов на вопросы, но эти вопросы надо будет правильно формулировать. Зато квалификация от них потребуется выше.

— Если бы «Контур» был корпорацией из киберпанка, какой социальный строй он установил бы в своем городе?

Точно не тоталитаризм. Ну, наверное, ближе к демократии, может немного технократии. Власть народу!

— Когда в Екатеринбурге снесли башню, не было жалко?

В общем, чтобы не просто торчало и напоминало об ушедших днях. Мое мнение — то, что стоит и не используется, нужно либо снести и построить что-то нужное, либо найти применение.

Если старое отжило, его надо заменить новым.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть