Программирование – это творчество
Артем Ольков. Выпускник бакалавриата по направлению «Программная инженерия» 2014 года. Несмотря на юный возраст, у Артема за плечами уже несколько самостоятельных, интересных проектов, и активно развивающийся стартап Taifuno – чат в мобильном приложении. Артем катается на сноуборде, играет на саксофоне, танцует хип-хоп и фанки-джаз.
- Артем, расскажи немного о себе. Откуда ты родом, где учился в школе?
Я из Новосибирска, мои родители окончили мех-мат НГУ. Мое детство прошло в Академгородке – это город, построенный в лесу, там растут и живут ученые. Когда Академгородок строился, и кто-то спиливал для постройки дома дерево, которое можно было не трогать, то такого человека отправляли сначала на засаживание лесов, а затем под трибунал. Благодаря этому, сохранился лес, внутри которого расположен Академгородок.
Типичное воспоминание из моего детства: по дороге в школу прохожу мимо Института Ядерной физики (ИЯФ), оттуда выходит человек в костюме, перепачканном мелом, в руке у него портфель. У человека взъерошены волосы, он идет, размахивая руками, и разговаривает сам с собой. Внезапно в его речи наступает какая-то кульминация, он ставит портфель на землю, что-то рисует в воздухе, ударяет себя по лбу и… уходит обратно в ИЯФ еще на неделю, думать. Это если рассказывать в двух словах о том, откуда я родом.
- Как сложилось, что ты выбрал именно Вышку?
Я учился в Новосибирском Лицее №130, у нас была хорошая подготовка по физике и математике, и при этом еще и сильный английский. Мы занимались по пособиям ФМШ (школа при НГУ) и учебникам для первокурсников НГУ. Это было весело, трудно и еще временами холодно – Сибирь все-таки! Но мы справились. Я никак не могу привыкнуть к московскому климату: например, я никогда раньше не сталкивался с таким понятием, как ледяной дождь…
Еще учась в школе в 6-7 классах, я читал много фантастики и уже тогда понял, что мне нравится творить и я хочу, чтобы то, что я делаю, помогало окружающим и меняло мир в лучшую сторону. С химией у меня отношения не сложились, поэтому генным инженером я не стал, хотя такие мысли были.
У нас дома был компьютер – папа работал «айтишником». Я попал на несколько летних школ, там послушал, почитал что-то по программированию, и у меня появился интерес. Так я понял, что в этой области могу реализовать свое желание творить.
Я стал готовиться и развиваться в этом направлении, и в 11 классе стал победителем олимпиады по информатике СПбГУ ИТМО. Это была олимпиада первого уровня, и ее диплом позволял мне поступить в любой технический ВУЗ этой страны, кроме направления «Информационная безопасность» в ИТМО, т. к. туда еще требовалась алгебра, и МФТИ, у которого была своя политика в отношении олимпиад. Кроме того, на олимпиаде НГУ по физике я получил диплом первой степени. Это давало мне возможность пойти в НГУ на любой факультет – например, меня звали на медицинский. Но я, в общем-то, уже понимал, что хочу быть программистом. Итак, выбор, по сути, стоял между физфаком, мех-матом НГУ, ИТМО и, собственно, Вышкой. Вышка победила в этом списке, поскольку это был первый университет в России, открывший отдельное направление «Программная инженерия». Мы были первым набором, и мне казалось, что должно быть интересно. Так и получилось. Кроме того, я хотел себя попробовать в другом городе, жить в общаге, получить этот бесценный опыт…
- Тебе сложно было учиться?
На самом деле, не всегда. Все было устроено так, что самая большая нагрузка пришлась на первые два курса. Потом, конечно, тоже нельзя было прийти на экзамен и без проблем его сдать, если не учился весь семестр, но в целом нагрузка уже была существенно меньше. У нас была возможность сесть и о чем-то подумать, сходить погулять, порефлексировать, съездить на море, поработать.
- Ты помнишь свою первую сессию?
Да, по ее итогам я оказался 9-м в рейтинге из 100 человек. Это далось относительно легко, потому что я закончил хорошую школу, и почти все предметы в этой сессии мог сдать, базируясь лишь на школьных знаниях. Программирование, математика – почти ни с чем не было проблем.
- Какие преподаватели тебе особенно запомнились?
В первую очередь хотел бы отметить М.В. Ульянова. Он был одним из лучших преподавателей среди всех, кто у нас вел. Оба курса, которые он преподавал – один по изучению алгоритмов, а второй по применению теории вероятности и математической статистики к исследованию алгоритмов, – были очень яркими, и манера преподавания М.В. Ульянова очень выделялась. Все, что он преподавал, почти сразу укладывалось в голове.
Обязательно хочу отметить С.М. Авдошина. Он преподавал нам математическую логику на первом курсе. В отношении этого курса я испытывал такой забавный эффект: когда я приходил на лекцию и слушал ее, то чувствовал, что С. М. все очень качественно и подробно объясняет. Но когда я выходил с лекции, то отчетливо осознавал, что почему-то ничего не понял. Проходило ровно две недели, я ехал в метро на очередную лекцию, и вдруг в голове как будто загоралась лампочка: «Я понял то, что мне рассказывали две лекции назад». В этой ситуации нас всех спасло то, что между последней лекцией и экзаменом был перерыв ровно две недели, и на экзамен мы пришли уже «с лампочками»... Если без шуток, то этот курс был один из самых важных, по сути, это были основы программирования.
Конечно же, я вспоминаю Е.М. Гринкруга. Он очень яркий, веселый, и научил нас очень многому. Что касается практических знаний, которые я сейчас применяю, то я приобрел их именно благодаря Ефиму Михайловичу. У него были самые адекватные контрольные: это были не просто стандартные задачи; для решения этих контрольных нужно было подумать и применить свое понимание материала, а не зазубренный алгоритм. Основная мысль, которую Гринкруг старался донести до нас на протяжении всего курса, можно сформулировать так: задача программиста сегодня – это не написать хитрый алгоритм, который переработает большой объем данных и выдаст правильный результат. На сегодняшний день программирование – это взять два готовых кубика и правильно их соединить, по сути, это «Лего».
- Значит ли этого, что все оригинальное в общем-то уже написано?
Нет, ни в коем случае. Но все же большинство задач, с которыми сталкивается современный программист, это именно взять два кубика и грамотно их совестить, чтобы полученная деталь подошла к нужной системе. У тех, кто программирует на системном уровне, есть задача оригинальности, но у 99% программистов это все же работа с «кубиками», либо с написанием этих «кубиков».
Возвращаясь к рассказу, Ефим Михайлович, помимо всего прочего, прививал нам мысль, что когда программист пишет что-то для сторонних программистов, то на первый план должно выходить удобство использования другими твоего продукта. И тут приходится рассчитывать не только те ситуации, которые ты держишь в голове, но и понимать заранее и придумывать, как еще может быть использован твой продукт.
Также я благодарен Р.З. Ахметсафиной, она очень грамотно и интересно преподавала нам свой предмет. Одним словом, у нас была замечательная команда преподавателей.
- Какой у тебя был дипломный проект?
Сначала скажу несколько слов о моем научном руководителе. У нас был отличный преподаватель А.Д. Брейман. Он был замечателен тем, что если студенту было интересно, то Брейман был готов переписываться с ним даже ночами, отвечая на вопросы. Можно было написать ему в 4 утра, пожаловаться, что программа не компилируется или база данных не собирается, и он отвечал уже через 5 минут что-нибудь вроде: «Да, я проверил, Ваша конфигурация действительно ломается, поменяйте этот параметр на такой-то, и все заработает». Мы любили идти к нему под научное руководство. Я писал диплом на базе МФТИ, и от ВШЭ моим научным руководителем был как раз Брейман.
Моей дипломной работой был проект Aerostate. Я и мой друг и сосед по общаге Артем Николенко работали над проектом вместе. Суть проекта – создание программы моделирования перемещения примесей в атмосфере реального города. Физическую модель написали коллеги из МФТИ. На тот момент, когда мы присоединились к проекту, они уже 2 года занимались математическими и физическими моделями по данной задаче. На момент присоединения к проекту данные модели уже были протестированы на отдельных случаях и требовалась автоматизация всего процесса.
Наша задача была научиться делать более мелкие расчеты и добавить визуализацию. Я настраивал физический движок, который бы точно обсчитывал данные. Мы работали по карте Москвы: все данные, которые нам были нужны, лежат в открытом доступе. По Москве разбросаны около 20 точек, которые мониторят данные по выбросам в атмосферу. Кроме того, известно, сколько газов вырабатывают машины в единицу времени, и в совокупности с данными сервиса Яндекс.Пробки, мы получали возможность вычислить, сколько газов вырабатывается на определенном промежутке дороги. Также мы учитывали зеленые зоны – на них вещества оседают. Карту ветров нам предоставляли в формате WRF наши руководители, она обладает точностью до километра, чего нам, с учетом интерполяции, вполне хватало для расчетов.
Проект стал одним из участников стартап акселератора Tolstoy Startup Camp. По итогам программы проекту были предложены инвестиции, и на данный момент он стал частью Яндекса.
- Когда ты начал делать своей первый самостоятельный проект? Как пришла идея?
После третьего курса я прошел в Tolstoy Startup Camp – это инкубатор для стартапов, организованный «Яндексом». Для участия они отбирают талантливых ребят, и за время кэмпа нужно придумать какой-то продукт, реализовать его, а затем научиться его продавать определенной аудитории. На протяжении кэмпа работу команды курирует ментор, раз в неделю от команды требуется отчет о том, что было достигнуто за неделю.
Каждый день у нас было по 2-3 лекции о том, как продавать свой продукт, как искать аудиторию, как доказывать, что твой продукт ценен, как строить лендинг, как проводить конверсии – много-много всего. По сути, в Вышке меня научили программировать и управлять разработкой. На кэмпе же мне показали совсем другой мир – мир продаж, конверсий, дизайна, биз-дев, продакт-дев. Научили строить продукт, от этапа идеи до этапа «экономика сходится».
- Как ты попал в Startup Camp?
За два месяца был открыт отбор, я послал заявку, выполнил тестовое задание. Я поступал в кэмп в качестве программиста, и на собеседовании мне дали ту же задачу на Java, которую я решал, когда пытался устроиться на работу в «Яндекс» – в первый раз я ее не решил. В этот раз, когда я показал проверяющим свое решение, то они были очень удивлены, потому что когда я ее решал для «Яндекса», там были ограничения по времени, и мое решение было очень сильно оптимизированным. В итоге по производительности решение было очень быстрым, но сам код вышел очень сложным.
На кэмпе я почти сразу нашел свою команду. Помимо меня, в нее входил Боря Соколов, он был нашем основателем, и, по сути, руководителем проекта, также были верстальщик, дизайнер и серверный разработчик. Позже мы поняли, что для стартапа команда получилась, пожалуй, слишком большой. Оптимальной была бы команды из меньшего числа людей, или людей с другими компетенциями. Но все приходит с опытом.
Мы закончили кэмп в числе трех победителей, которым «Яндекс» предложил инвестиции и помощь. Компания снимала нам коворкинг, мы могли обращаться к менторам за помощью. Весь 4 курс я делал одновременно два проекта: Aerostate и Fivecards. В это время, конечно же, была еще и учеба. Все это давало замечательные ощущения и море адреналина. Но именно тогда я окончательно понял, что спать по 5 часов – это все-таки мало.
- Каким проектом ты занимаешься сейчас?
Как я уже упомянул, на последнем курсе я занимался двумя проектами, один из которых Fivecards. Идея проекта была следующая: сделать мобильное приложение, которое бы держало все скидочные карты владельца. Аналогов на российском рынке много, но мало у кого подобный проект пошел успешно, и наш тоже «не взлетел». Мы столкнулись с тем, что компании не готовы экспериментировать.
Благодаря Fivecards, у нас перед глазами вырос новый проект – Taifuno. Это именно то, чем я занимаюсь сейчас. Идея заключается в том, чтобы в мобильном приложении определенного продукта или услуги создать чат, через который клиент может общаться с поддержкой компании.
- Идея Taifuno пришла сама или вы почерпнули ее из зарубежных источников?
Мы увидели первый зарубежный аналог за неделю до запуска. Однако, это нас не расстроило, потому что конкуренция – это всегда хорошо, без конкуренции рынок стагнирует. В конце марта Facebook проводил большую конференцию, и оказалось, что с 27 марта мы конкурируем с Facebook. Мне тяжело было принять эту мысль, и потребовалось какое-то время, чтобы ее переварить. Но с другой стороны, раз уж Facebook пошел в эту сторону, значит, мы делаем очень крутую вещь.
Когда мы занимались Fivecards, то все время сталкивались с одной и той же ситуацией: мы приходили в компании, разговариваешь, и все задавали, сути один и тот же вопрос – какая польза компании от нашего решения. Компаниям было недостаточно той ценности продукта, которую мы им предлагали. В какой-то момент мы поняли, что по факту каждая компания у нас спрашивает одну и ту же вещь, только очень разными словами – «Ваше приложение даст нам прямой канал общения с пользователем?». Для нас это был очень важная галочка, положившая основания для Taifuno.
Идея окончательно кристаллизовалась, когда мы с Борей перешли на RocketBank – на мой взгляд, лучшее мобильное приложение для банка, выполняющее роль банка-эмитента. У них все общение с банком происходит посредством чата внутри приложения. Мы были в восторге от того, насколько это удобно и эффективно. Мы загорелись идеей, что у каждого мобильного приложения должна быть возможность встроить себе чат поддержки.
«Яндекс» все еще снимал для нас офис, где мы сидели по соседству с другими стартапами. Когда мы поговорили с ними, насколько может быть интересна такая вещь в принципе, то реакция была очень положительной. Все нас поддержали, а кто-то даже готов был вносить предоплату уже тогда, лишь бы мы начали разработку этого продукта.
Когда ты делаешь стартап, то такая реакция – это очень хороший знак, значит, надо брать «ноги в руки» и – вперед, делать!
- Вы привлекали инвесторов?
У нас были возможности договариваться с инвесторами. Но мы ими не пользовались принципиально. Мы разрабатывали все на свои деньги, потому что я считаю, чем дольше проект может жить на «свои» деньги, тем лучше. Это правило хорошего тона. Большая часть российской стартап-индустрии построена на том, что на начальном этапе берется побольше денег, покупаются квартиры, машины, а потом вдруг раз и из проекта ничего не получается. Мы стараемся наоборот: сначала начать зарабатывать, а деньги брать в крайнем случае, например, когда нужен экспоненциальный рост модели.
- Как вы рекламировались?
У нас есть кампании, запущенные на Facebook и на Яндекс.Директ, но большую часть продаж делали лично: в стартап-тусовке подходили и рассказывали тем, у кого есть мобильное приложение, а с нами их продукт станет на лучше. Так мы пришли на стартап мепроприятие на «Флаконе», где в течение суток стартаперы «варились в собственном соку», делали презентации, рекламировали свои продукты. Мы решили прийти туда без стенда, найти все мобильные приложения, которые там были представлены, и рассказать их владельцам про свой продукт, продать его и уйти. Все прошло очень удачно.
- Какой у вас сейчас состав команды?
Сейчас нас трое. Я занимаюсь фулл-стек разработкой, делаю библиотеку под Android, iOS и помогаю на сервере. Есть веб фулл-стек разработчик – Никита Гундобин. И Боря Соколов, он отвечает за продажи, юридические и экономические вопросы – туда мы с Никитой не вмешиваемся. Стратегические вопросы мы решаем вместе, а техническая часть – на мне и Никите.
- На какой вы сейчас стадии?
Мы находимся на стадии запуска. До этого полгода были «в разработке». Сейчас у нас уже есть клиенты, есть ребята, которые выложили наш продукт в Google Play и Yandex.Store.
- Какие у тебя планы на ближайшее время?
Пока что мы полностью посвящены этому проекту. Нам удалось изучить, какую пользу мы приносим бизнесу, и у нас появился ряд идей, связанных с тем, как мы можем сделать наш продукт еще лучше, какой функционал можно добавить. Благодаря этому, наш продукт обретет еще больше ценности.
Мы действительно разрабатываем еще одну вещь. Когда разработчик встраивает нашу библиотеку Taifuno в свое приложение, в нем появляется кнопка поддержки. У конечного пользователя может быть установлено много разных приложений, в которые он заходит, и там общается с тех. поддержкой конкретного сервиса. Но есть много заведений, у которых нет личного приложения. И им было бы интересно, чтобы существовал агрегатор тех. поддержек, в который они могли бы внести свой сервис, и посредством агрегатора иметь связь со своими пользователями. Такой продукт нацелен на офлайновый сервис. Звонить – это неудобно, трудно, отнимает много времени, а чат – это лаконично и быстро.
- Ваше приложение будет бесплатным?
Да, конечно. Мы как компания не особо видим смысла брать деньги с пользователя, потому что мы приносим пользу компании, и нашим клиентом является компания. А пользователи – это те люди, которым мы облегчаем жизнь.
- Какие у тебя цели в жизни?
Не жить бессмысленно, а жить так, чтобы каждое мое действие вело к ощутимому результату. Лежать на диване и листать ленту Вконтакте почти не имеет результата, а вот сидеть и делать продукт, рассчитанный на определенную аудиторию и понимать, зачем он этой аудитории, – вот это имеет смысл делать.
Еще я хочу прожить интересную жизнь: кататься на сноуборде, прыгать с парашютом, заниматься кайтингом. Последнее я даже начинал делать, но как раз когда я был на море, внезапно закончился ветер. А по сноуборду недавно закрыл 13-й сезон!
- Какие у тебя отношения с искусством?
Я учился играть на саксофоне. На первом курсе даже выступал на МузВышке, но сейчас на все не хватает времени, все стараюсь найти… Но когда время появится, то в приоритете, наверное, будут пробежки по утрам.
Еще я три года до университета занимался в Новосибирске в Академии шоу Flexx5. Я танцевал джаз-фанк, и мне это безумно нравилось. На первом курсе я еще ходил в вышкинскую школу танца, занимался хип-хопом, но, к сожалению, с учебой совмещать не удалось.
- Сколько часов в сутки ты работаешь?
От 8 часов. Бывает, что работа не идет, и тогда я не работаю целый день. Потому что если заставлять себя и работать через силу, то потом придется еще неделю исправлять то, что сделано было через силу. Но если работа идет хорошо, то могу ею заниматься и 14 часов, и больше.
- Для тебя работа – это больше творчество или ремесло?
Определенно, творчество. Я не просто так шел в программирование. Создавать свой продукт – это всегда и приятно, и интересно.
- Если бы ты вернулся в момент выбора университета, ты бы оставил такую траекторию?
Мне очень интересно было бы посмотреть, что бы получилось, если бы я учился не на программной инженерии, а на физфаке. Не готов сказать, что променял бы свой выбор на этот, но любопытно.
- Какие ты видишь преимущества от того, что ты учился именно в Вышке?
Моя практика показала, что от университета человек получает не знания в первую очередь, а связи: он попадает в определенную тусовку, в которой потом предстоит жить и развиваться профессионально. И в этом плане ВШЭ, несомненно, один из лучших университетов, в которые можно поступить.
- Есть у тебя мечта?
Есть желание когда-нибудь вернуться в университет в качестве преподавателя, это мне было бы интересно. Не могу сказать, что сейчас уже готов этим заниматься, так как пока еще моих знаний недостаточно. Но если Alma Mater позовет, то не откажусь.
- Кем ты видишь себя через 5-7 лет?
Через 7 лет я представляю себя получающим PhD в машинном обучении либо работающим в этой области где-то за рубежом. То есть, одна из моих целей, – уйти в машинное обучение и начать заниматься наукой. Я не считаю, что правильно заниматься наукой ради науки, по-моему, наука должна иметь практическое применение. И понимание практического применения науки, и того, зачем может понадобиться машинное обучение, проще всего получить как раз, занимаясь бизнесом.
Когда видишь рынок изнутри, разбираешься, кто что делает и у кого какие потребности, то на науку уже смотришь по-другому. И тогда приходит понимание, какие задачи сейчас в приоритете, и какую область важно развивать.