Как IT-продукты помогают выращивать огурцы зимой в Сибири
Интервью с Артёмом Васильевым (Team Lead, Roowix)
Артём пользуется кнопочным телефоном, выращивает красный перец на подоконнике, а в свободное время ходит под парусом. Предпочитает проекты по автоматизации реальных процессов, а не эти ваши «инстаграмы». Он хорошо понимает, как достичь гармонии между бизнесом и разработкой. Имеет обширный опыт в запуске крупных и успешных проектов «с нуля»—за что в компании получил прозвище «kickstarter».
Основной стек: PHP, Symfony, Angular.js, PostgreSQL, MongoDB.
Область интересов: автоматизация реальных процессов, управление продуктами, запуск продуктов, выращивание перчиков на подоконнике.
— Тебе про что интереснее разговаривать: про проекты или технологии?
— Наверное, больше про проекты. Про технологии более-менее всё понятно.

— Я заметил, что ты очень любишь проекты, которыми занимаешься: можешь рассказать про них подробнее?
— На данный момент у меня 2 проекта.

Первый — b2b.onetwotrip.com. Сервис интересен тем, что решает реальную задачу бизнеса. Также проект живой и мы делаем его фактически «с нуля», с учётом того, что все проекты в рамках OneTwoTrip сильно завязаны на внутреннюю инфраструктуру. Можно сказать, что мы сделали стартап внутри большого сервиса и теперь это боевой проект.

Второй — проект «умных» теплиц. Этот проект мы также начали «с нуля» и он очень интересен. Во-первых, это живой стартап, который развивается. Во-вторых, проект имеет прямое отношение к автоматизации и управлению реальными вещами, реальными процессами — это то, чего в большинстве проектов ты не потрогаешь. Например, реальные датчики, реальные нагреватели, управление светом. Более того, это всё даёт реальные материальные вещи и сверх того — ты можешь их съесть. Мне самому нравится выращивать кое-что. У меня дома, например, растут красный перец, лимон, каламондин — меня прикалывают штуки, которые дают плоды. Ребята нам показывали, как огурцы растут — это прикольно! Немного земли, семян и некоторого процесса автоматизации — и вот, у тебя зимой в Сибири вырос огурец ещё и вкусный! Получаются действительно органические продукты.
— Это правда?
— Да, всё будет сертифицироваться. Ребята постоянно публикуют материалы и отвечают на вопросы. В общем, бурлит деятельность стартапа со всеми связанными сложностями. Многие вещи ещё не закреплены. Мы не можем сказать «давайте сделаем как у этих», потому что никаких этих ещё нет. По сути, не на кого опереться в данной сфере. Если сравнить с такими вещами, как Vkontakte, Facebook, то там, если фишка прикольная, можно перенять. А в данной области решения очень специфичные, под конкретную область. Если это тепличные хозяйства, то там, скорее всего, и будет сделано под конкретное хозяйство. У нас задача—сделать более универсальное приложение для агрономов и инженеров. Для них важно сейчас проводить эксперименты, чтобы на их основе поставить лучшее оборудование и запрограммировать через наш интерфейс лучшие параметры для выращивания растений. Многие вещи сейчас проходят этап апробации: пойдёт — не пойдёт, будет ли удобно тем людям, которые уже на проекте.
— Как вы выстраиваете процессы в проекте, который запускаете «с нуля»?
— Сейчас есть много задумок, как сделать лучше, но опять же нужно не распыляться и пытаться сделать сразу конечный вариант. Как правило, на это уходит много времени и сил. Результат может в конечном счёте уйти в стол, потому что в своё время не опробовали, а потом посмотрели и не пошло. Поэтому очень важно уметь прототипировать, но не бездумно — костыли на велосипедах. Лучше доставить маленькую фичу для людей и они поймут: им это надо, им это удобно.
— То есть ты должен общаться с конечным пользователем, но как это возможно?
— Я начал карьеру в компании, которая делала один проект для одного заказчика. Потом я пришёл в классический аутсорсинг: менеджер продаж находит проект, потом происходит оценка, менеджер продаж пытается продать эту оценку, приходит обратно и спрашивает: «А что так много?». Если проект всё-таки продаётся, то ты пилишь его в рамках заданных часов. В 99% случаев этот проект ты не увидишь больше никогда. Когда я пришёл в Roowix, то понял, что тут делают продукты, которые ты видишь каждый день. Если ты делаешь супер-плохо, то ты со своим же «говнокодом» столкнёшься 100%. А когда с ним столкнутся другие, то они скажут тебе своё мнение, как ты пишешь. По сути, этот твой проект, за который ты отвечаешь: тебе интересно, чтобы он жил и развивался. На таких проектах приходит понимание, что бизнес неотрывно связан с проектом, как и разработка. Работая над продуктом, тебе важно, чтобы проект был успешен, чтобы он приносил деньги — тогда будет расширяться команда, появится возможность использования новых технологий, рефакторинга и т.д.

Я стараюсь всегда быть в курсе, как проект живёт, как появляются новые клиенты, что они думают об удобстве. Часто бывает полезным пообщаться с аккаунт-менеджером.
— Почему разработчики редко обращают внимание на реальные сферы, занимаясь попсовым вебом? И вообще, в каких проектах круто участвовать?
— Я думаю, что сама профильная отрасль должна прийти к пониманию — должен быть заказ (спрос). Однажды, я читал про одно медицинское учреждение, как там сотрудники пришли к оформлению внутреннего пространства и кабинетов. Они вымерили среднее время прохождения человека по клинике и критические точки в пространстве: где было много людей, где люди долго задерживались или где нужно долго идти от одного кабинета к другому. В итоге переместили оборудование, сделали разметку. По сути, это не IT-автоматизация, но применялся тот же подход, включая метрики, выявление оптимальных путей и так далее. Мне понравился подход: если люди заинтересованы сделать хорошо, то они так и делают.

