March 9

Знай наших: Михаил Завойских

Михаил Завойских, PHP senior developer в Центре Высоких Технологий

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

Как началось твое увлечение программированием? Как попал в профессию?

Это со школы началось. Программирование у нас вела очень крутая учительница, она там нас на всякие олимпиады готовила и отправляла. Самая первая программа была что-то типа танчиков, всякие картинки рисовали на Visual Basic.

После школы уже пошел в ИжГТУ на программную инженерию. Я тогда походил, посмотрел — конструирование труб и шестеренок показалось не очень… А вот программирование — это было знакомое, близкое, поэтому я выбрал это направление. Ну и в вузе уже только программировал, мне всегда было интересно. Я к тому времени уже хорошо строил разные алгоритмы и всё такое, так что, сложностей не было.

А потом я пришел в ЦВТ. На третьем курсе.

Расскажи о своих первых проектах в ЦВТ?

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

Проектов особо чисто пхпшных не было, но был Битрикс: куча проектов на поддержке, которые были написаны на этой CMS. Я недели 2 или 3 разбирался, что такое Битрикс, а потом меня посадили на поддержку сайта пластической хирургии… О, Боже, это был самый отвратительный сайт, который у меня был вообще на памяти! Потому что, во-первых, это была старая версия Битрикса, а во-вторых, деплой делался ручками. То есть, ты, реально, берёшь и копируешь файлы из локальной системы на удалённый сервер, а сам думаешь: «хм-м-м… заведется или не заведется?» Потом открываешь сайт — а он… упал. Никаких тестов, никакого CI/CD, я сам ничего не знаю…

И как в итоге сложилось с Битриксом?

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

Помню, пилил сайт для «Мисс Ижевск». Ничего интересного, просто сайт со сбором заявок. Интересная, наверное, была штука, с проверкой на вшивость — я про накрутки всякие и так далее. Мы тогда просто по IP-адресам блокировали. SMS — вот что самое интересное было. Тогда случилось первое моё взаимодействие с современным фронтом. Для меня это было новое, потому что на старых проектах все было по-другому: ты и бэк на PHP, и фронт пилишь, и админишь, и менеджер — короче фулл-стек.

А потом была «Лояльность»?

Да. Потом по рекомендации ко мне пришел Святослав Молодских, потому что я не хотел Битриксом заниматься. Свят был лидом на «Лояльности» и начал погружать меня в проект. Это был прямо офигенный шаг вперед, потому что, когда ты пишешь что-то на CMS, то, по сути, ты просто наполняешь что-то контентом и немного программируешь. А тут у тебя офигенно большая команда — больше 20 человек, там есть процессы. Хреновые, но процессы. Это огромная разница — когда вы пилите что-то вдвоём, или когда трудится команда из 20 человек.

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

Проект «Лояльность» — внутреннее название ИТ-продукта, над развитием которого команда ЦВТ из 22 человек работала в течение 5 лет. Продукт — облачная система лояльности, которую используют компании из различных отраслей: Food и Non-Food ритейл, спортивные и модные бренды, торговые центры, заведения общепита, кинотеатры и аптеки.

Человеку, зашедшему на проект, дают мелкие баги, различные мелкие задачи. Так как процессы были в начальной стадии становления, это заняло где-то около месяца. Не было документации. Точнее, она была, но это 400 страниц, плюс особенности реализации передавались из уст в уста. А заказчик гнал и не давал времени на ведение нормальной документации.

Ты был почти три года на «Лояльности». Как за это время менялась команда и твоя роль?

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

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

На «Лояльности» я прокачивал скиллы, как на реактивной тяге.

На каких трёх больших проектах ты работал?

Действительно больших проектов у меня было два. Самый крупный проект для меня — уже упомянутая «Лояльность».

А последний мой проект (вернее, крайний) — российская сеть ресторанов японской кухни. Там я просто сеньор. Тимлид внешний, сидит в Москве.
Хоть мы и говорили, что на «Лояльности» были разные огрехи, но все познается в сравнении. Текущий проект мне не так нравится, как «Лояльность». В плане технологий на нём не так все радужно. Процессы не налажены, потому что, по сути, это бывший стартап. Хотя у них большая сеть ресторанов, но это все еще стартап в плане процессов и технологий.

Плюс, там тимлид — сова. Он работает с 16:00 по московскому времени, и это довольно напряжно было, потому что мы созванивались раз 5 в день, и всё это было после 18:00 в нашем часовом поясе. На этом фоне я пару недель хандрил. Потом поставил целью договориться, что после 19:00 я недоступен, решаем всё в это время. И теперь я работаю с 10:00 до 19:00, и всё норм.

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

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

Как относишься к шутке про то, что все PHP-разработчики должны превратиться в Go-разработчиков?

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

План у меня был на горизонте 2 лет. 22-й год во второй половине. Это абстрактная дата, потому что, как минимум, один проект я уже сделал на Go. Внутренний апишка для «Кукша». Мне очень понравилось.

Quksch — игра-сервис. Игра строится по принципу «камень-ножницы-бумага». На заработанные очки можно сделать ставки на аукционе и получить физические призы. Доступен только на мероприятиях ЦВТ.

Что можно спросить перед началом проекта, чтобы понять, стоит переходить на другой проект или нет?

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

Как процесс построен? Как вы таски ставите? Как происходит работа над задачами? Кто их ставит и каким образом? Tote не Tote, сценарии, может, просто? Автотесты или тестировщики? А может, и то, и другое?

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

Чем люди руководствуются, когда выбирают проект?

Предпочитают более современные технологии и более прозрачные и зрелые процессы.

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

Documentation first. Когда ты в аджайле работаешь, у тебя по-любому есть документы. Даже свои. Полезно когда все знают, что нужно делать в конкретной ситуации. Процессы должны быть прозрачны. А без документов ты не сможешь этого достичь.

Как об этом узнать заранее?

Можно спросить. Что-то вроде онбординга на проект. Задать вопрос «есть ли у вас онбординг на проект?»

Но я не знаю, как несколькими вопросами можно узнать о качестве процессов на проекте. Это узнается уже в процессе за первые 2-3 дня.

Перед опытными разработчиками в какой-то момент начинают маячить две ветки развития — в тимлида или архитектора. Что тебе ближе? Как планируешь развиваться?

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

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

Чем отпугивает тимлидство?

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

Как ты друзьям / родителям рассказываешь о своей работе?

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

Что рекомендуешь почитать?

Что почитать… Для разгрузки мозга мне очень понравилась серия книг Лю Цысинь «В память о прошлом Земли». Мне очень понравилось. Из профессиональной литературы — Клеппман Мартин «Высоконагруженные приложения. Программирование, масштабирование, поддержка».