Сергей Бойченко интересовался компьютерами с раннего детства, а сейчас управляет командой разработчиков в крупной компании. Он рассказывает, какие уроки вынес после обрушения системы на первом серьезном проекте, почему стереотипы о программистах давно в прошлом и как выглядит оптимальная формула начала карьерного пути в IT.
Чем я занимаюсь
Я работаю тимлидом разработчиков в онлайн-школе изучения английского языка Skyeng. Два моих основных стека — Java и Kotlin, но в Skyeng моя команда работает на PHP. В моей команде 10 человек, мы отвечаем за CRM-систему.
В разных компаниях роль тимлида понимается по-разному: где-то он чуть ли не владелец маленького бизнеса, где-то отвечает и за команду, и за финансы, где-то — за успешность всего проекта сразу. В классическом понимании тимлид — это человек, который занимается эффективным выстраиванием процессов в команде и коммуникациями внутри. В зависимости от стека тимлид может брать на себя функции техлида и становиться главным еще и по коду.
Моя IT-карьера началась с раннего детства: у меня не было консолей типа Dendy и Sega, но был компьютер. Через него я познавал окружающий мир и развлечения, ставил и сносил игры, иногда вместе с этим сносил и винду, после чего получал от отца много «благодарности», так как это был его рабочий инструмент, позже изучал Photoshop и 3ds Max. Став старше, я начал помогать другим: устанавливал программы, рассказывал, как работают те или иные функции.
Я успел поработать в разных компаниях, начиная с роли «мальчика на побегушках», наращивая опыт и экспертизу.
Почему стоит выбрать Java
Нельзя сказать, что язык Java важнее других языков разработки. Мне ближе подход максимальной оптимизации. Если в компании выбор делается в пользу одного определенного стека, экономически целесообразно предлагать решения именно на нем, но отталкиваться нужно от потребностей.
Тем не менее именно на Java написаны многие backend-системы для мобильных приложений, популярных банков и даже Netflix. В зарубежных компаниях могут быть другие подходы и иное видение целесообразности использования того или иного стека. Компания BMW использует Java EE (набор спецификаций для Java для задач средних и крупных компаний), но не жалует Spring (универсальный фреймворк на Java), а у нас его многие любят. В целом, в России Java и подход к нему развиты на очень высоком уровне.
Мы рассказывали, с чего стоит начать учить Java в этой статье
Из чего состоит моя работа
Порой дни бывают очень загруженными, когда с утра до вечера только встречи, созвоны, решение процессуальных вопросов, административных или технических. Технические задачи требуют отдельного погружения, под них хочется выделить время, не связанное с другими событиями, чтобы направить работу мозга только на них.
Когда нагрузки много, рабочий день растягивается и появляется желание отвлечься, например пойти на тренировку, а оставшиеся задачи доделать вечером без суматохи и отметок в Slack.
Набор инструментов, который я использую ежедневно, достаточно базовый. Это Jira или любой трекер задач, настроенный под себя и командную работу. Чтобы быстро сводить данные, мы пользуемся разными таблицами, в Confluence фиксируем работу с документами. Дополнительно, если нужен трекер продуктивности, подключаю Pomodoro, а помимо Jira я пользуюсь Trello — туда отправляются заметки, наработки по тайм-менеджменту, как личному, так и командному.
Специальных «тимлидовских» программ как таковых нет: на моем рабочем столе умещается расширенный набор Java-разработчика, кое-что от проджект-менеджера.
Из любой ошибки можно извлечь ценный урок на будущее
Самый неприятный случай, связанный с моей работой, касался найма. Тогда я работал в небольшой команде, и поиск нового человека стал моим первым подобным опытом. Особой возможности уделять этому много времени и сил не было — текущие проекты и дедлайны никто не отменял.
Так получилось, что за время испытательного срока проверить нового сотрудника соответствующими его компетенциям задачами не получилось. Три месяца для него пролетели незаметно за решением junior-вопросов, хотя позиция подразумевала уровень middle+. Первая серьезная задача после испытательного срока вызвала фатальные сложности, и подобная кризисная ситуация длилась вплоть до возможного прекращения сотрудничества.
Увольнения — один из самых неприятных аспектов работы тимлида, особенно когда нанимаешь человека самостоятельно, а далее приходится с ним также самостоятельно прощаться. Чтобы было проще, стоит относиться к этому как к бизнесу, ведь сама сфера IT — исключительно прикладная часть бизнеса, а в решении задач нужно преследовать принципы максимальной эффективности.
Однажды стрессовая ситуация произошла частично из-за меня. На первом рабочем месте после университета мы с командой делали серьезный проект для большого и важного заказчика — интеграционную шину данных. Это когда с распределительных центров в центральное хранилище собирается огромное количество разной информации. После апдейта, к которому я был причастен, система упала: потери были многомиллионные, а стресса хватило. Как сейчас помню: вечер, мы сидим в пустом опенспейсе в офисе и пытаемся починить все вручную, а над нами стоят все руководители.
Несмотря на такие фейлы, я придерживаюсь мнения, что даже самая страшная ошибка — это повод получить опыт. Ситуации бывают разные, и задача как разработчика, так и тимлида — выработать особый тип стрессоустойчивости, предугадывая наиболее жесткие провалы. Если что-то произойдет на самом деле, шанс подойти к этому с холодной головой становится выше.
Совет: не бойтесь ошибок и рефлексируйте. Специфика IT в том, что в любой момент можно столкнуться с задачей, которую вы никогда до этого не решали и понятия не имеете, что и как с ней делать.
Soft skills vs. hard skills для разработчика и тимлида
Для современного разработчика огромное значение имеет командное взаимодействие. В последние годы IT-сфера перестроилась так, что для устойчивости компании лучше набрать менее высококвалифицированных специалистов, которые смогут договориться между собой и собраться в команду, чем взять одного гениального сотрудника, который создаст многоуровневую сложную систему в одиночку, но поддерживать ее работу сможет только он. Такой зависимости сейчас принято избегать, поэтому стереотип о том, что программист — молчаливый интроверт, сидящий в углу в вязаном свитере и очках, можно смело забывать. Кроме этого, любому разработчику важно понимать ценность собственной работы для бизнеса и заказчика.
Коммуникация для тимлида — это hard skills, потому что это его главный инструмент работы. Тимлид — это фронтмен всей команды, от него зависит и рабочий настрой всех членов.
К soft skills тимлидов можно отнести умение выстраивать общение с аналитиками, проджект-менеджерами и продакт-менеджерами, презентовать продукт и команду и вовремя брать на себя ответственность за бюрократические операции. Разработчики обычно меньше всего любят заполнять бумажки и составлять отчеты, поэтому хороший тимлид должен уметь оградить команду от ненужной волокиты, позволяя ей просто делать свою работу без отвлекающих факторов.
Я выбрал карьерный путь «про людей»
Рано или поздно любой разработчик окажется на перепутье: развиваться в технической архитектуре или уходить в менеджмент команд. «Архитекторы» получают максимально возможные технологические знания и кругозор и становятся техлидами — своеобразными оракулами, к которым приходят за советом, когда ничего не работает.
Для своего карьерного пути и будущего развития я выбрал менеджмент команд, потому что понял: хотя я могу делать крутые вещи как разработчик, они никогда не будут такими же масштабными, как задачи в рамках команды. Результат команды становится твоим собственным.
Почему IT похоже на сбор Lego
Java-разработчики будут востребованы ближайшие десять лет: сфера динамично развивается, и даже после небольшого перерыва можно ощутить отставание в собственных навыках. Тем не менее базовые концепции работы железа, выстраивания архитектуры, фундаментальные основы не меняются десятилетиями, поэтому у меня получилось влиться в Java-разработку за пару месяцев. Этот стек мне нравится тем, что он позволяет решать задачи в абсолютно разных сферах, будь то авиация или ритейл.
На мой взгляд, перспективнее всего сейчас развиваться в мобильной разработке, frontend и backend, где знания Java особенно ценятся. Чем хорош backend: можно не думать о внешнем виде и погрузиться в сложные внутренние задачи, создавая проекты разного масштаба — от простого бота до распределенных комплексных систем, нагруженных разной архитектурой. Была бы фантазия, а развернуться точно есть где.
Однако надо понимать: стать крутым программистом меньше чем за год невозможно. Вопреки распространенному мнению, IT — это не про невероятную скорость карьерного роста. Полгода хватит, чтобы получить базовое понимание о навыках и возможностях их использования, затем нужно найти работодателя, показать ему свою ценность для проекта и начинать развитие. Процесс напоминает игру в Lego, где с нужным количеством деталек можно собрать все что угодно. С программированием так же: набирая опыт от участия в разных проектах, человек получает базовый набор своих кубиков, из которых в будущем сможет собирать всё более сложные и масштабные фигуры.
Вариантов обучения программированию сейчас множество. Если вы молоды и только собираетесь поступать в университет, есть смысл сделать выбор в пользу технической специальности, при этом не ожидать, что преподаватели с лету научат Java или мобильной разработке.
Современные курсы же, наоборот, предлагают обучение актуальным технологиям и подходам от практиков в сфере IT. Несмотря на то что практически всю информацию можно найти в открытом доступе, учеба на платных курсах предлагает дополнительную мотивацию в виде наставников извне.
Оптимальная схема для вхождения в IT: курсы + походы по собеседованиям для получения опыта + самостоятельное изучение актуальных тенденций.
Не все работодатели готовы вкладываться в неопытных джунов, которые только начинают свой путь. Для работодателя, берущего джуна в штат, большое значение имеют те самые «горящие глаза» и желание развиваться. Могу сказать по собственному опыту: отношение начинающего разработчика к выполнению задач и его мотивация бросаются в глаза со стороны.