Дорогой читатель, в этой статье мы решили рассказать тебе о нашем проекте [self tune]. За последние полтора года мы прошли большой путь от идеи до стартапа. Пусть мы окончательно еще не запустились, но у нас уже есть какой-никакой результат — победа в российском финале Imagine Cup 2014 в категории «Инновации». Путь этот был очень извилистый и проходил по очень ухабистой дороге. Надеемся, что тебе понравится наша история и ты тоже вдохновишься на свершения в сфере IT-стартапов.
Как все начиналось
Осенним вечером позапрошлого года пятеро студентов МФТИ пили чай в кабинете своего будущего научного руководителя. Он с упоением рассказывал о своем новом проекте, призванном помочь в психологической подготовке летчиков к полетам. Изюминкой его рассказа была технология, позволяющая определить уровень эмоционального напряжения человека, анализируя последовательность его сердечного ритма. Особенно впечатляло то, что для этого не требовалось ни какого-либо громоздкого и дорогостоящего оборудования, ни прохождения специальной процедуры измерения. Все, что было нужно — миниатюрный фитнес-датчик, надевающийся на грудь, и 5 минут измерения.
Мы и до этого интересовались современными технологиями, много программировали в учебных и рабочих целях и даже имели опыт создания собственных проектов. И, естественно, мы были воодушевлены новой идеей и не смогли отказаться от возможности воплотить её в жизнь своими руками. Мы с радостью приняли предложение заняться этим проектом в качестве нашей бакалаврской научной работы.
Первые шаги
Тогда мы даже и не подозревали, во что вырастет наш проект в будущем. Но мы сразу подошли к делу с большим энтузиазмом. Мы изучили все имеющиеся на рынке портативные датчики сердечного ритма, а также технологии, с помощью которых они обмениваются данными с телефоном или компьютером. Была куплена первая партия из 10 датчиков (как на картинке), работающих на Bluetooth 4.0, для тестирования. Стартовала разработка приложений для Windows и OS X. Работа закипела.
И вот, спустя небольшое количество времени, большое количество строчек кода и огромное количество выпитого в процессе пива, мы задумались над ключевым в истории нашей команды вопросом: почему, имея преимущество дешевизны, доступности и удобства, мы ограничиваем использование нашей технологии такой узкой группой людей, как летчики? Ведь в наших руках была технология, позволяющая любому человеку быстро и точно измерять уровень стресса в домашних условиях. Чтобы максимально упростить процесс с точки зрения пользователя, мы решили перенести нашу технологию на смартфоны.
Набираем обороты
С этого момента мы принялись за работу с двойной силой и рвением. Собирались вместе в общежитии или институте как только у нас появлялось свободное время, в том числе и ночью, — и кодили, кодили, кодили. Были нарисованы, затем запрограммированы, затем перерисованы, переделаны и снова перерисованы и переделаны экраны приложения для iOS. Затем был написан сервер, реализующий сложные и громоздкие вычисления уровня стресса по последовательности пульса. После этого от сервера решено было отказаться, и точно такой же функционал был написан на Objective-C. Потом мы поняли, что погорячились, и решили объединить усилия наших серверных и мобильных разработчиков. Каждый день мы наперебой спорили о добавлении новых фич и улучшении существующих. Мы постоянно перерисовывали экраны приложения и меняли дизайн.
Мы были настолько увлечены происходящим, что проигнорировали одну из типичных ошибок начинающих IT-проектов. Мы подходили ко всему процессу только с позиции разработки и технологий, совершенно не задумываясь о пользователях. В итоге мы создали сложного и громоздкого монстра, оперирующего научными терминами и считающего все 30 различных показателей методики определения эмоционального напряжения, которую мы все еще параллельно развивали в рамках научной работы. Всем, кому мы показывали наше творение, безумно нравилась его идея, но в то же время всем приходилось долго объяснять как работает приложение и что оно вообще делает. В какой-то момент пришло понимание того, что дальше продолжать работу в том же ключе нельзя.
В то же время нарастал конфликт в команде. Наша технология находила другие возможные применения и направления развития. Часть нашей команды хотела развивать все и сразу, других же это не устраивало — они хотели довести до конца начатое дело и не распыляться на каждую новую идею. В результате нам пришлось пережить уход двоих членов команды, которые унесли с собой, среди прочего, и старое название проекта. За этим последовал очень напряженный период в отношениях с научным руководителем. На фоне доставшегося нам никому не нужного приложения-монстра такое положение дел выглядело очень удручающе.
Второе рождение
Мы не стали мириться с тем, что по сути остались у разбитого корыта. Было решено начать все с чистого листа, при этом не повторяя старых ошибок. Буквально в тот же день после длительного брейнсторма мы придумали новое название — [self tune], и сделали на коленке наш сайт-визитку. Тогда же к нашей команде присоединился дизайнер и, по совместительству, супруга одного из основателей. Вооружившись новомодными веяниями из мира стартапов, а также книгами Стива Бланка и Эрика Риса, мы решили в корне изменить наш подход к проекту. Мы попытались понять, как наша технология сможет быть полезна пользователям и решить какую-то их насущную проблему. Оказалось, что уже сам факт того, что мы испытываем постоянное эмоциональное напряжение и стрессы, сам по себе является большой проблемой.
Действительно, мы испытываем стресс постоянно. Вспомните себя после напряженного рабочего дня, во время стояния в километровых пробках по дороге на работу, во время сдачи экзаменов — все эти и многие другие события являются источниками стресса. Избежать их всех невозможно, но зато можно свести на ноль их негативные последствия. Мы поняли, что одного измерения эмоционального напряжения недостаточно, и нужно предлагать пользователям эффективный способ борьбы с ежедневными стрессами.
Именно так и зародилась идея приложения [self tune] в его нынешнем виде. Оно предлагает пользователю выполнить простой алгоритм из трех действий: померяй, расслабься и сравни результаты. Чтобы максимально упростить процесс измерения и никак не ограничивать наших пользователей, мы решили отказаться от использования датчиков. Вместо этого было решено реализовать в приложении современную технологию определения сердечного ритма с помощью пальца, приложенного к камере смартфона. Сам процесс измерения должен был занимать около минуты.
Как же это работает?
Приложение работает по принципу «Померяй, Расслабься, Сравни».
На первом шаге измеряется исходный уровень стресса. Это возможно благодаря методике вариабельности сердечного ритма. Суть методики достаточно проста: частота сердцебиений изменяется с течением времени и даже два соседних сердцебиения имеют разную частоту (если можно так выразится). Например, значение пульса 60 вовсе не означает, что сердце бьется ровно 60 раз в минуту и временной промежуток между каждым из биений 1 секунда. На самом деле, временные промежутки между биениями сердца постоянно варьируются, и по закономерностям в этих вариациях можно судить о различных состояниях нервной системы, в том числе и стрессе.
А как собственно мы получаем эти самые временные промежутки? Для этого используется камера телефона. Когда сердце человека работает, кровь пульсирует по всему телу, в том числе по пальцам. Это приводит к тому, что изображение пальца, освещенное ярким светом (например, вспышкой телефона), немного меняется, в частности меняется красная составляющая («R») этого изображения.
Далее, по последовательности красных компонент, можно построить график, и, взяв пики графика за основу, посчитать эти самые расстояния. В конце измерения пользователь получает оценку своего «Stress health» от 0 до 100, где 100 — наилучший результат, который означает, что пользователь здоров (по-крайней мере, с точки зрения стресса). В конце измерения пользователь имеет возможность отметить свое субъективное эмоциональное состояние и текущий вид активности.
На втором шаге, «Расслабься», мы предлагаем пользователю методику для расслабления, подобранную на основании данных о его фактическом (наша оценка) и субъективном состояниях, текущей активности, местоположении, истории записей и многих других параметрах. В этом и заключается наша инновация. Мы не просим пользователя выбрать методику, а сами предлагаем ему наиболее подходящую в данный момент. Это могут быть простые дыхательные упражнения, расслабляющая музыка, общие советы по избежанию стресса: например, пойти на прогулку, почитать книжку, сходить на пиво с друзьями. Список возможных методик нами только начинает формироваться и пополняется постоянно.
После расслабления мы предлагаем пользователю померять свой стресс еще раз и сравнить, фактически, два числа: ДО и ПОСЛЕ. Таким образом, у пользователя будет возможность следить за своим прогрессом и на реальных результатах убеждаться в действенности методик. После всего этого пользователь может рассказать своим друзьям на Facebook о том, как он воспользовался приложением.
Вот примерно так это работает:
Imagine Cup
Итак, работа снова закипела. Мы, следуя заветам Эрика Риса, твердо решили написать приложение с минимальным функционалом и выложить его в AppStore для скорейшего получения обратной связи от пользователей. Но этим планам не суждено было сбыться, по крайней мере пока, так как мы узнали о конкурсе Imagine Cup.
Решение принять участие в конкурсе было для нас очень важным и ответственным. В 2005 году команда из МФТИ, которую также курировал наш научный руководитель, победила на мировом финале Imagine Cup в Японии. К тому же, в последне время физтеховским командам не удавалось победить даже на российском финале, поэтому мы решили взять на себя ответственность защитить честь нашего института.
К подготовке мы подошли очень серьезно, и изначально нацеливались на победу. Много сил вкладывалось не только в доработку приложения, но и в подготовку красочной презентации и яркого оригинального выступления. С последним нам активно помогали ребята из совместного учебно-научного центра Parallels-МФТИ. В итоге к региональному финалу выступление было готово, но выложить приложение в AppStore мы не успели.
После победы на региональном финале нам намекнули, что для дальнейших побед в конкурсе от Microsoft необходимо иметь хотя бы прототип своего продукта на базе одной из технологий Microsoft.
Времени до российского финала оставалось меньше месяца, но мы приняли этот вызов. К концу этого месяца напряжение только нарастало и страсти только накалялись. Кроме разработки приложения для Windows Phone, мы полностью переделали нашу презентацию, сценарий выступления, а также сняли промо-видео. Перед самим конкурсом мы много репетировали, и в последние дни почти не спали.
В результате все намеченные планы были выполнены, а демо-версия нашего приложения появилась в Windows Store.
Финал
И вот настал момент нашего выступления в категории «Инновации». Долгое время упорной работы над проектом и долгое время подготовки к конкурсу дали о себе знать. Мы стали победителями в своей категории, а также получили грант на доработку приложения от Фонда посевного финансирования Microsoft.
Но для участия в мировом финале нам нужно еще оказаться лучшими из победителей в трех категориях конкурса. Сейчас мы отправили материалы для онлайн-полуфинала, и с нетерпением и надеждой на лучшее ждем результатов.
За сценой
У всех без исключения участников команды основная профессия — «программист». За время разработки мы столкнулись с необходимостью научится писать программы для достаточно внушительного списка платформ: Windows 7, Windows 8/Store, OS X, iOS, Windows Phone, Azure и даже Android. В каждой из них есть свои прелести и свои недостатки. Например, для человека, привыкшего разрабатывать на C# для Windows, используя при этом Visual Studio, очень диким, сперва, покажутся XCode и Objective-C. Но постепенно привыкаешь к тому, что, казалось бы, элегантный код на C#, использующий Linq, например такой:
peaks.Sort((p1,p2) => p2.signalPower.CompareTo(p1.signalPower));
легким движением руки превращается в такой:
NSArray *sortedPeaksByPower = [peaks sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2){
HRPoint *p1 = (HRPoint*)obj1;
HRPoint *p2 = (HRPoint*)obj2;
if (p1.signalPower > p2.signalPower) {
return (NSComparisonResult)NSOrderedAscending;
}
if (p1.signalPower < p2.signalPower) {
return (NSComparisonResult)NSOrderedDescending;
}
return (NSComparisonResult)NSOrderedSame;
}];
И это только вершина айсберга. На самом деле, кросс-платформенность — самый большой вызов для любого IT-стартапа, ведь если ты не займешь свою нишу на Android, iOS или Windows Phone, это сделает кто-то другой.
Вместо послесловия
Нашей молодой, но очень амбициозной команде уже удалось столкнуться со многими проблемами современных IT-стартапов. Надеемся, что этой статьей мы вдохновим многих на то, чего раньше стеснялись или просто боялись. Ведь у этой сферы сейчас проходит вторая молодость и многие «гиганты» рынка всячески помогают маленьким неокрепшим командам вроде нашей.
В свою очередь, хочется поблагодарить Microsoft за отличную возможность посоревноваться с лучшими студенческими IT-проектами, а также всех тех, кто помогал нам в работе. Всем без исключения участникам Imagine Cup мы желаем не останавливаться на достигнутом и продолжать развивать свои проекты! И в свою очередь надеемся, что наш проект сможет получить достойное развитие и изменить жизнь миллионов своих пользователей к лучшему.
Ссылки по теме
Автор: alexander_tar