Критерий крутого проекта для разработчика — возможность участвовать в его жизни. Не чтобы задачи спускались сверху, а так, чтобы ты сам мог бы понимать его нужды и видеть, чего проект достигает. Если ты работаешь без фидбека, то как ты поймёшь, что ты сделал, реально ли ты делаешь что-то полезное?
— Каким качествами должен обладать человек, чтобы работать над живыми продуктами?
— Не нужно бояться легаси кода. На любом живом проекте, который я видел, всегда были такие проблемы: старая логика, старые модули. Также не должно быть «экстремизма»: например, «давайте перепишем всё с нуля». Чтобы переписать с нуля должна быть очень веская причина. Например, когда технологии настолько старые, что ты вообще не можешь поднять производительность проекта—упёрся в технологию. Такие идеи появляются у людей, оторванных от бизнеса и продукта.

Ещё я бы выделил, особенно на старте проекта, что ты не можешь работать с 9:00 до 18:00 — работоспособность очень важна. Мне приятно видеть, что в моей компании много людей с колоссальной работоспособностью и взаимовыручкой. Мне нравится такое качество в коллегах, как приверженность проекту — ты должен любить его.
— Ты часто видишь эти качества на собеседованиях? И вообще, какими критериями руководствуешься при выборе людей в команду?
— В конечном счёте на первый план выходят человеческие качества, чем строго технические: впишется человек в команду или нет. Меня часто отталкивает несоответствие того, что человек говорит и что он реально делал. Часто рассказывают, что делали крутые растущие проекты, а когда узнаёшь, какие технологии использовали и какие были планы по улучшению—то люди не могут внятно объяснить, в чём было бы преимущество перехода на новые версии или технологии, почему использовали именно такой стек. Если ты используешь технологию, то ты должен хотя бы за ней следить. Если такого не происходит —значит, человеку просто ставили задачу и он её бездумно делал. Получается кодер, как работник завода, который штампует детали. Но кто-то их чертит, придумывает, кто-то их вытачивает хитрым образом.

Я часто спрашиваю, если я завтра приду на проект — какие передо мною будут задачи? Для меня это показатель, насколько человек вовлечён: не просто ли он толкается по рынку в поисках зарплаты повыше? Это показывает, каким родом задач человек мыслит, сможем ли мы разговаривать на одном языке. Это даёт возможность не разочароваться в выборе.
— Что значит взаимодействие бизнеса и разработки, про которое ты говорил и как достичь гармонии?
— Нужно уметь вовремя находить проблемы — это важно для взаимодействия бизнеса и разработки. Если ты видишь проблему и понимаешь, что она обрастает дополнительными проблемами, которые могут привести к критической ситуации, то нужно рассказать об этом бизнесу. Больно становится тогда, когда люди не договариваются: не видят проблемы друг у друга. У меня был проект в практике, который открывался только в браузере IE до девятой версии, он был написан на PHP 4. Сколько мы не пытались человеку доказать, что нужно переписать на PHP 5, он всё равно отказывался и в итоге проект умер, хотя вроде был прикольный и успешный.

Я всегда исхожу из такой логики, что скорее всего, я чего-то не знаю и пытаюсь выяснить, что к чему. Проблемы бизнеса — это и твои проблемы, только в другом масштабе.
— Какие продукты тебе нравятся?
— Мне нравится Jira — она оставляет впечатление хорошего добротного продукта с развитой экосистемой. Что касается попсовых продуктов, вроде Telegram, WhatsApp и так далее, то я не пользуюсь, потому что у меня кнопочный телефон.
— WTF?
— Во-первых, он долго держит зарядку. Во-вторых, в нём нет Slack, и Skype туда тоже не впихнуть. Я всегда старюсь быть максимально онлайн, но хочется, чтобы когда ты закрыл ноутбук, то у тебя появилось свободное время. С современными гаджетами это очень сложно — всякие нотификации. Даже без них ты всё равно полезешь в смартфон что-нибудь посмотреть — это уже в моторику переходит.

Есть часть вещей, которая мне вообще не интересна: Twitter, Instagram. Я не понимаю, какую задачу они мне помогут решить. Мне кажется, когда люди используют сервис просто, чтобы использовать, цена такого сервиса невысока.
— Тогда какие критерии качественного IT-продукта?
— Качественный продукт должен решать задачу, а не выдумывать. Важный критерий — нужность какому-нибудь сообществу. Также должно быть хорошее отношение внутри команды и вовлечённость технической команды в процессы проекта. Это позволяет разработчикам не отрываться от действительности и решать реальные задачи, подстраиваясь под изменения.
— Я заметил тренд, что многие хорошие разработчики перестали читать техническую литературу? Ты читаешь?
— В целом, по разработке книги не особо читаю — только ресурсы, мини-статьи. Интереснее про менеджмент, потому что в менеджменте ты управляешь реальными процессами. В нашей отрасли сложно сказать, что будет потом. Вот ты 10 лет занимаешься разработкой: был джуном, стал мидлом, синьором, тимлидом, а что дальше? Возможно, в будущем я захочу использовать свой опыт и вести проект, но уже не делать его своими руками.