Владислав Мацкевич работает в Альфа-Банке с 2012 года. За это время он стал руководителем направления разработки. Владислав объяснил, как техлид внедряет новые инструменты в работу, поделился полезными книгами и рассказал, чем кодер отличается от разработчика.
Чем я занимаюсь
Backend-разработчик — это программист, который реализует сложную бизнес-логику серверной части мобильных и веб-приложений. Я backend-техлид в Альфа-Банке. Сейчас у меня в подчинении 21 человек из 18 команд. Большую часть рабочего дня я нахожусь на встречах: вместе с другими разработчиками мы обсуждаем архитектуру проектов, принимаем решения о новых интеграциях с внешними партнерами — условия интеграций должны всех удовлетворять. Также у меня есть задачи, связанные с персоналом: я нанимаю сотрудников, подвожу итоги их работы, даю советы, куда разработчикам развиваться дальше.
Один из моих первых проектов — запуск онлайн-анкеты на кредитную карту: клиент заполняет форму, банку приходит заявка, на основе которой он решает, выдавать клиенту карту или нет. Другая команда работала с рефинансированием и дебетовыми картами. Потом наше направление расширилось, ко мне пришли другие команды: например, одна создает мобильное приложение для сотрудников, которые доставляют карты на дом.
Важный аспект для руководителя — мотивация сотрудников. Я должен знать, интересно ли им работать, кто хочет уйти. Всегда хочется понимать, как у людей дела, а не быть дотошным начальником.
Когда мы работали в офисе, было намного легче: мы общались в одном пространстве, пройдя по этажу, можно было что-то услышать. На удаленке связь наладить сложнее, поэтому я стал чаще созваниваться с людьми, это стало ритуалом. Важно знать, какой градус настроений в команде, потому что люди часто не сходятся по личным вопросам. Да и разработчикам нравится разговаривать, они не чувствуют себя брошенными.
Недавно я предложил одному из разработчиков стать техлидом. Сначала он согласился, но потом начал переживать, что недостаточно хорошо владеет техническими навыками и может ошибаться. Я объяснил ему, что что-то не знать — это нормально. Невозможно знать все, и скорее важно понимать, где найти информацию или у кого спросить. И чтобы окончательно его успокоить, мы составили ему roadmap того, как развиваться и что делать.
Никуда не делись и технические задачи техлида: например, я помогаю править некачественный код, если из-за него висит страница. В целом, я стал меньше заниматься разработкой, так как у меня стало больше команд. Чтобы не потерять навыки, прописываю скрипты по автоматизации рутины.
С чего я начинал
В 2012 году я устроился работать в Альфа-Банк инженером: сопровождал базы данных, сервера приложений, следил за тем, чтобы ничего не падало.
Из-за неопытности однажды я совершил серьезную ошибку. Я должен был выключить копию базы данных, но перепутал и завершил похожую, ее использовали во вспомогательном бизнес-процессе. Мне в панике звонили люди: «У нас ничего не работает». Я сказал, что все под контролем, но через полчаса понял, что ошибся. Потом объяснял наставнику, как пропустил цифру. Все понервничали, но, к счастью, клиенты не пострадали.
После я работал администратором баз данных, разобрался в Linux, DevOps, Docker, SQL, затем — системным аналитиком в «Альфа-Лабораторию» (подразделение Альфа-Банка, которое занималось продуктами для коммуникации с клиентами).
Тогда же начал изучать Java. Я советовался с нашими разработчиками, иногда брал для себя текущие задачи в команде, ходил на собеседования, чтобы разобраться в сфере. Однажды у нас освободилась должность разработчика, и я решил попробовать.
В итоге я быстро вырос до мидл-разработчика, в этом мне очень помог мой руководитель. Он давал мне материал, задачи, а потом проверял, как я все усвоил. Он и сейчас во многом меня наставляет.
Через год техлид ушел и мне предложили его должность. Хоть я и боялся, но все равно согласился. А в феврале 2021 года я стал руководителем направления.
Как я внедряю новые инструменты
Я слежу за развитием направления: контролирую, как нам не стать legacy (работать с устаревшим оборудованием и инструментами), какие технологии для этого нужно ввести. Чтобы новый инструмент появился в компании, я объясняю руководителям, чем он важен, составляю смету, чтобы потом приобрести серверы, и помогаю коллегам устанавливать ПО.
Например, приложения мы «упаковываем» в Docker-контейнеры (система, которая позволяет сохранить исходную структуру кода продукта и не перестраивать ее под разные сервисы). За ними надо следить, потому что, если они остановятся, пользователь не сможет загрузить страницу или что-то написать (заполнить форму, например). Для этого мы используем оркестратор — он развертывает контейнеры на сервер, следит за их доступностью. Он незаметно для клиента помогает все восстановить, если в приложении возникла ошибка. Раньше мы использовали Mesos, сейчас он устарел, поэтому банк постепенно переходит на Kubernetes: мы его настраиваем, переводим на него сервисы.
Также в конце прошлого года у нас появился Keycloak. Он определяет клиента и его права доступа, проверяет их на подлинность и предоставляет доступ в систему. Он помогает обеспечить безопасность приложений как для сотрудников банка, так и для его клиентов. Многие заполняют вручную формы логина и пароля несколько раз в день. Keycloak позволяет сделать единый безопасный вход во все системы.
Я горжусь этим проектом. Нам был нужен инструмент, который бы обеспечивал безопасность, мы рассматривали разные решения, но остановились на нем: внедрили, автоматизировали, написали документацию, чтобы в банке все могли им пользоваться, согласовали с безопасниками, архитекторами. Решение всем понравилось и теперь быстро развивается.
Что нужно новичку для старта в разработке?
В пандемию IT-рынок стал развиваться с безумной скоростью. Квалифицированных специалистов сложно найти, а спрос большой: все резко ушли в онлайн, всем нужно поддерживать свои сервисы. Если компания не будет использовать этот канал и останется офлайн, то она не выживет на рынке. Чтобы обеспечить функционал, его нужно написать, чем и занимаются разработчики, а Java особенно подходит для backend.
Если человек просто пишет код, отдает его специальным людям и не знает, что с ним происходит дальше, работает как конвейер, то это кодер, а не разработчик. Я считаю, что разработчик должен думать творчески, разбираться, как лучше подойти к решению задачи, и уметь общаться в команде.
На старте в backend нужно не только знать язык программирования (Java, Kotlin), но и разбираться во многих смежных темах:
- кэшах (Hazelcast или Redis);
- базах данных (SQL, NoSQL);
- фреймворках (Spring);
- владеть навыками DevOps;
- уметь работать с очередями.
Совет: когда люди понимают, что им нужно готовиться и много учить, чтобы попасть в хорошую компанию, то у них сразу пропадает интерес. Это неправильно. В профессии слишком часто все меняется, поэтому не учить ничего — это тупик. Если ты не развиваешься вместе со сферой, то в нее нет смысла идти.
Поэтому компании чаще выбирают специалистов, которые ограничиваются только backend-задачами и не нагружают себя frontend. Есть риск, что человек будет поверхностным специалистом, добавив к навыкам и frontend, так как оба направления требуют глубоких знаний.
Читайте также: Как стать Java-программистом с нуля
Новичку в начале работы дают простые и рутинные задачи: написать CRUD (Create, Read, Update, Delete) — стандартный сервис, который передает информацию из базы данных во frontend и ее обновляет. Джуниор может обновлять версии фреймворка, чтобы погрузиться в проект, разобраться в уже работающем коде. Стажерам я предлагаю написать сервис, который укорачивает ссылки. На таких задачах можно натренировать базовые навыки работы с языком.
Что нужно, чтобы стать техлидом?
Во всех компаниях рост проходит по-разному. Разработчик редко задерживается на одном месте дольше полутора-двух лет. Меняя работу, он смотрит, как устроены процессы, технические решения, узнает новую инфраструктуру. Когда он столкнется с новой задачей, поймет, как наиболее продуктивно ее решить. Примерно за пять лет можно поработать в трех компаниях, расширить кругозор и претендовать на должность техлида.
Кроме технических знаний, техлиду нужны софт-скиллы. В IT много зажатых людей, которые любят работать с кодом и не умеют общаться с коллегами. Но сейчас без общения в команде сложно сделать качественный продукт, и если разработчик должен уметь просто коммуницировать, то техлид должен общаться очень хорошо.
Он может и выступить с докладом, и помочь новичкам, и пообщаться с коллегой о проблемах. Иногда это даже важнее технических навыков. Технику можно выучить, а софт-скиллы сложнее получить, особенно если с детства ты необщительный человек. Но для этого можно пройти курсы ораторского искусства, почитать книги про менеджмент.
На новой должности я меньше года, мне есть куда развиваться. Я слежу за технологиями, потому что если их не изучать, то станешь невостребован на рынке. К тому же на мне, как на лидере мнения в своем направлении, лежит ответственность за коллег: нужно уметь оценивать компетенции подчиненных, понимать, куда развиваться направлению, а без актуальных знаний это невозможно.