Максим Гнатенко о подходах к разработке и разработчикам
Максим — невероятно харизматичный и открытый человек, совмещающий в себе навыки талантливого программиста и бизнес-аналитика. За 13 лет работы в компании он стал уникальным специалистом, умеющим находить гармонию между разработкой и бизнесом. Смотрите полную видео-версию, читайте самое интересное.
Ты являешься одним из ведущих разработчиков XIAG. Как ты попал в компанию?
Получилось немного странно, что я вдруг оказался одним из ведущих разработчиков. Я себя совсем так не чувствовал ни тогда, ни сейчас. Я больше чувствую, что мне повезло. Всё-таки моё профильное образование — это электроника, и сейчас я часто понимаю, что мне не хватает фундаментальных знаний. Более-менее меня всегда тянуло к программированию, а XIAG — то место, в котором я смог этому научиться. С самого начала вокруг были люди, которые учили и сейчас для меня много значат.
Получилось так, что реально программистом я стал в XIAG и так никуда отсюда не делся. Хотя в принципе считается, что для эффективности рекомендуется менять место работы и вообще в современном мире все динамично куда-то двигаются, развиваются. Но у меня так получилось, что я развиваюсь в одном месте. То, что мы делали 10 лет назад в XIAG, совсем не то же самое, что мы делаем сейчас. Компания росла вместе с индустрией. Во многом это плюс менеджмента, который понимает, что если мы не будем двигаться, то никуда не придём. Мы не отставали и всегда были в духе времени. Было интересно, когда в Интернете появлялись новые фишки и мы их сразу внедряли в реальные проекты и процессы разработки.
Ты уже более 10 лет в компании…
Ужас.
Как изменились процессы за это время?
Первым приоритетом всегда были клиенты. Они хотят, чтобы мы не баловались своими игрушками, а решали бизнес-задачи. И если появляется какая-то технология, обещающая удешевить разработку или сделать приложение качественнее, то мы её внедряем. Например, сейчас все хотят, чтобы всё было динамично, как в мобильных приложениях и чтобы веб был отзывчивым для пользователя. Поэтому нам нельзя уже делать по старинке. Особенно это было заметно несколько лет назад, когда стали появляться все эти JS-фреймворки. Мы всегда использовали технологии по назначению: правильная задача — правильный инструмент. Я не имею ничего против работать по-старому, как раньше работали сайты. Это было красиво, просто, надёжно, но не так удобно для пользователя, когда страница перегружалась целиком на каждый чих.
При этом процессы изменились. Компания растёт по-тихоньку. Хорошо, что не быстро: мне нравится работать в маленькой компании. Но она растёт. Поэтому если раньше было ядро, где испытывались новые технологии, а потом это распространялось другими разработчикам, то сейчас, наверное, есть несколько центров притяжения. Наш вызов сейчас — передавать знания друг другу между командами. В повседневной жизни мы общаемся меньше, чем раньше. Раньше мы знали все проекты наперечёт, сейчас их больше. Но процессы таковы, что новые технологии внедряются. Как? Появляются вопросы, задачи, и тогда мы ищем хороший инструмент.
В IT-индустрии что происходит? Очень быстро меняется стек технологий. То, что несколько лет назад считалось чем-то новым и многообещающим сегодня вдруг уже устарело, помечено галочкой «deprecated» и не развивается — значит нам надо искать что-то ещё.
Плюс того, как всё построено в XIAG, здесь нет догматического мнения, нависающего над всеми: мы используем такой-то фреймворк или у нас принят такой-то язык. Движение обеспечивается тем, что есть определённая свобода выбора в технологии. Понятно, что здесь нельзя идти в другую крайность, когда ты хватаешься за всё новое. Клиенты не должны оплачивать нашу игру с технологиями.
Есть мнение, что современные разработчики с опытом 2-3 года по факту знают только современные технологии без фундаментальных знаний и по сути находятся далеко от программирования.
Я это замечаю. К сожалению, хороших программистов найти очень сложно. Нам не нужен человек, который думает «Я — PHP-программист» или «Я — JS-программист». Нам нужен человек, который имеет правильное отношение к IT-миру : он готов решать задачи, используя нужные инструменты. Освоить язык программирования — это можно и не составляет труда. Нужно только понимать в какую сторону двигаться. Мне даже кажется сейчас, что получить готового хорошего квалифицированного программиста безумно сложно. Есть конечно и экономическая составляющая: мы не готовы платить безумные деньги. Это будет странно по отношению к остальной команде и экономически неоправданно. С другой стороны брать на работу неквалифицированных ребят — нам же дороже, потому что мы тратим время квалифицированных людей на обучение, затормаживаем проект. В итоге разработка становится медленнее и качество наших решений страдает. Если в команде есть люди, которые не понимают определённые технологии или подходы — мы вынуждены их не использовать. В итоге у нас будут не такие интересные и качественные результаты работы и это приведёт к тому, что к нам не придут люди, которым интересно делать умные вещи.
Последнее время я верю, что мы скорее вырастим себе хорошего квалифицированного программиста, чем возьмём готового. У меня есть примеры таких ребят, которые пришли к нам работать год-два назад и сейчас они крутые. С ними приятно работать и видно, как люди изменились. Открываешь их код год назад и думаешь: ничего себе! Этот человек прошёл какой-то путь и сейчас он делает гораздо качественнее, грамотнее. От этого есть хорошее чувство и удовлетворение. Во-первых, что я был рядом и участвовал. Во-вторых, приятно работать с человеком, который так двигается.
Нужно как-то разглядеть на собеседовании эту способность правильно думать и учиться. За всё время, пока мы собеседовали, не было ни разу такого, что пришла звезда и мы сказали: во, ничего себе, мы хотим у него научиться! Почему-то нет таких людей: я не знаю, где они. Я помню примеры, когда человек присылал тестовое задание — оно было супер-переусложнено. Мы хотели отказать, но всё-таки взяли этого человека и сейчас он классный: делает решения очень хорошего уровня. Мне кажется собеседования — это всегда гадание.
Вообще я встречался в людьми с «сильным мнением», которые знают, как правильно — это плохо. Даже лучшие в индустрии не знают, как правильно. Человеческий разум всё-таки несовершенен. Я видел людей, которые делают потрясающие вещи и могут в уме придумывать обалденные алгоритмы, но даже они скромные. Когда человек настолько самоуверен — он становится закостеневшим, не готовым расти. Очень хорошо, когда человек сохраняет открытость, несмотря на опыт и знания. Признаёт свои ошибки, понимает, что можно сделать совсем по-другому.
Как раз хотел задать тебе вопрос, с кем приятно работать.
О да. Очень приятно работать с людьми, которые мыслят нестандартно — совсем не так, как я. Поставишь задачу и человек задаст такой вопрос, что ты сразу посмотришь на неё вверх ногами. Часто это помогает выйти из тупика. Приятно работать с людьми, которые сами по себе скромные. В то же время умные, образованные, чтобы быть с ними на одном уровне. Ещё моя мечта и моё желание — работать с людьми, у которых я могу учиться. Чтобы я не был самым лучшим — королём-оленем, который говорит всем, что делать. Не хочу быть в этой роли, потому что тогда я — потолок для всех, а мне расти некуда. Это самая неприятная ситуация, которая может случиться с программистом, когда он становится лучшим в команде. Тогда ему надо уходить, я думаю. Но это моё личное мнение — может кому-то так комфортно. Я бы хотел не останавливаться.
Какие требования обычно выдвигаешь к людям?
Формально у меня нет таких требований. Ты хочешь спросить, с кем я точно не хочу работать? С человеком, который не двигается. Если его решения остаются на одном уровне в течение месяца-двух. С другой стороны, часто бывает, что у таких людей есть другие сильные стороны. Допустим, внимание к деталям, въедливость и кропотливость в исследовании каких-то ситуаций, тестирование, документация, хороший русский или английский язык. В компании есть такая вещь, что даже если человек не дотягивает в программировании — мы стараемся найти ему место, чтобы он мог применять свои сильные стороны. Потому что есть очень разная работа и не все хотят быть на передовой в технологиях.
Какими проектам ты занимаешься?
Сейчас так получилось, что я работаю над проектом, для которого я писал логин-форму в первый день своей работы, 13 лет назад. И это очень интересно посмотреть, во что превратилось то, что я когда-то начинал. Вообще, работая в компании, я переходил из проекта в проект. Это одно из преимуществ работы здесь : мы можем кардинально менять то, чем занимаемся. Были проекты, которые просто заканчивались и я переходил на другой. Были проекты, куда я попросился сам. Это, наверное, тот самый европейский менеджмент в компании, что руководство понимает: работники должны быть счастливы от того, что делают. Иногда до смешного доходит, как сильно защищаются программисты от давления реального мира : от психованных клиентов, от жёстких сроков. Ваша задача — заниматься своими делами и быть счастливыми. С одной стороны, это выглядит смешно немножко, с другой, это правда создаёт классную атмосферу.
Последние 2 года я работаю над проектом, от которого меня прёт (Речь идёт о проекте HOGASHOP: https://www.hogashop.ch — прим.ред.). Я пришёл туда, когда он был в плохом полуобразованном состоянии: старый легаси-код и так далее. При этом он очень востребованный: он приносит доход своим владельцам и есть люди, которые пользуются им ежедневно. Поэтому все изменения приходят прямо в руки к людям. Твоя работа становится нужной и от этого очень приятно. Ребята ездили в Швейцарию, заходили в эти больницы, рестораны, видели, как люди используют приложение. Подглядывали, что лучше изменить.
Есть примеры проектов, которые ты считаешь важными для общества?
Ты задаёшь глобальный вопрос. Всё, что мы используем в повседневной жизни, очень изменило всё. Те же карты, на которых мы ищем ближайшую столовую. Наши мобильные телефоны, которые обеспечивают огромный информационный фон. Весь этот 21 век мне очень нравится своей информационной составляющей. У нас на кончиках пальцев целая куча информации. Тебе не нужно идти и записываться в библиотеку, 2 часа искать что-то. Ты просто говоришь: «OK, Google. Какая птица обладает зелёным оперением?». Даже то, что мы с тобой сидим, разговариваем (Интервью проводилось удалённо — прим. ред.) — это круто.
Каковы критерии качества, которые ты выделяешь при создании продуктов?
Я как программист люблю делать красиво. Но это красиво не видно снаружи. Над нами смеются, что у нас там радуги, единороги пляшут, а вот она реальная жизнь. Она совсем не такая красивая. С одной стороны, приятно сделать красивую архитектуру, которая будет легко меняться, будет понятна. И я считаю, что сделать решение не сложным — для этого нужен очень большой талант. Но важная тема, которую многие разработчики упускают — попробовать использовать свой продукт самому. Будет ли комфортно? Я считаю, это и есть критерий качества. Он в себе аккумулирует и быстроту взаимодействия, и качество интерфейса, и данные, которые ты видишь.
Часто происходит постановка задачи и мы делаем. Потом смотрим код: всё отлично, всё обсудили, вылизали все решения. Потом открываем это в виде готового продукта и понимаем: неудобно, вот здесь не подумали, а это вообще странно. Так и возникает качество. Людям IT само по себе не нужно , им нужно решение задачи.
Интересно то, чем мы занимаемся как программисты в XIAG: в самом начале проекта мы вникаем в бизнес-процесс клиента. И мы понимаем, как работает чей-то бизнес, если нам дали всю информацию. Талант менеджера предоставить всё это и дать достаточно информации о том, как всё происходит в реальной жизни. Ни в коем случае не надо говорить, как это сделать — нужно рассказать о реальной жизни и задачах. Клиенту тоже нужно показать наши процессы, объяснить, почему мы тратим время на то и другое.
Например, взять рефакторинг. Часто решение, которые мы делаем итеративно приходит, потому что клиент часто не знает, что он сам хочет в конце. Мы, как профессионалы, можем предложить направление. У нас в XIAG какая штука: никогда не бывает жёстких спецификаций. Когда ты заказываешь дом, ты не говоришь в середине постройки, что я хочу, чтобы этот дом ещё летал. А в программировании это так.
Как вы работаете над проектами?
Обычно у нас занимает лидирующую роль человек, который заинтересован. В чём он заинтересован: в собственном росте или попробовать новые технологии за счёт клиента или ему нравится продукт — это его дело. Ещё очень важный момент: как человек относится к работе, что он делает. Спросишь: «Ты чем занят?». Он ответит: «Я пишу алгоритм». А другой ответит: «Я делаю систему». Если ты представляешь целиком картину, то ты можешь вести проект и объединять вокруг себя людей.
Что касается процессов, то недавно мы стали читать код, который мы делаем. Моё твёрдое убеждение : я хочу, чтобы кто-то читал мой код. Я помню, что несколько лет назад про программистов говорили: «Вы любить только писать, а читать чужое не любите. Из-за этого пишите что попало». Сейчас у нас этого нет совсем: мы хорошо обсуждаем, что делаем. Если человек сделал что-то плохо — он это не покажет никому, потому что знает, что получит критику.
Что тебя вдохновляет в современной IT-сфере? Например, искусственный интеллект.
Очень интересно поговорить с гуглом, что он умеет. Все вещи, которые касаются реальной жизни — это вдохновляет. Вообще, вдохновляют какие-то фишки, которые рождаются из синтеза технологий. Вроде как были разрозненные решения, а ты можешь их вдруг объединить и получить что-то новое. Например, как самоуправляемые машины. Это удивительно — там огромное количество технологий: от распознавания образов до разных радаров и электроники.