Разработка КРОК изнутри: люди, утки и много работы

Привет, Хабр!

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

Из минусов — такая работа не всегда видна конечному пользователю, ну и из-за некоторых NDA размером с тостер не обо всем можно рассказывать.

jgsakwbfwnpcyamruxpnrkpnezs.jpeg
Когда хотел рассказать про занятный проект, но там опять NDA

Меня зовут Иван, я технический менеджер (Java) в КРОКе. И сегодня я постараюсь немного приоткрыть завесу тайны и рассказать о том, как у нас в целом работается разработчикам, которых около 350 человек, а также о текущих вакансиях (Java, PHP и фронтенд). Подробности — под катом.
Сам я попал в КРОК случайно, пришёл в 2012 на второе занятие курса по Java, которые тут проводились. Мне сразу понравился и сам курс (полезность и подача материала), и компания в принципе. В тот момент я еще был в одном НИИ (работал там техником, получил диплом, стал инженером и проработал 4 года в общей сложности), и у меня на руках был оффер от другой компании. Что поставило меня перед вот таким выбором:

— идти в некую компанию на C++ в качестве регуляра, потому что C++ я знал неплохо;
— идти в КРОК на Java, но на позицию джуниора и изучать все практически с нуля.

После недолгих терзаний и курса, о котором говорил выше, пошел ва-банк — выбрал КРОК.

Самым первым проектом, над которым мне довелось поработать, была автоматизация документооборота для одного крупного государственного проекта (и — да, близкое знакомство с NDA). Это немного поражало — приходишь такой из НИИ с гордым знанием адресной арифметики и венгерской нотацией, а тут тебе сразу java, CamelCase, BPM, ECM и прочие приятные уху названия, которые после ржавого* мира С кажутся чем-то волшебным.

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

Первое время задавал очень много вопросов коллегам — как тут вообще принято работать, чтобы впитать в себя не только сами знания, но и принципы работы со стеком именно в КРОК. Коллеги шли на встречу и помогали советами, выделяя мне целые часы. Я довольно быстро абсорбирую знания, поэтому уже через год проапгрейдился с джуниора до регуляра, а еще через год пришел новый level up — до ведущего разработчика. Компания позволила побыть и архитектором, и тим лидом, и техническим пресейлом. Сейчас — технический менеджер.

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

Я выбрал третий вариант, сейчас управляю командой разработки из 7 человек. Проведя тут несколько лет и сравнив карьерные пути других ребят, могу сказать, что это не исключение из правил — вот так вырасти за пару лет, а скорее, нормальная для КРОК ситуация. Кто-то выбирает горизонтальное перемещение между командами — сменить back-end и front-end и наоборот, — без проблем.

Есть люди, которые готовы лет 10 работать над одним крупным проектом (а такие масштабируемые проекты тут есть, и немало) и развиваться внутри него. Есть те, кто предпочитает расти на разных проектах, постоянно расширяя экспертизу. Оба подхода приветствуются.

Что интересного мы делаем в КРОК


Недавно был большой проект «Электронное правосудие» — он включал в себя работу с Мосгорсудом и 35 районными судами Москвы. Масштабы задач — мое почтение. Над проектом одновременно работали около 400 человек.

Пару лет назад мы начали работать над автоматизацией документооборота компании СИБУР.

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

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

Другой случай — проект, связанный с электронной подписью. В ряде государств ГОСТы на ЭП имеют одни и те же номера, но при этом реализации настолько разные, что де-факто становятся несовместимыми. Если в РФ поставщик решений криптографии — это компания КриптоПро, то в Беларуси — поставщик иной.

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

Мое рабочее место и коллеги


Вместо больших привычных опенспейсов на 100 человек у нас кабинеты на 5–10 человек. Поэтому мое рабочее место выглядит так:

1dw31koij03bssmihbznxlhq8he.jpeg

ojom0hu9jtzh_k0uuhcgbbhwkm0.jpeg
Один из главных помощников

Познакомлю вас с коллегами. Вот, например, Женя, технический менеджер (Java, фронтенд).

om_qy6mq-lgbgoxvmm0zajcctxq.jpeg

b_idjn7qgo-kjlr0p4fxxdl1kiu.jpeg

Кстати, о фронтенде. Для крупных проектов мы используем CROC WebClient. Это фреймворк, который применяется для создания эффективных и эргономичных интерфейсов для клиентских приложений, которые работают по принципу «тонкого» клиента в современных браузерах. Функции системы позволяют поддерживать работу на рабочих станциях и мобильных устройствах, работать в различных разрешениях браузеров и с touch-интерфейсом.

Слово Жене:

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

Тем не менее далеко не все разрабы любят заниматься вебом. Для менеджеров это проблема. Веб-клиент отчасти решает ее — закрывает кучу рутинных задач и немного упрощает жизнь.

В большинстве продуктов у нас свой дизайн и свои компоненты, и для их поддержки и доработки нужны люди. Джависты не очень хотят в этом развиваться, поэтому тут нужны именно люди под чистый фронтенд. Тем не менее, кому интересно быть full-stack, то это приветствуется.

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

