Вокруг нас достаточно разработчиков, которые хотели бы заняться своим проектом. Зачастую эти идеи так и пылятся в головах людей по самым различным причинам. Истории Вадима Смирнова из 2ГИС — как раз о том, как претворить их в жизнь. Потратив несколько выходных за год, он смог сделать пять разных проектов, не заработал миллионы, но при этом не разочаровался и не прекращает работать над pet-project'ами.
В основе публикации — доклад Вадима на AppConf 2017.
Я работаю в 2ГИС, но буду рассказывать не про опыт, который получил в стенах компании, а про то, как мы с ребятами пилим проекты.
Наверное, не все знают, что такое pet-project’ы. Это проекты, которые пилятся просто потому, что человек может и хочет, например:
- потыкать в новую технологию;
- не просто заниматься инжинирингом, а повлиять серьезно на продукт или даже сделать свой;
- стать миллионером.
В общем причина у каждого своя.
Года за полтора мы сделали порядка десяти проектов, из них четыре приложения. В App Store сейчас одно, а два из них попали на главную страницу App featured.
Одно из них – «Shaker». Это приложение для бородатых алкоголиков, которые сидят в баре и не знают, в какой следующий пойти, а хитрое приложение им подсказывает.
Второе приложение – «Такса». Это приложение, которое помогает найти среди готовых поставщиков такси самое дешевое, которое довезет вас из точки А в точку В.
Очень прикольно смотреть, как твое приложение, на которое ты потратил буквально несколько выходных, – под Яндекс-картами.
О чем буду рассказывать
Я расскажу о том, о чем меня чаще всего спрашивают в связи с тем, чем мы занимаемся.
- Про время
Самый частый вопрос, который мне задают: «Чуваки, сколько времени на это надо, и как вы вообще это делаете по времени?».
- Про идеи
Откуда берутся идеи, какие из них подходят для того, чтобы попилить их на выходных, а какие - нет.
- Про команду
Почему я говорю «мы», откуда взялись остальные ребята. Как мы собрались вместе.
- Про проект
На мой взгляд, это самая главная часть. Здесь я расскажу про то, как доделать проект, как не бросить его на полпути, а каким-то образом дотащить до финала.
В результате если внутренний дядя Сэм у вас спросит: «Пилить или не пилить?» и вы ответите: «Да», то я посчитаю, что я готовил все это не зря.
Часть 1. Про время
Для меня это звучит как: «Сколько времени нужно потратить на проект, чтобы он получился?», или «Во сколько времени можно оценить проект?».
Когда я слышу про оценку, я всегда вспоминаю этого дядьку. Вы все точно знаете, кто это такой. Это Бобук.
Как-то в одном из его интервью я услышал, как они оценивают проекты. Меня очень зацепил рассказ о том, что не важно, какой срок закладывается на проект — месяц, два, три, год — он всегда добавляет от себя две недели в конце. Это константа β Бобука.
Если программисты, например, прохлаждались где-то и ничего не сделали, за две недели команда внятных разработчиков может поднять абсолютно любой сервис или проект.
Для меня это было странно: все проекты разные, у всех разная функциональность – как можно за 2 недели сделать любой?
Расскажу, что у нас получилось, но до этого рассмотрим, в чем мы измеряем проекты.
Нам удобно измерять проекты в упоротых днях. Это такой день, когда я с утра просыпаюсь, открываю свой ноутбук, и в этот день он уже не закрывается. В моей физической неделе, когда мне надо ходить на работу, а потом по дороге домой купить продукты и вечером погулять с собакой, такой упоротый день только один. Я физически не могу больше найти времени на pet–project.
Мы сделали с ребятами более десяти таких проектов. Они все разные по функциональности: игрушки, гео-чатик, сервис, который создает приложения сам, без участия человека. Но в чем-то они похожи.
Так у нас родилась авторская классификация проектов. Мы поняли для себя, что их можно классифицировать по степени готовности.
Мы все – мобильные разработчики. Все знают, что это такое?
Это телефон, но кодить под него еще нельзя.
Первая стадия готовности проекта, до которой обычно у нас доходит, – это прототип.
Прототип – это штука, которая выполняет одну единственную функцию, при этом она может симулировать ее. При любом непредусмотренном сценарии оно падает и вообще не работает ни в чьих руках, кроме разработчика.
Пример – наш гео-чатик. Это приложение, которое:
- Умеет запускаться;
- 1 человек мог написать одно сообщение на одну точку, а приложение делает вид, что оно прочиталось.
- Все!
Любой такой прототип (я буду сейчас утверждать, вы можете со мной поспорить) можно сделать за два жестких упоротых дня.
Этот факт подтверждает куча Хакатонов, где чуваки просто на энтузиазме, РедБулле и Дошираке делают вообще абсолютно страшные вещи, и у них что-то получается.
В принципе, кажется, что прототип – это все уже готово. Но если хочется этот прототип доделать до состояния, когда его можно показать людям, дать человеку и не бояться, что он нажмет не на ту кнопочку и все закрэшится, надо понимать, что на самом деле это только 20% работы. Это эмпирические цифры плюс-минус.
Чтобы довести прототип от состояния, когда он выполняет одну единственную функцию, до состояния, когда он хорошо выполняет эту функцию и его можно запушить в Store, нужно потратить еще 80% времени.
Но если два дня подряд еще можно найти – просто сесть в выходные с ребятами, запереться в субботу-воскресенье и сделать прототип, то восемь дней подряд никогда не получится. Таким образом это все трансформируется в восемь недель.
Получается, что за два дня можно запилить любой прототипчик, но чтобы его довести до состояния, когда его можно показать людям и запушить в Store, нужно потратить еще два месяца.
Если же из этого хочется сделать что-то совсем классное, например, в гео-чатик добавить слои, статистику, смайлики, плюсики, минусики, то кажется, что в принципе, первые 90% работы в прототипе уже сделаны. И чтобы довести прототип до этого состояния, надо потратить еще вторые 90% работы.
Самое печальное, что идеи обычно приходят в голову как раз в виде этих Нокий. Когда я придумываю какую-то очередную идею, я сразу вижу, как круто она будет работать и с какими финтифлюшками. Но фактически это оказывается нереализуемо в рамках проекта, который пилишь с ребятами на выходных, в том числе потому, что занимает очень много времени. В любом случае приходится даунгрейдить идею до состояния прототипа.
У прототипа есть пара свойств:
- Он может быть стремный.
Ты придумал какую-то идею, в голове она вообще классная. Мы пилили игрушечку – геозависимая игра, мы прямо срочно хотели в нее поиграть, как она у нас в голове звучала. Сделали – полный отстой, просто фигня.
Хотелось опечалиться на этом моменте, но на самом деле это круто, потому что на разработку мы потратили всего два дня.
- Второй прикол в том, что прототип – это иногда самая подходящая форма существования проекта. То есть не надо ничего больше делать – прототип и так работает классно.
Для примера могу рассказать про наш проект «Music Bot». Идея такая. Мы все – мобильные разработчики, сидим в достаточно большой комнате, в одном углу которой стоят колонки. Все хотят слушать музыку, но чтобы ее включить, надо подойти к колонкам, взять Jack, воткнуть его в ноутбук и включить воспроизведение.
Всем классно и хорошо, кроме одного человека, которому не нравится песня. Он хочет ее поменять. Потом песня не нравится уже другому человеку, пятому не нравится громкость и т.д.
Хотелось что-то придумать, чтобы каждый человек мог влиять на то, что играет в колонках, и чтобы это было дешево, потому что денег нам за это не дадут.
Все мы болтаем в Slack’е – это сейчас уже норма. Так как мы мобильные разработчики, естественно, у нас есть тестовые девайсы, которые мы подключили к колонкам. Очевидно, следующее, что можно сделать – написать бота, которым можно командовать из Slack’а. Он входит в какой-то музыкальный сервис и включает музыку. То есть задача решена.
Это все реально было сделано за два дня. Естественно, мы сразу же подумали: «Блин, это же надо вообще всем командам в мире. Мы сделаем сейчас стартап, подключим новых провайдеров, подтащим музло оттуда и оттуда, сделаем авторизацию».
Но ничего этого вообще не надо делать. Решение в виде прототипа в данном случае максимально адекватно поставленной задаче.
Если вернуться к состоянию MVP, когда мы можем показывать людям свою идею в App Store, то окажется, что мы потратили сначала два упоротых дня на прототип, потом улучшили его еще за восемь упоротых дней, получилось десять – это равно двум неделям того самого Бобука. На этом у нас уравнение сошлось.
Что получается?
- Любой прототип можно сделать за два дня.
- Чтобы довести прототип до состояния, когда его можно показывать людям, отдавать в массы, нужно потратить еще два месяца в рамках pet–project’а, когда мы занимаемся этим на выходных.
- Лучше не браться за что-то большее, пока не готов прототип, потому что есть почти 100% вероятность, что он не дойдет до конца.
Часть 2. Про идеи
Теперь поговорим про идеи, которые реализуются или не реализуются в таких проектах.
Это самая сложная часть, потому что будет график. Он тяжелый. Это зависимость мотивации от времени.
Как вы думаете, как зависит мотивация от времени в таком проекте?
По моим ощущениям, с одной стороны, график очень печальный, потому что, вроде что-то начали, и все уже закончилось. С другой стороны, кажется, что любой прототип, вообще любую самую безумную идею можно сделать просто на голом энтузиазме, когда собрались с ребятами и все классно.
Но если идея очень-очень нравится – она вообще прям огненная, заходит всем, и вы срочно хотите ее реализовать, то не факт, что у вас хватит мотивации доделать ее до состояния, когда проект можно показывать людям.
Так было с нашим гео-чатиком. Он называется «Nazabore». По-моему, гео-чатик – это самая популярная стартаперская идея, которая вообще никогда ни у кого не стреляет. Нас потрясла сама возможность писать что попало где угодно. Можно написать: «Я хороший, вы плохие» – другие люди прочитают, тебя задизлайкают.
Расскажу вкратце, как эта штука работала (и работает) у нас.
На карте расположены точки – это сообщения. Их можно лайкать-дизлайкать. Внутри они как-то пересортируются. Можно написать новое сообщение. Оно привязывается либо к точке, которая уже создана, либо создается для него новая. Если точка новая, то можно выбрать какую-нибудь финтифлюшечку.
Потом мы разошлись и добавили еще слой, подтянули для Новосибирска интересные места из 2ГИС – просто по фану.
Нам казалось, что это фантастически выстрелит и завоюет мир прямо сейчас – сегодня или даже вчера. Но нет. Прежде всего потому, что нам просто не хватало мотивации его доделать. Было очень сложно и тяжело. Чуть позже расскажу, почему, и что мы с этим делали.
Другое наше приложение – для алкоголиков – оно тоже про мотивацию. Это приложение (там внутри Big Data, хитрые алгоритмы) подсказывает пользователю следующий бар, который ему понравится.
Идея изначально мне вообще не нравилась, потому что я плохой алкоголик и бар-хоппинг мне совсем не интересен.
Дизайн приложения делала команда 2ГИС, он прикольный, странный. Очень простая механика: пользователь находится в баре, трясет телефон и приложение подсказывает ему следующий бар, где ему реально понравится, еще и маршрут построит.
Мы взяли кучу данных 2ГИС, построили онтологические связи, и каждый следующий бар выбирается реально из предпочтений пользователей, которые сидели в предыдущем баре. То есть он подсказывает реальные бары, которые понравятся человеку. Получилась прикольная штука. В конце, если ты упал и не дошел, еще и Uber можно вызвать из приложения.
Мы сделали прототипчик, он работал еле-еле. Пошли с ним в бары, пропили первые инвестиции, даже я. Поняли, что идея прикольная. Посмотрели, какие есть конкуренты – они вообще отсутствуют. Посмотрели, можно ли это как-то реализовать, модифицировать.
В общем, уже готовый прототип показал, во-первых, крутость идеи, а во-вторых, ее как-то начали прокачивать, проводить конкурентный анализ. Этой мотивации хватило, чтобы сделать готовый продукт, который сейчас находится в Store.
В принципе и сейчас, если возникают какие-то задачи по этому проекту, никому не стремно что-нибудь поделать – как всегда, когда идея суперогненная.
Так было с «Таксой» – идея принадлежит продуктовой команде 2ГИС. Они просто пришли и предложили нам что-то сделать для любимой компании. Так как они продуктовая команда и им платят за то, чтобы они генерили клевые идеи, они и сгенерили такую. Идея была прикольной изначально. В Москве приложение тоже работает.
Это суперпростое, тупое приложение – не знаю, почему до нас его никто не сделал: выбираем стартовую и конечную точку. Приложение показывает всех поставщиков такси и цены для каждого из них – такой агрегатор такси.
Мы его сделали, нам оно понравилось. Плюс ребята сами, своими силами провели конкурентный анализ, графики и прочее.
В общем конкретная идея нам постоянно давала повод для того, чтобы продолжить заниматься этим приложением, и у нас росла мотивация.
Когда приложение попало в featured, у нас мотивация вспрыгнула так, что нам сразу срочно захотелось что-то сделать, выбрать комплектации Гелендвагенов, например.
Что можно вытащить из всей этой бравады?
- Мотивации всегда хватит на любой прототип, какой бы он ни был сумасшедший. Если он чуть-чуть нравится, факт, что можно запилить прототипчик.
- Не факт, что если идея просто огненная, но вы не подвергали ее никакому сомнению и конкурентному анализу, вам хватит мотивации для того, чтобы выпустить готовое приложение, даже уровня прототипа, но чтобы люди могли им пользоваться.
- Если над идеей работать, ее каким-то образом разминать, пытаться делать конкурентный анализ, то мотивации хватает, чтобы продолжать ее делать до состояния, когда проект можно показывать людям.
- Если идея огненная изначально, и ею заниматься, то ее можно пилить до бесконечности.
Часть 3. Про команду
Не секрет, что время таких приложений, как архаичный тетрис, уже прошло.
Скорее всего, сейчас нужно делать современные проекты, которые выглядят по-другому.
Одному запилить такую штуку можно, но займет очень много времени. Скорее всего, когда ее запилишь, она уже будет не нужна, или ты умрешь в попытках ее доделать.
Выход очевиден – надо найти себе бой-бенд.
Но лучше, например, такой.
Потому что придется реально сражаться – с собственной ленью, с предрассудками, с мнениями коллег и близких, которые будут говорить: «Чувак, ты зачем это вообще делаешь? Тебе на работе платят нормальную зарплату, а ты это делаешь просто бесплатно! Окстись, сходи на пляж!» — и все такое.
Но как найти таких ребят?
Решение тоже простое. У нас прослеживается паттерн, как люди присоединяются к нашей маленькой команде. Как раз на примере «Таксы» – он, как мне кажется, более говорящий.
К нам пришли ребята и сказали: «Чуваки, у нас есть идея – вы же что-то делаете – сделайте приложение! Вы же iOS-разработчики!». У нас как раз было два iOS-разработчика, и мы примкнули друг к другу.
А там надо бэкенд, а iOS-приложение – это же только фронтенд! Мы смекнули и сделали весь бэкенд просто во фронтенде. У нас приложение ходило на какие-то API, что-то там делало, вытаскивало, считало само, делало абсолютно все, в том числе поиск проезда – много всяких штук. Но без бэкенда все равно обойтись нельзя, потому что надо, чтобы данные попадали в приложение. Ок, положили JSON’ку в Dropbox, но по факту мы получили готовое приложение.
На самом деле пользователю вообще все равно, какие технологии там используются. Он вводит точку, а приложение должно показать, как ему доехать за 100 рублей. И все.
Мы ходили и всем показывали – зацените, ребята, что мы делаем, классно? Наш бэкендщик, который тоже смотрел на это все, просто подошел и сказал: «Чуваки, давайте я вам сделаю нормально». Так он присоединился к команде. Сейчас ребята к нам приходят точно так же.
Хочу еще сказать про Хакатон. Я их очень люблю, но не за то, что там можно найти потенциально крутого чувака. Кажется, на самом деле это не совсем реально. Скорее за то, что там можно проверить в экстремальной ситуации, в первую очередь, себя, — ну и ребят, с которыми ты пилишь проекты. Хакатон – это такая экстремальная штука, где из людей лезет все самое хорошее, и можно оценить, на что чувак вообще способен.
Если вы с утра видите, что команда выглядит так и проект готов, то скорее всего все получится.
- Даже если нет компетенции в бэкенде, во фронтенде, в чем-то еще, мы просто максимум делаем там, где знаем, как делать, и минимум – там, где не знаем.
В принципе, даже когда я делал «Music Bot», я вообще понятия не имел, как писать под бэкенд, но разобрался с CoffeeScript за два часа и кое-как все сделал.
- Второе – делаем прототипчик и ходим, показываем его.
Все думают, что ты хвастун (или молодец), а на самом деле ты ищешь себе чуваков. Кто-то его увидит и предложит свою помощь просто потому, что ему понравилась идея: «Вроде бы что-то готово, давай помогу».
- Хакатон – это реально прикольная проверка, где в боевых условиях можно проверить, сработаешься ты с ребятами или нет.
Часть 4. Про проекты
Самая главная часть – как получается (или не получается) доводить проекты до конца.
Эта черная коробка – тоже мой проект. Я его пилил давным-давно. Это штукенция для музыкантов, которая превращает питшифтер в арпеджиатор, что бы это не означало.
Там было реально много работы: надо было его придумать, спаять, развести плату, понять, какой нужен микроконтроллер, запрограммировать его, сделать какой-то девайс, написать сайт, MacOS-приложение, которое как-то заливает туда пресеты, да еще и продать всю эту ботву.
То есть работа разная, ее много, но я просто каждый день посвящал ей время, и она закончилась. То есть я вложил время, которое было необходимо, чтобы всю ее сделать, и проект закончился.
Чтобы в одну каску запилить проект, нужно просто каждый день его делать – и либо умрешь действительно потому, что времени не хватит, либо проект закончится.
Это круто потому, что сделать можно все что угодно.
В команде все немножко по-другому.
Например, это архитектура сервиса, который мы сейчас делаем.
Можно попробовать посчитать, сколько здесь ролей:
- Backend;
- Web;
- iOS;
- Android;
- Build Node
То есть надо минимум четверо-пятеро человек, чтобы запилить такую штукенцию.
Если хотя бы один говорит: «Чуваки, я, наверное, всё», то весь проект может оказаться под вопросом. У меня больше всего болит душа, как бы кто из чуваков не свалил.
Небольшая ремарка про ответственность
Когда пилишь проект один, ты сам отвечает за свое время, которое ты посвящаешь ему. Это абсолютно очевидно.
Но что происходит, если в проекте несколько человек, которые посвящают ему время?
Кажется, что ответственность делится на всех. Но на самом деле нет, потому что ты чуваков пригласил, и ответственность на тебе максимальная. Не только за свое время, но и за время, которое посвятили они.
То есть я сейчас чувствую на себе гораздо большую ответственность, чем ребята, которые помогают мне делать эти проекты, хоть и доли у всех равные.
Вернемся к графику мотивации.
Что можно сделать, если, например, проект по ощущениям лежит где-то далеко справа? Можно попробовать либо поработать над мотивацией, чтобы она уходила куда-то вдаль и в бесконечность, либо притянуть на себя притянуть. То есть сделать так, чтобы проект выполнился быстрее, чем нужно.
То есть по сути надо научиться управлять временем (скоростью исполнения проекта) и мотивацией.
Дальше будут вещи суперочевидные, я быстро про них расскажу. Мы раньше так не делали, и у нас ничего не получалось. Сейчас же стали делать, и все получается.
Если эти разноцветные мужики –
захотят сделать этот проект –
то самое первое и очевидное, что нужно сделать, – распилить проект, чтобы у каждого были свои маленькие задачки.
Потом надо выставить приоритет каждой задачки, чтобы у них появились цифры:
После выстроить эти цифры в порядке выполнения. Тогда у каждого человека будет очередь задач, которые он будет делать.
По факту нужно, чтобы каждый член команды знал, что он должен делать в каждый момент времени, и чтобы он понимал, что это нужно, чтобы проект закончился.
Для этого мы используем Google-доки. Так как мы пилим pet-project’ы – это не рабочая атмосфера, и непонятно, когда чувак будет заниматься кодингом.
Например, у человека выдался свободный час, но нужно понимать, что он должен очень быстро попасть в контекст. Для этого у нас есть Google-доки, где все задачи приоритезированы. Человек просто открывает Google-док, переходит по ссылке, открывается ТЗ, и каждый член команды всегда понимает, что ему нужно сделать.
В разработке это на самом деле суперочевидные вещи. Без них у нас ничего не работало, их обязательно нужно делать.
Очень важно еще, что красный человек делает только красные задачки. У нас бэкендщик не должен думать о дизайне, фронтендщик – о бэкенд-задачах. Если есть какие-то вопросы, которые не связаны с прямой профессиональной экспертизой людей в команде, я их забираю себе.
Я стараюсь так делать, чтобы чуваки делали только свои профильные задачи, непрофильные я забираю себе и пытаюсь как-то сделать потому, что лучше сделаю я, чем они будут тратить свое время. Таким образом можно сократить время выполнения проекта.
Это вещи простые, но без них не работает ничего.
Так как ответственности у меня больше всего, то я:
- инициирую всегда декомпозицию, оценку и приоритезацию, чтобы каждый человек в любой момент времени понимал, что ему надо делать;
- пишу ТЗ. Так как время фрагментировано по неделям, очень много времени у ребят тратится на вход в контекст. Пытаешься вспомнить – что же ты там делал? А так – в ТЗ написано все красиво;
- забираю все непрофильные задачи.
Это, наверное, минимальный стек задач, которые я могу сделать, чтобы сократить время на реализацию проекта.
Наверное, самый главный вопрос – вопрос мотивации – как же вообще заставить чуваков кодить? Они с утра до вечера занимаются этим на работе, а тут ты говоришь: «Давайте, вы будете то же самое делать, что и на работе, только платить вам не будут?». Это странно.
Что с этим можно сделать?
- Первый рецепт – предложить долю в компании.
Но это полная фигня, она не работает, потому что компании нет, идея стоит ноль, компания стоит ноль, все стоит ноль. Ты предлагаешь процент от нуля, чувак на тебя смотрит: «Клево, да… давай, завтра приходи».
Что работает? И мы возвращаемся к гео-чатику, который у нас строился долго (я сужу исключительно по себе, но, кажется, в нашей команде эта штука работает).
Когда ты участвуешь в каком-то проекте, но тебе вообще ничего не хочется в нем делать просто потому, что уже не хочется, единственное, что меня может сподвигнуть на работу, даже не обращая внимания на деньги, наверное, если в проекте что-то происходит. То есть там постоянно какие-то пуши, ребята собираются, делают какие-то прикольные поползновения. Проект реально не стоит на месте, и мне действительно хочется к нему присоединиться в таком случае.
Когда мы делали гео-чатик, самое, наверное, главное, что я сделал в этом проекте – просто постоянно шевелил чуваков: «Эгей, ребята, давайте соберемся, сделаем то, сделаем это, сделаем так и сяк», и сам писал код, который могу делать.
Кажется, именно это сработало, и мы доделали всю эту историю.
- По факту, нужно просто не сидеть на месте, генерить движение в проекте.
Плюс еще возникают такие забавные вещи. Так как нет товарно-денежных отношений, нет прямых рычагов давления – нет ничего вообще, кроме человеческих отношений с ребятами, то возникают очень смешные истории. Они, казалось бы, совершенно не относятся к проекту, но влияют на его выполнение.
- Человеческий фактор.
Примеры
Один из наших ребят-инженеров живет в загородном доме – большом, красивом, классном. Он всю неделю собирается заняться на выходных проектом – прямо ждет субботу, когда он сможет открыть ноутбук и кодить. Но в пятницу идет снег, и все понимают, что чувак делает в субботу – он открывает глаза и видит падающую белую стену, хватает лопату, 6 часов машет ею на улице, возвращается домой и проектом не занимается. Он занимается тем, что пьет чай, смотрит сериальчики и делать не хочет в этот день вообще ничего.
Что мы делаем в этой ситуации? Если в пятницу идет снег — значит мы едем к Славе с утра в субботу. Мы приезжаем, берем лопаты, весело помогаем парню раскидывать снег. Все получают заряд бодрости, получается спонтанный тимбилдинг. Потом все садятся и пилят проект.
Эта история, казалось бы, вообще напрямую не влияет на рабочие отношения, но она работает. Нужно примерно понимать, какого плана проблемы могут быть у ребят в команде и как им в этом можно помочь.
Вторая история. Абстрактная команда ребят-разработчиков поехала на абстрактный Хакатон из абстрактного Новосибирска в абстрактную Москву. Один из разработчиков начал жестко стебать второго разработчика – очень смешные шутки были, прямо офигенные. Но отличного фронтендера у нас теперь нет.
Что из этого можно извлечь? Что нужно пытаться следить за атмосферой взаимопонимания внутри команды. По такой тупой причине, что один смеялся над другим, ушел человек из проекта. Я постараюсь в своей жизни больше никогда такого не допустить.
Что я сейчас стараюсь делать – просто весь негатив разряжать на себя, чтобы эти шутки были направлены в мою сторону. От меня не убудет, а ребятам приятно.
Выводы
Что из этого можно вытащить?
- Самое главное, я считаю, инициатива и генерирование движения в проекте.
- Второе – это сбор профильных задач.
Важно сделать так, чтобы ребятам не нужно было делать ничего, кроме своей работы. Есть маленький кусочек работы, в которой они профессионалы и от которой они получают удовольствие. Каждый делает свой кусок и понимает, что проект закончится, они участвуют в нем и получают удовлетворение.
- Дружеские отношения очень важны.
При этом я уверен, что они должны быть честными, потому что нечестность сразу же выкупается, люди – не дураки. Я искренне люблю чуваков, с которыми я занимаюсь разработкой, хочу, чтобы у них все было офигенно, и стараюсь им помогать в любых их начинаниях.
Напоследок «Just one more thing…», как сказал Коломбо.
Возможно, у вас возник вопрос – откуда я сам беру силы для того, чтобы за чуваками ходить, смотреть, приглядывать. Я раньше не задумывался об этом. На самом деле, кажется, можно ответить так.
Когда придумывается в голове какой-то проект, я уже вижу, каким он будет, как им будет классно пользоваться, как это будет суперски. На старте это дает офигенный импульс инициативы, чтобы пытаться его делать.
Потом я тоже, как все люди перегораю, но мне становится дико жалко времени, которое я на него уже потратил, и уже хочется его доделать. На этом топливе я стараюсь его довести до финала.
Желаю всем клевых команд и веселья.
Для тех, кому не хватило деталей, мы предлагаем ответы докладчика на вопросы из зала.
— Над кем. Тот, кто шутил, до сих пор в команде.
— Второй вопрос касается Вашего приложения «гео-чатик». Мир оно не завоевало. Где брать мотивацию, когда все поняли, что потратили на это кучу времени, но не зашло. Что делать дальше? Откуда взять мотивацию на дальнейшую жизнь в этой команде?
— Следующие проекты. Наверное, даже неудачный проект многому учит. Даже этот гео-чатик, который не зашел, научил тому, почему он не зашел, как нужно было делать в таких случаях. Постоянно возникают новые идеи, новые проекты. Можно сказать точно, что каждый следующий наш проект чем-то лучше, чем предыдущий. Мы просто стараемся учиться на своих ошибках.
— Какие в итоге профиты вы поимели с этих приложений, сколько заработали? Реализовывали ли вы внутри какие-нибудь механизмы перетекания трафика из одного приложения в другое, подключали ли рекламные сети?
— Из этого мы ничего практически не делали. Единственное – экспериментировали с публикацией приложения. То есть изучали, как скачиваются другие приложения, когда публикуешь новое, что происходит при этом. Просто какие-то эксперименты.
Профит, наверное, в команде получил только я, вообще, потому что это в основном мои амбиции больше, плюс амбиции ребят, которые присоединяются. Например, в чатике было не только желание заработать миллиард, или что он завоюет мир, в нем были еще гипотезы, которые хотелось проверить. Они оказались проверены. Причем гипотезы касались не только диджитал-механизмов, но и социальных вещей – можно ли собраться «на ровном месте» и запилить проект, запушить его в Store на голом энтузиазме и Дошираке.
Я почему говорю про следующие проекты – каждый следующий проект сложнее и кажется более взрослым. Не буду тратить время и рассказывать о том, что мы сейчас делаем, но прошу поверить на слово, что мы через это растем. Мне кажется, это очень круто. И мы обогащаем друг друга какими-то знаниями. Плюс еще та же «Такса» – мы ее сделали, и сейчас бэкенд, который работает для «Таксы» – это абсолютно тот же самый бэкенд, который работает для всего приложения 2ГИС для поиска такси. То есть сейчас в основное приложение 2ГИС по факту зашито приложение «Такса», им можно прямо сегодня пользоваться, оно работает.
Для меня это тоже профит, наверное, типа: «Мы сделали!».
— Фактически каждая команда рано или поздно, чаще поздно, сталкивается с такой вещью, как необходимость денежных трат. Это или хостинги, или дизайн, или еще что-то. Компетенций у всех участников не хватает. У меня даже такой печальный опыт был, что просто команда разругалась – я платить не хочу, я уже год платил.
Есть ли у вас опыт такого лавирования – как с этим быть? Сейчас я просто решил так – я сам, если проект начал, все траты беру на себя. Но это тоже не совсем справедливо.
— Это очень клевый вопрос, на самом деле. Мне, видимо, повезло с ребятами, потому что у нас есть такая табличка, в которую каждый записывает траты, которые он потратил на этот проект. Они плюс-минус какие-то похожие и равные.
Но, в принципе, если возникнет вопрос, когда нужно вкидывать бабки, я готов взять прямо полностью 100% на себя, потому что мне реально хочется эти проекты сделать. Уже вторая статья готовится на тему, как это все дело монетизировать, откуда брать деньги и все такое. Но мы этому только учимся. Надеюсь, через год-другой будет другая статья не про то, как делать проекты, а про то, как их продавать.
Но в целом ответом на вопрос может быть то, что мы стараемся просто за круглым столом договориться по факту. Пока так решается. Но я при этом готов вкидывать больше, чем все остальные.
— Как ваша компания относится к этому? Как я понял, большинство коллег – это ваши коллеги на основной работе? Наверное, бывают такие моменты, когда, например, ваше приложение хайпануло и вы – вау! – на работе. Может быть, руководство негативно к этому относится?
— Отношение руководства? Тут, опять же, нам повезло. Наше руководство никак не относится вообще к этому – пилят и пилят, классно. Плюс, хоть ребята и мои коллеги, но уже не все, у нас достаточно крупная компания и мы друг друга не видим неделями. Можно сказать, что у нас сильно распределенная команда.
Плюс одно из приложений – «Таксу» – мы, собственно, и сделали почти на заказ, по просьбе ребят из 2ГИС, и 2ГИС поимел с этого достаточно много. Я сам не знаю цифры, но примерно можно оценить функциональность маленького приложения, которое запилили за несколько дней, опробовали на нем идеи, проверили гипотезы. Оно оттянуло на себя часть негативных отзывов, потому что там кое-что было неправильно, и это не попало в основное приложение. То есть такая рафинированная, расцветшая идея попала в основное приложение, и компания на этом только выиграла. Я не вижу сейчас минусов.
Плюс, наверное, такие проекты могут быть отдушиной для ребят. Ты приходишь на работу, делаешь задачи, делаешь их хорошо, потому что ты профессионал, и это твоя работа. Но кайфуешь ты уже в pet–project. Тем не менее, ты ходишь на работу, и при этом кайфуешь, но уже в pet–project. У тебя нет такого, что ты ходишь и ругаешь мир, что не можешь бросить эту работу. Это такая отдушина, которая по факту тебя оставляет в компании, влияет на инертность. То есть выигрывают все.
Если мы заработаем миллиард, то тоже выиграют все.
— Как часто 2ГИС обращается к вам, как к отдельной внешней команде? Бывают ли хотя бы премии? Вы же сделали «Таксу» и бесплатно отдали этот функционал 2ГИС. И еще один вопрос – что делаете с мотивацией в рабочее время? Например, вы загорелись какой-то идеей. Понятно, она вам очень интересна, вы ей хотите заниматься, но, блин, завтра понедельник. Ты пришел – тебе твоя работа нравится, но все равно идеей-то ты горишь той, которая была вчера, в воскресенье, которую ты закончил в 5 утра. Через 2 часа пришел на работу и сидишь, опять ждешь субботу?
— Первый вопрос про частоту обращения. «Такса» – это был единственный пока раз, когда такое произошло. Других я не знаю случаев. Но сам инцидент прикольный. Кажется, что можно опробовать и другие идеи таким образом.
Вознаграждение у нас было, скажем, достаточное. Никто не обиделся ни на кого. Но сам факт, что возник такой прецедент, что посотрудничали просто по факту левые чуваки, хотя они и работают в компании, и сделали такую штуку – мне такой подход очень нравится, потому что он позволяет реализовать любую идею в виде прототипа, которую ты не можешь реализовать в основном продукте сразу же по причине того, что это либо очень долго, либо неоправданно дорого будет. А такие штуки – раз – сделали, и классно.
Мне самому это очень близко, и было бы здорово, чтобы прецедент был не единственным.
По поводу мотивации… Не знаю, у нас в команде все ребята по-разному работают. Я, вообще, только на выходных могу этим заниматься, потому что пока работа идет, у меня в голове вообще ничего, кроме работы, нет, а к вечеру ты сильно устаешь. На выходных ты все вспоминаешь и начинаешь колбасить.
Есть у нас 2 чувака, которые среди рабочей недели вечером что-то делают потихоньку. Кажется, возникшая мотивация среди рабочего дня что-то сделать, потыкать в технологию – это не блокер для работы, тем не менее. Я не вижу в этом проблемы. Главное, чтобы она сохранилась до вечера хотя бы.
— Не понял немного по Вашему выступлению, какая, вообще, мотивация делать такие проекты? Если цель – изучить технологии – почему нельзя это сделать в рамках рабочего времени? Если цель – заработать миллион, то почему целенаправленно не пытаться сделать? Если это исследование, то обратиться к вашим маркетологам и, возможно, им же и попробовать поработать на текущей работе. Правда, как-то немного непонятно, но понятно, что есть желание.
— Я попробую на части разбить этот вопрос.
Не всегда получается «потыкать технологии» на работе, потому что у нас есть определенный стек, в котором ты должен что-то делать. Если ты хочешь потыкать немножко что-то другое, то будь добр, до свидания. В рабочее время у тебя есть рабочие задачи. В 2ГИС я делаю IOS-приложение. Оно достаточно сложное, реактивное, есть плюсы, свифт, бла-бла-бла Даже небольшую фичу сидишь и просто выкристаллизовываешь, чтобы ничего не сломать, пишешь кучу тестов. Если хочется просто попробовать какой-то новый фреймворк, нет возможности это сделать на работе.
— У вас компания не выделяет дополнительно 10-20% рабочего времени на самообразование?
— У нас нет такого воинственного подхода ко времени. В принципе, если тебе совести хватает, ты сам можешь на работе что-то поизучать. Но в основном все ребята все-таки нацелены на результат сделать хорошо продукт, сделать хорошо фичу, и в рамках этого продукта, который мы делаем, места для таких экспериментов нет сейчас.
Второе – про деньги – про заработать миллион. Вообще, каждый из проектов, который мы делаем, на старте должен заработать миллиард – прямо, как только он в голову приходит. Но это довольно сложно. Чтобы сейчас зарабатывать деньги какими-то диджитал-проектами, кажется, нужно знать не только программирование и не столько программирование, а много смежных областей, в том числе, как сделать так, чтобы команда работала.
Мы находимся на том пути, когда мы создадим рано или поздно продукт, который выстрелит, который будет нам нравиться, и мы сможем заниматься им в рамках бизнеса с человеческим лицом, при этом делая мир лучше. Мы делаем этими проектами итерации, стараемся делать эти итерации, на которых мы учимся, и рано или поздно сделаем какую-то клевую штуку. Ну, и миллион, да.
— У меня немножко, может быть, неожиданный вопрос по поводу интеллектуальной собственности. Как у вас эти проблемы решены, тем более, я так понимаю, что компания в курсе этих ваших проектов, и та часть кода, которую вы внедрили в 2ГИС – как решен этот вопрос? Это исходники, какой-то закрытый фреймворк?
— Вообще никак. Мы даже не думаем об этом сейчас, честно сказать. Потому что мы не делаем ничего, что не может повторить любой другой хороший инженер по факту. У нас вообще все исходники на GitHub’е лежат, когда мы делаем новое приложение, кроме штук, которые мы считаем суперсекретными, на которые у хороших инженеров потратится месяц, например, чтобы повторить. То есть в основном мы ведем такие проекты прямо на GitHub’е в открытом доступе.
Никому ничего не надо! У нас настолько много сейчас информации, что она вообще не нужна.
— Вы просто не думали о том, что пока не нужна, а сейчас вы рассказали...
— Я буду искренне рад, когда это надо будет всем, и я смогу взять и сделать приватный репозиторий на GitHub’е. Мне кажется, мы не делаем абсолютно ничего такого, что требует суперприватности. По факту мы развлекаемся и учимся. Если это кому-то принесет пользу, я только рад буду.
— Смотри, у тебя возникла какая-то идея, хватило энтузиазма на прототип. Прототип не выстрелил, но в принципе, неплохой. Решили двигаться дальше. Сделали MVP. Тоже не зашло, но решили дать еще один шанс. Когда понять, когда хватит? Если проект не идет, как понять эту ступень, когда все – не делаем, делаем новый. Как донести это до команды и как сохранить команду?
— Могу только на опыте рассказать, как у нас сейчас это происходит обычно. Например, с «Таксой». Проект в Store, он как-то работает. У нас есть уже другой проект, более серьезный и сильный. О «Таксе», честно сказать, мы особо и не вспоминаем. Приведу аналогию с музыкантами.
Я достаточно долго был рокером, ездил с рок-концертами. Там всегда была идея самого крутого рифа, самого крутого темпа.
Когда придумываешь самый крутой риф, тебе жалко, например, его вставить в текущие песни потому, что они недостаточно крутые для этого рифа. А потом риф умирает. Ты просто не делаешь песню с этим рифом.
Если есть крутая идея следующего проекта, а этот, в принципе, готов, но кажется, уже не очень интересен, то мы просто делаем выбор в пользу следующего проекта. Сейчас у нас очень тяжелая штука. Идея простая – заходишь в группу в ВКонтакте, говоришь: «Хочу приложение!» – раз – у тебя в Store приложение. Все автоматически и бесплатно (дешево).
В принципе, прототип был очень легко и очень быстро написан. Сейчас проект очень тяжело идет, потому что очень много нюансов и деталей. Закончим ровно тогда, когда сервис заработает, и мы поймем, идут туда пользователи или не идут.
Без сожаления закончим, я думаю так. Всегда в голове, по-моему, есть какие-то идеи на следующий проект. А если их нет – можно и этот поделать.
— Среди ваших прочих командных проектов промелькнул проект – музыкальная штука, где и железо пришлось программировать, и приложение писать, чтобы настраивать. Интересный проект. Какова судьба этого проекта?
— Он вяло продается. Коробки делаются. Я очень много времени тратил на саму физическую сборку – надо просто паять. Сейчас я его оставил, можно сказать, на аутсорсинг. Нашел парня, с которым мы сотрудничаем, который их паяет.
Но всем остальным занимаюсь так же я. Там, в принципе, не буду хвастаться сильно, но есть достаточно сильные музыканты, которые используют этот девайс. Из российских – это Наив, Валерий Аркадин играет на нем, Седьмая раса, Дельфин. Из зарубежных – это группа Crosses, плюс я в Korn подарил Манки и Хэду эти штуки.
Но это прямо очень дорогой моему сердцу проект. Эта штука нужна очень маленькому количеству даже музыкантов. Она большинству вообще не нужна, но тому, кому она нужна, она нужна просто позарез. Количество этих людей не дает мне надежду на то, что это будет большой бизнес. Но сделать из этого какой-то бизнес, который более-менее может работать потихоньку, может только, как я считаю, серия таких девайсов, которые выполняют немножко разные функции. То есть ассортимент нужно дать людям, с которым удобно работать, который можно покупать. Тогда из этого можно сделать какой-то бизнес.
Сейчас по факту это просто мой home-проект, у которого есть страничка в интернете. Время от времени туда приходят чуваки и нажимают на «Заказать».
— А сертификаты какие-то нужно получать на это оборудование?
— Сейчас это все делается просто на коленке. Нет никаких сертификатов. Мы не ездили ни на какие выставки. Просто люди смотрят видео на YouTube и говорят: «Чувак, я очень сильно хочу купить» или приходят каким-то образом на сайт и покупают.
То есть продажа происходит по факту. Мне просто скидывают деньги на PayPal или на карточку Сбера, если в России, и я отправляю этот девайс. Сложился, видимо, типа авторитет в круге музыкантов, что мне прямо доверяют. Мне перекидывают деньги вообще без проблем, я никого не обманываю, потому что мне это на фиг не надо.
Также мы открыли свободный доступ к видеозаписям всех докладов с Apps Conf 2017. Надеемся, что вы найдете там много полезной и интересной информации.
А тех, кто готов поделиться опытом или интересными кейсами в области мобильной разработки, мы приглашаем стать спикерами на нашем майском фестивале конференций РИТ++. Заявки для программного комитета можно оставить тут.
Автор: Олег Бунин