Работаем по двухнедельным спринтам, разработчики физически находятся в 8 разных регионах РФ. В начале каждого спринта ребята ставят общие цели, набрасывают задачки и распределяют их по разработчикам, отдельный день — на оценку и планирование. Потом состав спринта корректируется при необходимости. Каждый день по 15 минут небольшие собрания по webeх, в конце спринта — ретроспективы. Все всплывающие организационные трудности обсуждаем и лечим уже в следующем спринте, ничего не копим. Почему по webex — на Хабре уже как-то был пост о том, что у нас целый набор офисов разработки по стране. Например, в этом проекте у меня задействованы целых 7 офисов — от Краснодара до Иркутска. К слову, в компании есть возможность раз в год переместиться на пару недель в другой офис и поработать оттуда.

Раз в месяц — общее демо, где вся команда может посмотреть, чего добились и куда дальше двигаться.

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

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


А вот Андрей, эксперт направления разработки ПО. Эксперт, как упоминал выше — это название должности, пару лет назад он стал первым в департаменте, кто решил развивать карьеру не в управлении разработкой, а в наращивании экспертизы в технологиях. Когда я только пришел в КРОК, мне посчастливилось поработать в команде Андрея, который занят в основном в R«n"D проектах и в которой нечасто появляются вакансии для начинающих разработчиков. Тем ценнее, что один из двух его значков наставника достался Андрею от меня, а мне полученные в процессе рекомендации позволили динамично развиваться в качестве разработчика в дальнейшем.

2qrw2td8dakvkee9ra7mc5lowgk.jpeg

Кстати, если присмотреться, на столе у Андрея лежит кепка с лого подкаста «Разбор Полётов» — известного подкаста для настоящих IT-шников. Самые внимательные заметят, что это не простая кепка, а раритетная, и логотип на ней — винтажный. Андрей участвует в разборе с 2013 года, когда его впервые записали на JavaOne в Сан-Франциско.

ehgtwkcjgnz_d-v8j4n5nugpiku.jpeg

Плюс Андрей — постоянный участник и член программного комитета всех трех ведущих Java-конференций в стране: Joker в Санкт-Петербурге, JPoint в Москве и JBreak в Новосибирске, поэтому у него сразу несколько уточек в помощниках. В этом году он сам выступил с докладом на JPoint.

ptlrushtkzsth3vskpydmypbh70.jpeg

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

m6bz0azi6z5fv24vu77qms-8fie.jpeg
Фото с одной из встреч в офисе КРОК

Идем дальше. Вот место техмена Алексея, который работает с PHP-разработчиками.

zdip34i5wqcm_zzg2ar8ftpkple.jpeg

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

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

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

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


О выгорании


hmy9qwrkjtazy_pub_h76udlm6e.jpeg

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

Мы взяли и начали свою Java-школу в рамках таких активностей. Кто-то делает видеоролики с уроками, которые может посмотреть любой из КРОКовцев в рамках Корпоративного университета (просто подписываешься на интересную лекцию и смотришь прямо с рабочего места). Например, я недавно записал лекцию по лучшим практикам в ведении java кода.

Оказывается, запись видеолекции — не самая быстрая и тривиальная задача, как я изначально предполагал.

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

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

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

Agile


Обычно, когда пытаешься написать, как тебе круто работается там, где работается, надо обязательно упомянуть agile. Упомянем и тут.

lvfeeuio6rdkqb_6w7u_48coqbg.gif

«Слово в слово»: по agile не работаем.

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

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

Что еще. Стек у нас самый свежий. Если кто-то замечает, что какое-то используемое решение устаревает, можно прийти и предложить альтернативу. Это тоже нормально. Думаю, нам тут повезло еще в плане бюрократии и принятия решений — все директора департаментов, ресурс-менеджеры, руководители направлений открыты к нововведениям. Хочешь применить новую технологию — предложи.

Вакансии


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

Инженер-разработчик Java


Про то, что интеграция у нас на Java, я писал. Вакансия на это направление подразумевает работу с интеграционными решениями, а также разработку ПО под заказ.
Если вам интересно поучаствовать в проектах по разработке коммерческого ПО, систем документооборота, интеграционных решений или поразвивать фреймворк (и у вас высшее техническое + опыт в разработке ПО от 1 года) — подробности здесь.

PHP-разработчик


Основные задачи — разработка и проектирование веб-служб, а также модулей и подсистем веб приложений. Подробные задачи и требования — на странице вакансии.

Frontend Developer


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

Ссылки:


Прошлый пост про наши офисы разработки по стране.
Подкаст с участием Андрея про жизнь разработчиков в КРОК, записанный в Иркутске, в гостях у @golodnyj.
Группа jug.msk.ru ВКонтакте.
Анонсы встреч в полном объеме тут .
Моя почта для вопросов– ipopkov@croc.ru.

© Habrahabr.ru