Блог

Битрикс, я тебя знаю!

Как начать работу в самой популярной CRM-системе

Наладить рабочие процессы и систему постановки и отслеживания задач – голубая мечта для любого руководителя. В этом может отлично помочь «Битрикс 24» – облачный сервис для командной работы, включающий систему управления взаимоотношениями с клиентами (CRM), интранет-портал, чат и менеджер задач. Однако перейти на «Битрикс» сродни небольшому апокалипсису. Или по крайней мере переезду в новый офис: нужно все собрать, перевезти и распаковать на новом месте, ничего при этом не потеряв. Да еще и убедить всех, что это действительно необходимо. Рассказываем, как перейти на «Битрикс 24», чтобы это не превратилось в стихийное бедствие, а принесло лишь всеобщее счастье и радость.

 

Что такое «Битрикс24»?

«Битрикс 24» – это огромный корпоративный портал от «1С-Битрикс», который охватывает практически все. Здесь есть функциональные возможности социальных сетей, проектов, задач, управления персоналом, и многое другое, в том числе CRM

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

Еще одна важная отличительная особенность «Битрикс24» — концепция социального интранета. Обычные инструменты корпоративного портала были дополнены привычными нам элементами социальных сетей. Это позволило сделать коммуникации внутри компании такими же легкими, как общение с друзьями – обучение работе с порталом практически не требуется.

«Битрикс» реализован в виде облачного сервиса. Благодаря этому можно начать юзать его быстро и легко: вам не нужно покупать и настраивать сервер, устанавливать приложение, следить за обновлениями и проделывать много других рутинных операций. В то же время, при необходимости, вы всегда можете перенести данные из «Битрикс24» на корпоративный портал, установленный локально.

Для кого?

  • Компания или отдел с небольшим документооборотом, который не работает с внешними подрядчиками.
  • Группа единомышленников, которая только планирует начать свой проект и обсуждает общие идеи.
  • Отдел продаж, которому нужна CRM для работы с клиентами и для обработки заказов из интернет-магазина.

Что умеет «Битрикс24»? 

Кучу всего. Перечисляем.

Он поистине многофункционален.

Социальный интранет. Социальный интранет – это инструмент для облегчения коммуникаций в компании и совместной работы над проектами. Только представьте: вы видите реакцию на ваши действия и идеи, быстро получаете обратную связь. Вам удобно искать нужные документы, записи, отчеты. Вы всегда в курсе всех изменений в компании. Все это – социальный интранет.

Единая точка доступа к проектам, задачам, документам и контактам. Вы используете в работе большое количество разнородных инструментов и постоянно путаетесь в них? «Битрикс24» заменяет их все и предоставляет единую точку доступа ко всем проектам, задачам, контактам, файлам и переписке с коллегами. Плюс мгновенный поиск по всем накопленным материалам.

Мобильная версия. Все возможности «Битрикс24» доступны с мобильных устройств. Не ограничивайте себя рамками офиса – работайте дома, из кафе, аэропорта. Главное – наличие устройства, подключенного к интернету.

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

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

Безопасность. Все ваши проекты, задачи и файлы будут расположены только по одному адресу https://ВашаКомпания.bitrix24.ru/  24 часа в сутки, 7 дней в неделю. И только вы и ваши сотрудники будут иметь к ним доступ.

Социальная сеть для работы 

Все мы привыкли к родным и удобным Контактику и Фейсбучку, однако если вы обуздаете «Битрикс», то сможете заменить все многочисленные соцсети и мессенджеры на одну универсальную.

Он вобрал в себя все функции популярных социальных сетей, что значительно облегчит вам работу, коммуникацию, жизнь.

 

  • Живая лента

«Живая лента» – единая интерактивная лента всех событий на вашем корпоративном портале. Объединяет все рабочие и социальные инструменты – задачи и отчеты, блоги и фотогалереи. Читая «живую ленту», все сотрудники всегда в курсе событий и могут оперативно реагировать на поставленные задачи, подключаться к обсуждениям, просматривать новые документы.

  • Мне нравится

«Живая лента» интерактивная. Для этого предусмотрена кнопка «Мне нравится», которой можно отмечать сообщения. Отметка «Мне нравится» показывает мнение сотрудников, влияет на рейтинг записи, файла. В результатах поиска эти документы будут показаны первыми.

  • Мгновенные сообщения

Забудьте о куче мессенджеров! В «Битрикс24» свой собственный встроенный IM-мессенджер, который позволит эффективно обмениваться сообщениями и файлами прямо через браузер. Вся переписка с коллегами хранится в истории, при этом нужное сообщение легко найти с помощью встроенного поиска. Индикатор присутствия покажет, кто из коллег сейчас онлайн.

Работает и поиск по контактам, а самые последние из них всегда находятся вверху контакт-листа. Контакты сортируются по группам, отсутствующие пользователи могут быть скрыты из списка. Выставляются статусы «Занят/Доступен». В статусе «Занят» не всплывают сообщения и не мешают работать, но сам индикатор отображает количество новых сообщений.

  • Обмен сообщениями внутри

Сообщения в ленте – уже привычная форма обмена информацией. Написать сообщение можно прямо из «Живой ленты», без перехода на свою персональную страницу. Это очень удобно и не требует много времени. Сообщение вы можете адресовать кому-то персонально или сразу нескольким сотрудникам, отделу или рабочей группе. К сообщению можно прикрепить документ, фотографию или видео. Быстрая реакция ускорит процесс согласования рабочих вопросов.

  • Фотогалерея

Фотогалерея – это современный инструмент для создания и управления фотоальбомами. Вы можете создавать общие галереи компании и персональные для каждого сотрудника. Загружайте ваши фотографии быстро и удобно, используя средства массовой загрузки фотографий, проводите голосование и добавляйте комментарии!

Фотогалерея тесно взаимодействует с «Живой лентой»: все загруженные фотографии отображаются в «Живой ленте», и коллеги могу прямо там их комментировать и ставить отметки «Мне нравится».

  • Оповещения

Центр нотификации «Битрикс24» выводит информацию о приглашениях в группу или на встречу, сообщает о новых «лайках», поставленных задачах, комментариях и прочих событиях.

  • Мобильная версия

Будьте всегда на связи! Для этого достаточно скачать мобильную версию «Битрикс24». Доступна для любых платформ.

Помните: «Битрикс» – не панацея. Он не решит всех ваших проблем. В любом случае придется денно и нощно копаться и разбираться. Естественно, учитывая особенности компании и коллектива. Однако используя даже минимальный набор инструментов «Битрикса», вы сможете навести порядок в процессах, улучшить микроклимат в коллективе, а в перспективе – построить крепкую, надежную и прозрачную систему управления, которая не подведет.

Регистрация в «Битрикс24»: https://www.bitrix24.ru/create.php?p=7724443

Купить «Битрикс24»: https://www.bitrix24.ru/?p=7724443

Будь в курсе: агрегатор «Алтайские новости»

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

 

«Алтайские новости» – это агрегатор новостей для наиболее известных новостных ресурсов Алтая:

Главный экран новостей
Главный экран приложения

Заказчик

В 2015 году к нам обратилась администрация Алтайского края с важной миссией: разработать приложение для информирования населения и формирования новостной картины дня.

Сайт администрации края
Официальный сайт администрации Алтайского края

Мы посчитали, что для нас эта миссия выполнима и с радостью взялись за столь важный и ответственный заказ.

Задача

Нужно было разработать приложение, которое позволяет просматривать актуальные новости из выбранных источников.

В качестве источников взяли топовые и наиболее цитируемые алтайские СМИ.

Основные требования к приложению:

  • Агрегатор должен автоматически собирать новости с информационных ресурсов и располагать их в уже собственной ленте. Новости легко проскроллить, открыть и прочитать.
  • При необходимости есть возможность перейти к полной версии материала на сайте источника.
  • Новостями можно делиться в социальных сетях.

Новости в приложении
Отображение новостей в приложении

Разработка

Разработано для платформ Android и iPhone.

Приложение интегрировано:
С сайтами новостных источников.
Позже к уже перечисленным добавился сайт краевого информационного телеканала «Катунь 24» (http://www.katun24.ru).
Источники новостей - макет
Источники новостей: макет

С социальными сетями.
Приложение привязано к таким популярным социальным сетям как Facebook, «ВКонтакте» и Twitter.
Благодаря этому можно делиться с друзьями наиболее интересными и волнующими новостями, не выходя их приложения.
Меню социальных сетей
Меню для социальных сетей (макет)

С Gismeteo.
Мы хотели, чтобы приложение было максимально полезным, поэтому заморочились с интеграцией с Gismeteo и запилили раздел «Погода».
Это крупный метеорологический ресурс, который берет данные из «Гидрометцентра» (https://meteoinfo.ru). Прогноз от Gismeteo считается одним из самых точных и удобных.
Сайт предоставляет информацию о погоде в почти 13 тысячах населенных пунктов каждые три часа в течение суток, а по некоторым пунктам – каждый час.
Поэтому ему вполне можно доверять, и он достоин, чтобы его интегрировали в новостное приложение.
Сайт Gismeteo
Официальный сайт Gismeteo

Интеграция по API.

Позже мы добавили в приложение раздел «Избранное», возможность видеть уже прочитанные новости и способность текста подстраиваться под размеры экранов телефонов и планшетов.

Принцип работы

На первый взгляд приложение стандартно – лента новостей и меню. Все просто, но в то же время агрегатор не лишен нескольких неожиданных приятных фич.

Настройка текста новости
Мы предусмотрели даже такие несущественные на первый взгляд мелочи. Текст новости можно настраивать по своему усмотрению. С текстом новости можно проводить следующие операции:

  • Менять режим отображения (день/ночь).
  • Изменять размер шрифта с помощью ползунка или клавиш громкости.
  • Добавлять в «Избранное».
  • Делиться в соцсетях (кнопка «Поделиться»).

Работа с текстом новости
Выбран «ночной» режим и новость добавлена в «Избранное»

Сохранение новости
Помимо того, что пользователь может поделиться новостью, он может сохранить ее на своем телефоне и прочитать позже. Причем даже без доступа в интернет.

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

Поиск новости
Поиск новости по дате (макет)

Фильтрация новостей
Прежде всего, все новости делятся по территориальному признаку: «Новости Барнаула», «Новости Бийска», «Новости края», «Новости России», «Новости мира», «Все новости». Фильтр обрабатывает по ключевым словам в новости. Допустим, при парсинге, если в тексте встречается «Барнаул», «барнаульский» и так далее, то эта новость помечается как новость о Барнауле.

Новости фильтруются не только по источникам, но и по тональности. Режим «Без чернухи» позволяет оставить в ленте только те новости, в которых не встречаются стоп-слова «убийство», «происшествие», «преступление», «трупов», «ножевых» и прочее. С этим режимом вы будете получать только позитивные новости, и нервы будут в порядке.


Фильтры новостей по территории и тональности

Погода
Раздел погоды по умолчанию отображает погоду на текущую дату. При нажатии на название города выпрыгивает список доступных городов. Можно посмотреть и прогноз погоды на неделю. Погода на сегодня отображается первой новостью при запуске приложения. Так что вы не упустите из виду, что сегодня за окном – дождь, снег или солнце.


Раздел «Погода», отображение на определенный день (макет)

Дизайн

По умолчанию новости отображаются большими фотографиями с заголовками.

Отображение новостей
Отображение новостей по умолчанию (макет)

Если нет фотографии, то новость выглядит как плашка с текстом.

Сама лента новостей отображается или списком, или плиткой. Пользователь сам может выбрать, какой вид ему наиболее по душе. Для этого в приложении есть быстрое переключение между видами списка новостей (кнопки).

Кнопки для переключения между видами отображения новостей (макет)

Цветовая гамма агрегатора так и намекает, что он сделан на Алтае, в аграрном регионе. Преобладают насыщенный темно-зеленый и деревянные цвета – прямая ассоциация с природой.

Но особого внимания заслуживает иконка приложения. На том же деревянном уютном фоне – карта Алтайского края, стилизованная под газету, и чашка кофе.

Готовый проект

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

Убедитесь сами!

Доступно в Google Play и App Store

Автовокзал: мобильное приложение для покупки билетов на пригородные автобусы

С момента основания в 1939 году барнаульский автовокзал значительно шагнул вперед. Теперь это – не просто маленькая станция с тремя лавочками, парой ларьков и кассами, а целый комплекс для обслуживания пассажиров с развитой инфраструктурой. Но для окончательного «осовременивания» ему не хватало одной важной детали – мобильного приложения, позволяющего максимально модернизировать процесс покупки и продажи билетов. Разработка такого приложения, с помощью которого можно быстро и безболезненно покупать билеты в пригородные автобусы до любой точки Алтайского края и близлежащих регионов, и стала одной из наших задач.

 

Автобус – идеальный вариант для путешествий в соседние города. А откуда междугородние автобусы Барнаула отправляются в путь? Правильно, с автовокзала, расположенного на площади Победы.

Вокзал имеет разветвленную сеть автобусных сообщений со всеми городами и районами Алтайского края и соседями: Республикой Алтай, Новосибирской, Кемеровской, Томской областями. Регулярно автобусы ездят и в города Казахстана: Павлодар, Семипалатинск, Усть-Каменогорск, Караганда, Риддер, Бишкек.

Более 300 автобусов выезжают с вокзала ежедневно, а в отдельные дни – более 400. Максимальный среднесуточный объем перевозок – 6000 человек.

Современному автовокзалу – современные способы продажи билетов. Как раз для этой цели нам и нужно было разработать мобильное приложение под Android.

Задача

Идея приложения – помочь жителям региона покупать билеты из любой точки мира, прямо со смартфона или планшета или дома с компьютера.

Быстро, удобно и самое главное – без раздражающих очередей и лишней траты времени.

Такое приложение должно уметь:

  • искать автобусные маршруты, которые идут из населенных пунктов Алтайского края,
  • маршруты следования;
  • бронировать несколько билетов одновременно,
  • продавать багажные билеты,
  • продавать билеты с оплатой банковской картой,
  • позволять просматривать купленные и забронированные билеты,
  • отменять заказы и возвращать деньги на банковскую карту,
  • составлять списки пассажиров (с заполненными данными) для быстрой продажи билетов,
  • сохранять истории поиска маршрутов с возможностью их повторения.

Разработка

Приложение интегрировано сразу с двумя крупными системами – E-traffic и Gateline.net.

Для чего?

  • E-traffic – единый протокол, связанный с Глобальной дистрибьюторской системой (GDS), откуда приложение берет данные по расписанию, билетам, маршрутам и так далее.
  • Gateline.net – платежный шлюз, который обеспечивает связь с банком. Благодаря ему можно оплатить билет любой картой.

Интеграция проходила по API.

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

С интеграцией особых сложностей не возникло, хотя тут мы изрядно повозились с унификацией данных. В отличие от РЖД, база данных для автовокзалов плохо структурирована – каждый хранит информацию так, как хочет. Поэтому денно и нощно мы прописывали и структурировали нужные поля и столбцы, чтоб привести базу данных к единому общему виду.

E-traffic

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

Танцы с бубном понадобились, потому что здесь все не так просто. Прежде всего, пользователю через приложение надо каким-то образом сообщить, что он должен обязательно распечатать билет. Плюс pdf-файл тоже внес свою лепту: как создать возможность для его скачивания из приложения и отправки пользователю на электронную почту.

Поэтому добавили документ «Правила перевозки пассажиров» и специальную кнопку для подтверждения согласия с правилами (Закон о персональных данных, привет), экран со строчкой для электронного адреса и предупреждением о необходимости распечатки, кнопку «Скачать билеты» во всплывающем меню раздела «Билеты».

Успешная покупка билета Управление заказом

В итоге проблему решили.

Принцип работы

Функционал «Автовокзала» реализован в виде интуитивного и понятного меню, в которое входят такие разделы как «Расписание», «Билеты», «Избранное», «История», «Список пассажиров» и «Настройки».

Функционал приложения

Когда пользователь заходит в приложение и заполняет поля: пункт отправления и пункт назначения, пассажиры и билет, в GDS-систему отправляется запрос. Затем на телефон приходит уведомление о его наличии или отсутствии.

Данные пассажира Сохранение данных пассажира

После операции с оплатой пользователь получает билет на телефон. Теперь осталось собрать чемоданы – и в путь!

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

Заказ сохранен

В приложении предусмотрена еще одна замечательная функция, чтобы окончательно облегчить процесс и точно избавить пользователей от необходимости идти на вокзал до отъезда – возврат билетов. Главное – успеть сделать это до отправления автобуса. После пары нажатий деньги вернутся на банковскую карту.

Возврат билета

Но так можно только до отправления автобуса. Если очухались после – то возврат уже в кассе автовокзала.

Дизайн

Над дизайном приложения поколдовали несколько подольше. Он прошел целую эволюцию: от тяжеловатого и нагруженного лишними элементами в начале до легкого и лаконичного в конце.

С интерфейса, как с луковицы, слой за слоем убирали лишнее, пока не остались наиболее важные элементы.

Макеты дизайна Макеты дизайна Макеты дизайна

Макеты первоначального дизайна

Значительно переделали главный экран, меню и иконку.

Первоначальный дизайн

Первоначальный дизайн

Иконка, пожалуй, претерпела больше всего трансформаций и изменилась радикально.

Первый вариант – простой и схематичный.

Иконка - схема

Потом иконка все усложнялась, пока не превратилась в ультрасовременный крупногабаритный автобус с мощными фарами и зеркалами заднего вида. На нем и решили остановиться.

Второй вариант иконки

Третий вариант

Финальная иконка

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

Финальный дизайн

Интересно реализовали и календарь – функциональный элемент, который благодаря всем этим изыскам стал дизайнерским.

В системе E-traffic билеты известны только на ближайшие 20 дней, поэтому отмели вариант с выпадающим календарем на весь месяц. Вместо этого – однострочная разбивка на две недели с навигацией по стрелкам. Календарь как будто есть, но как будто и нет.

Макет календаря

Макет календаря

Календарь

Окончательный вариант календаря

Все выполнено в спокойных тонах морской волны, приятных для глаз.

Готовый проект

Пункты отправления приложения ограничены Алтайским краем, пункты назначения – только вашим воображением и финансами.

С помощью приложения билет можно купить куда угодно – было бы желание!

В добрый путь!

Доступно в Google Play

Как приручить дракона

Объектно-ориентированное проектирование эпохи Средневековья

Пока все обсуждали седьмой сезон «Игры престолов», и пребывали в шоке от того, как Дейенерис научилась управлять своими драконами, мы продолжали коллективно учиться обуздывать наших собственных «IT-драконов» – разработка, управление проектами, маркетинг.

На одном из семинаров мы обсудили интригующую тему – проблемно-ориентированное проектирование (DDD: Domain Driven Design). Так как она обширная и многогранная, то по итогам семинара мы решили не ограничиваться обычными тезисами, а перенеслись в средние века и сочинили легенду о драконах и викингах, которая бы все это проиллюстрировала.

Итак, дети мои, внимаем, запоминаем…

Легенда

Во времена раннего средневековья, во времена древних богов, воителей и королей, когда магические существа еще не исчезли с лица Земли, викинги и драконы страшно враждовали.

Тогда на свете водилось много разных драконов. Одни, большие и мрачные, парили в небесах как огромные грозные птицы и строили гнезда на вершинах утесов. Другие, мелкие и проворные, сновали дружными стайками и ловили крыс и мышей. Третьи жили в глубине морей и были в двадцать раз крупнее синего кита, и выходили на сушу только поохотиться. Но в основном они обитали в Драконьей пустоши, где можно было встретить драконов всех мастей.

Это была ужасная кровавая вражда. Драконы сжигали дома викингов, уносили девушек, продукты и скот. Викинги тоже в долгу не оставались – отлавливали драконов и жестоко расправлялись с ними, а из их шкур изготавливали свое обмундирование.

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

Проблемно-ориентированное проектирование – это методология решения сложных бизнес-задач. В этом случае сложной бизнес-задачей была организация жизни племени и их взаимодействия с драконами.

Domain Driven Design держится на трех столпах – предметная область (Domain), единый язык (Ubiquitous Language) и ограниченный контекст (Bounded Context).

 

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

***

Семь поколений викингов жили в состоянии непрекращающейся борьбы, но ход вещей переломила история, случившаяся с сыном вождя племени, которое именовали как «Мудрое».

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

Эта непохожесть мешала ему стать своим в своем собственном племени, и поэтому у него совсем не было друзей.

Сам вождь не гордился своим сыном. Да и чем гордиться? Физическая сила и умение грамотно атаковать были в цене среди викингов. Высокий интеллект и душевная мягкость, напротив, были совсем ненужными качествами.

Однако юноша был уверен, что как только ему исполнится 18 и он уничтожит одну из рептилий, жизнь наладится. Эйнар старательно тренировался, чтобы с достоинством пройти обряд инициации. Но у него так ничего и не получалось. Меч валился из рук, ноги подкашивались, и он не выиграл ни одного поединка.

***

День инициации неминуемо приближался, и курсы укрощения драконов становились все интенсивнее. Но все было безуспешно – Эйнар по-прежнему одерживал поражение за поражением.

Когда он проиграл очередной поединок, вождь вызвал его на серьезный разговор.

– Сын мой…
– Да, отец.
– Ты же понимаешь важность предстоящего события?
– Да, конечно, отец.
– Тогда почему ты совсем не стараешься?
– Стараюсь, отец. Но я не понимаю, зачем мне убивать дракона. Мне их жалко. Ведь они тоже живые существа.
– Ты не понимаешь! Ты не представляешь, что испытываю я! Думаешь, я хочу изгонять из племени родного сына?! А если я сам нарушу многовековые традиции – то какой я тогда вождь? Тогда меня самого надо изгонять!

Эйнар обреченно вздохнул. Он понимал, что печальный финал, скорее всего, неизбежен.

Сын мой, – продолжил вождь, – мы ведь от тебя не требуем ничего невозможного. Победи дракона – и дальше читай свои книжки. Вот, смотри:

  1. Есть дракон.
  2. Дракон обитает в Драконьей пустоши.
  3. Берешь копье.
  4. Точишь копье.
  5. Надеваешь доспехи.
  6. Идешь в Драконью пустошь.
  7. Находишь дракона (можно некрупного).
  8. Целишься в него копьем.
  9. Убиваешь дракона.
  10. Приносишь тушу в племя.

И все! – заключил вождь.

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

Тут же встала проблема и единого языка – отец и сын говорили на разных языках. Так, снова неправильно построенная модель предметной области усложнила использование единого языка. Если бы такое произошло не в средневековье, а во время разработки проекта, то вряд ли он был бы доведен до конца.

Это про стратегические модели. Что касается тактических, то дракон здесь выступает Сущностью (Entity), Драконья пустошь – Агрегатом (Aggregate), то есть группой связанных сущностей объектов, а стая драконов, живущих в ней, – Хранилищем (Repository).

 

Один из нерушимых принципов DDD – разбивать сложную задачу на несколько простых этапов, чтобы сделать ее максимально быстро и достичь лучшего результата. Это мы видим, когда отец по пунктам объясняет сыну, какие шаги надо предпринять, чтобы убить дракона.

 

***
Наконец, наступил день X.

С самого утра лил дождь, предвещая беду.

Громко прозвучали трубы, что означало – обряду инициации дан старт.

Обряд предстояло пройти пяти мальчикам племени Мудрое.

Вождь произнес торжественную речь.

«Дорогие мои юные воины! Поздравляю вас с этим важным днем! Именно сегодня вы докажете, что достойны быть частью нашего клана! Вперед, в бой!».

 

После удара гонга группа «инициируемых» направилась через лес в Драконью пустошь.

***

По дороге Эйнар размышлял:

  • Что я знаю о драконах? Живут в Драконьей пустоши, питаются овцами, коровами и другим скотом. Перед тем, как приступить к еде, они поджаривают ее своим огненным дыханием.
  • Покрыты толстой чешуей, которую трудно пробить.
  • Примерные размеры – 10 метров в длину, размах крыльев – 10,2 метра, площадь крыльев – 17,5 квадратного метра.
  • Согласно древней истории, которую я прочитал в книге Предков, драконы и люди раньше не воевали друг с другом, а жили в мире. Почему же мы так не можем?
  • Нас пять человек. Значит, пять драконов будет убито. Нет, своего я убивать не буду. Пусть хоть одной жертвой будет меньше.

Любое действие по DDD начинается с переработки знаний. Что и сделал Эйнар по дороге в Драконью пустошь – он проанализировал свои собственные знания, входные данные о летающих рептилиях, информацию из книги Предков и выявил сущность «Дракон», определив для себя другую модель поведения, которая на его взгляд казалось более понятной и эффективной.

 

Вдруг раздался рев, что означало, что отряд пришел в Драконью пустошь.

***
Собратья Эйнара разбрелись по пустоши в поисках драконов.

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

Вдруг он наткнулся на что-то большое и с шипами. Это был хвост дракона.

Хвост шелохнулся, а вместе с ним и дракон.

Приглядевшись, Эйнар обнаружил, что он ранен.

– Как тебя зовут?
– Сидра, а тебя?
– Эйнар. Не бойся, я помогу тебе.

Викинг нарвал охапку листьев лечебного растения и сделал из них средство для заживления ран. Рецепт он вычитал в одной из книжек.

Дракону сразу полегчало.

– Так ты не будешь меня убивать?
– Нет, я не такой. А ты?
– Вам, викингам, нельзя доверять. Но ты мне помог, поэтому нет. Но тебе же нельзя будет вернуться в племя?
– Да, я знаю.
– И куда пойдешь?
– Еще не решил.
– Оставайся в пустоши – я тебя всему научу и со всем помогу.

Так Эйнар и остался жить в Драконьей пустоши.

 

***

Вскоре дракон и викинг стали лучшими друзьями.

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

Днем они вместе охотились, а по вечерам – жарили мясо и весело болтали, пели песни и развлекались.

***

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

Эйнар на цыпочках проследовал за ними и подслушал их разговоры.

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

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

***
– Дракон Ужасный – причина вражды между драконами и викингами? Как вы могли от меня скрыть такое?
– Эйнар, у нас не было выбора – иначе он бы тебя съел, а мы этого не хотели.
– Но, получается, драконы и викинги могут жить в мире! Главное – одолеть Ужасного!
– Но это невозможно…
– Возможно! Я пойду в свою деревню и приведу подкрепление. Уверен, вместе мы победим!

Черный гигантский дракон Ужасный – новая неучтенная ранее сущность, новая информация, которая могла в корне поменять всю предметную область, а с ней – и бизнес-модель. Иначе говоря – ошибка в проектировании.

 

***
Эйнар пришел в родное племя. Ему никто не был рад.

Весь путь до дома отца его сопровождали неодобрительные возгласы и улюлюканья.

«Зачем вернулся, трус! Тебе здесь не место!», – то и дело раздавалось с разных сторон.

Наконец, он дошел до хижины вождя.

– Зачем ты здесь, сын мой? Тебя не должно здесь быть, ты не прошел испытание, уходи.
– Но отец, выслушай меня! Драконы и люди не должны враждовать! Мы не должны убивать их!
– С чего ты взял?
– Главная причина – гигантский черный дракон Ужасный, который живет в пещере, недалеко от пустоши за лесом. Он ненавидит викингов и хочет всех нас уничтожить! А другие драконы хорошие и миролюбивые, они не желают нам зла, а делают его против воли. Я со всеми ними подружился.
– Гигантский черный дракон – причина наших бед? Что ж, тогда мы его уничтожим. Но обряд инициации не будем отменять – таковы священные традиции.
– Но отец…
– Молчи. А тебя закуем в кандалы и посадим в темницу, чтоб не мешал операции.
– Но так нельзя…
– Молчи. Атакуем завтра!

***
Наступил день битвы. Сгустились темные тучи.

Викинги, вооружившись копьями и вилами, отправились в логово черного дракона.

Начался бой. Но силы были слишком неравны: викинги не могли справиться с гигантским драконом и готовились принять верную смерть в последнем бою.

«Вам меня не победить», – взревел Ужасный, выдохнув столп пламени.

Казалось, исход был предрешен.

Но вдруг неожиданно в небесах появился Эйнар со стаей драконов, верхом на одном из них. Его друг, дракон Сидра, спалил темницу и освободил его от кандалов.

Так драконы и люди объединились в битве века и вместе повергли общего врага –гигантского дракона.

В этой истории произошло несколько Domain Events – событий, повлиявших на ее ход. Это своеобразный аналог важных действий и фактов в бизнесе, которые происходят как следствие другого отдельного действия и становятся логикой предметной области.

Этими событиями стали: обряд инициации, встреча Эйнара с драконом, раскрытие тайны о гигантском драконе и финальная битва.

 

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

Так Эйнар получил любовь и уважение в своем племени, много друзей, и стал помощником вождя, обряд инициации был отменен, а между драконами и викингами воцарилась мир.

Мораль

Финальная битва завершила процесс. А может, только начала – со сменой бизнес-модели взаимодействия с драконами, и викингам, и драконам нужно будет многое изменить в своем укладе. Грядет крупная оптимизация, так сказать. Племя (компания) на пороге важных перемен. Но это уже совсем другая история.

PHP, разработка и рок-н-ролл

Манифест «Энтерры» по итогам семинара о микрофреймворках PHP

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

 

«Меньше кода, а не больше», – таков главный вывод, который мы вынесли с семинара. А основные тезисы зафиксировали в манифесте PHP-разработчика, прямо как программист Эд Финклер в своем «The MicroPHP Manifesto», где он сравнил разработку с рок-н-роллом, а кодеров – с рок-звездами, и провозгласил, что лучше играть очень мощные аккорды в панк-рок группе и качать зал, чем писать претензионные рок-оперы.

Нам близка позиция Финклера и поэтому мы торжественно заявляем, что готовы делать сайты и приложения не на многословных решениях и сложноподчиненных библиотеках, а на легковесной основе – микрофреймворках.

Преамбула

  • Язык PHP, несмотря на почтенный возраст, по-прежнему остается востребованным. 80% всех сайтов написаны именно на нем. Но за 20 лет существования он успел обрасти целым набором ненужных и многоуровневых компонентов, которые страшно выглядят и так же страшно не работают.
  • Монструозные full-stack фреймворки типа Zend Framework и F: Symphony, конечно, хороши, и обладают кучей разных возможностей, однако требуют много лишних телодвижений и сильно тормозят процесс разработки. Код в таком «монстре» за пять минут не поправишь и не отредактируешь, так как приходится продираться сквозь бесчисленное множество файлов и директорий. К тому же на небольших проектах все эти примочки не нужны – хватает базового функционала.

Решение

  • Здесь на помощь спешат микрофреймворки. Ключевая часть слова – «микро». Это своего рода каркас сайта или приложения, на который затем как на шампур постепенно нанизывают шашлык – формы обратной связи, кнопки, пуши и так далее.
  • «Начинка» микрофреймворков состоит из роутинга, базовой реализации MVC («Модель-Представление-Контроллер»), обработки HTTP-запросов, обработки ошибок. Это самый минимум, который необходим, чтобы быстро запустить любое приложение. Кроме того, микрофреймворки расширяемы – базовую настройку спокойно можно менять и дополнять.
  • В микрофреймворках обычно отсутствуют такие функции, как ORM, кэширование, шаблонизация, мультиязычность, аутентификация и валидация форм.
  • Микрофреймворки – очень хороший инструмент, когда стоит задача написать мэйлер или какой-то другой промежуточный компонент системы, сделать прототип функционала и показать заказчику на начальных этапах разработки, создать REST API для мобильных приложений или расширить функционал уже существующей системы. Допустим, сайт на CMS работает давно, и к нему внезапно захотелось добавить чего-нибудь эдакого.
  • Микрофреймворки прекрасно подойдут и для создания простых сайтов, например, сайтов-визиток. Когда использовать WordPress как-то не айс, ведь мы же крутые ребята, а Zend Framework слишком громоздкий для нескольких страниц, микрофреймворки – самое то.

Фреймворки

Есть очень много PHP-микрофреймворков. Может показаться, что их даже больше, чем для других языков. Самые популярные среди них – Lumen, Slim, Silex, и Phalcon Micro.

Lumen

  • Самый молодой микрофреймворк из всех представленных, на основе Laravel.
  • Поддерживает версию PHP 5.4 и выше.
  • Довольно быстрый – на втором месте по скорости среди перечисленных.
  • Подойдет для разработки сверхбыстрых микросервисов и API.
  • Занимает на диске около 10 МБ. Многовато для «микро».
  • Имеет хорошую документацию и может легко обновиться до Laravel – более мощного фреймворка.

Slim

  • Поддерживает версию PHP 5.5 и выше.
  • Функционал сильно ограничен: фреймворк, в отличие от других, не содержит встроенных возможностей для работы с базами данных.
  • Имеет HTTP-роутер и поддержку PSR-7 (HTTP message interfaces) – набор PHP интерфейсов, описывающих HTTP запрос и HTTP ответ. Это позволяет быстро реагировать на запросы HTTP.

Silex

    • Микрофреймворк от создателей Symfony2.
    • Поддерживает версию PHP 5.5.9 и выше.
    • Подойдет и для больших проектов.
    • В два раза медленнее и неповоротливее Lumen.
    • Чтобы юзать этот фреймворк, надо хотя бы в общих чертах знать Symfony. А иначе будет ох как тяжко. Но как раз благодаря связи с Symfony он может быть легко интегрирован с другими библиотеками, а встроенные модули помогут не наделать лишнего.

Phalcon Micro

  • Не совсем микрофреймворк в обычном понимании, а скорее расширение для создания сайтов и приложений на PHP.
  • Поддерживает версию PHP 5.5 и выше.
  • Взаимодействует непосредственно с PHP, поэтому считается самым быстрым.
  • Имеет отличную документацию и все стандартные компоненты, включая ORM.
  • Тем не менее, тоже не совершенен – если где-то затеряется одинокий баг, чтобы его исправить, придется подучить C или Zephir, потому что расширение сделано на их основе.

Презентация семинара

Всем фреймворк, всем рок!

Сайт, живи! По следам семинара о балансировке нагрузки веб-серверов

Те, кто читает наши новости ВКонтакте, наверняка заметили, что у нас постоянно проходят семинары. Сотрудники «Энтерры» и гости собираются в офисе и обсуждают разработку и несущиеся вскачь IT-технологии.

Один из недавних семинаров был посвящен балансировке нагрузки веб-серверов.

Мы подробно и продуктивно поговорили об основных методах и алгоритмах, а также о программном обеспечении, которое поможет выровнять нагрузку на сервер и не позволит ему в самый неподходящий момент накрыться медным тазом.

 

Вот основные тезисы семинара.

Проблема

Слабенькие, недостаточно производительные сервера обычно пытаются «лечить» нерадикально, осторожно, например, кэшированием или постепенно наращивая мощность сервера. Но момент, когда выгода не соотносится с усилиями, затраченными на все эти манипуляции, неизбежен.

Решение

  • Балансировка – это выход.
  • Каждый сервер имеет точную копию файлов сайта.
  • При балансировке если отвалится один сервак, сайты и приложения продолжат работать как ни в чем не бывало.
  • Главная составляющая балансировки – Load Balancer, устройство, которое распределяет нагрузку по нескольким серверам.
  • Если Load Balancer даст сбой, то это страшно.

Алгоритмы

  • Алгоритмы балансировки предназначены для разных целей, поэтому важно выбрать именно тот, который будет соответствовать вашим потребностям.
  • Наиболее дешевый алгоритм балансировки – Round Robin. В нем запросы идут по серверам по кругу. Но он же и самый ограниченный. Простейшая реализация Round Robin – Round Robin DNS, в которой балансером выступает DNS-сервер. Такой сервер отвечает на запросы с нескольких IP-адресов и перегрузить его практически невозможно.
  • Другая, более усовершенствованная модификация Round Robin – Weighted Round Robin. По сути, тот же самый Round Robin, только уже учитывается мощность серверов, и запросы распределяются согласно их коэффициентам. Чем больше коэффициент – тем больше запросов.
  • Более «умный» алгоритм – Least Connections. Учитывает количество активных подключений и отправляет запрос туда, где меньше всего соединений. Поэтому и нагрузка на систему намного меньше. Улучшенный вариант – Weighted Least Connections, учитывает еще и весовой коэффициент серверов.
  • Все эти методы обладают досадным недостатком – запросы идут на разные IP-адреса, из-за чего возникают трудности с хранением сессий.
  • Для решения этой проблемы применяется Sticky Sessions. В «липких сессиях» запросы распределяются по серверам на основе IP hash, таким образом пользователь закрепляется за конкретным сервером. Но при отказе сервера можно потерять все данные сессии.

Схемы

  • Балансировка нагрузки действует в основном на транспортном уровне ((TCP, UDP) и уровне приложений (HTTP, FTP, DNS, SNMP, Telnet).
  • Высокоустойчивая схема – схема с двумя балансерами, основным и вспомогательным. Если один вдруг неожиданно прикажет долго жить, второй все вывезет, и система будет работать в обычном режиме.

Программное обеспечение

  • Для TCP и UDP на Linux подойдет LVS (Linux Virtual Server) – коммутатор протоколов четвертого уровня. Этот балансировщик нагрузки и кластеризации довольно неплох, однако не будет работать на более высоком уровне протоколов.
  • Для HTTP и TCP разработан HAProxy – высокопроизводительный прокси и балансировка, который умеет встраивать «cookies» для поддержания «липких сессий» и считается «the best of the best».
  • NGINX – отечественный высокопроизводительный веб-сервер, использующий для балансировки модуль Upstream.

Презентация

Используйте эти приемы – и вы без головной боли наладите работу сервера, а сайты будут просто летать.

«Хочу свой IT-бизнес!»: советы от экспертов фонда «Сколково»

В Барнауле прогремел стартап-тур «Открытые инновации». Во время тура эксперты фонда «Сколково» и успешные предприниматели много говорили о том, что надо и что не надо делать, когда замыслил запустить собственный стартап. Особое внимание уделили IT-бизнесу. Мы там были как соорганизаторы в рамках Ассоциации поддержки инноваций, помогали, оценивали местные IT-стартапы, и, конечно, внимательно слушали советы экспертов. Теперь мы готовы поделиться тем, что узнали.

Надеемся, наш план действий поможет вам сдвинуться с мертвой точки и наконец достать свою прекрасную идею из ящика стола, где она пылится уже давно.

Пользуйтесь и не благодарите.

1. Выбери нишу

К счастью, выбор большой. Хорошие перспективы открываются в альтернативной энергетике, гибридной электронике и разного рода новейших производствах. Или как их называют в научных и бизнес-кругах, advanced manufacturing. И разумеется, в информационных технологиях, которые стремительно проникают во все другие сферы.

Статистика стартапов в мире. Источник: spark.ru

Инвестиции в IT в России. Источник: rvc.ru

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

Александр Фертман, директор по науке, технологиям и образованию фонда «Сколково»:

«Почему крупные предприятия поняли, что есть место для малого и среднего бизнеса? Большие могут концентрировать ресурсы, но они недостаточно подвижны, чтобы решать оперативные задачи. Поэтому и стали вкладывать деньги в малые предприятия. И если вам удастся не только создать свое предприятие, но и продать его, не надо расстраиваться. Постройте следующее. Ваша специализация в технологиях, инженерных навыках, специализация крупных компаний – в строительстве заводов и массовых производств. Каждый должен заниматься своим делом».


2. Учись!

Хороший предприниматель – тот, кто постоянно учится. Причем быстро. И не считает это чем-то зазорным.

Например, в конце 1994 года компания Oy Visual Systems Ltd., которую основал нынешний советник президента по работе со стартапами фонда «Сколково» Пекка Вильякайнен, запустила первый в Финляндии интернет-банк, позволявший оплачивать счета в режиме онлайн. Но никто не поверил, что это удачная идея. Каждого жителя страны (5,5 миллионов человек) пришлось учить, как использовать новинку. На это потребовалось шесть лет. Долгий путь, который все-таки привел к успеху – в 2001 году 97% банковских сервисов страны было оцифровано.

Пекка Вильякайнен, советник президента по работе со стартапами фонда «Сколково»:

«Предприниматели, изобретатели создают нечто такое, чего клиенты еще не видели. Поэтому предприниматель выступает еще и учителем, объясняет аудитории, как работать с его продуктом. Но учить ты можешь только тогда, когда готов учиться сам».

3. Не бойся!

Мы любим прятать свои ошибки. И это нормально. Но мы почему-то всего боимся и поэтому не любим хвастаться и своими успехами.

Делиться своими успехами и достижениями – необходимо.

По мнению Пекки Вильякайнена, такая скрытность – самая слабая сторона российского предпринимательского сообщества. Он уверен: до тех пор пока это будет продолжаться, Россия развиваться не будет, так как связи в сообществе не нарабатываются и обмена знаниями не происходит.

Пекка Вильякайнен, советник президента по работе со стартапами фонда «Сколково»:

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

4. Избавься от мифов

Жизнь предпринимателя окутана разного рода мифами. Кажется, что свой собственный бизнес – это рай на Земле. Ни забот, ни хлопот. Знай, командуй подчиненными, загорая на Бали, и получай прибыль.

Но в реальности все иначе.

Верить в сказки или строить свой бизнес в реальности? Источник: salnikov.ru

Вместо кучи денег – сплошные убытки, налоги, издержки. Вместо невероятного успеха и уважения в обществе – вечный стресс и постоянно дергающийся глаз. Вместо абсолютной свободы – работа 24/7 без сна и отдыха с непрекращающимися форс-мажорами и тушениями пожаров даже среди ночи. Нет, конечно, четырехчасового рабочего дня и полугодовых путешествий добиться можно. Но только через N лет, когда бизнес встанет на ноги, а ты наберешься опыта.

Так что если уж решил стать предпринимателем, особенно в области высоких технологий, и поправить печальную статистику (сейчас предпринимательством в России занимается 18% трудоспособного населения, но по факту – всего 2-3%), то десять раз подумай, нужны ли тебе все эти заморочки.

Ренат Батыров, генеральный директор технопарка «Сколково»:

«Дорога бизнесмена не устлана лепестками роз. Сегодня конкуренция очень высока, она значительно выше, чем еще 10 лет назад. Вы никогда не достигнете уровня «гуру бизнеса», если хотите просто получать прибыль и не вкладывать себя в свое дело. Успех ждет только тех, кто готов к постоянным переменам и работе над собой».

5. Обсуди все на берегу

Это must do. Со своими партнерами по бизнесу обговори все-все-все важные моменты, от того, кто же здесь главный и у скольких человек есть право голоса до правил внутреннего распорядка, общей стратегии и планов на будущее.

Да, процедура не всегда приятная, так как приходится затрагивать многие щекотливые вопросы, в том числе финансовые. Но ее необходимо провести, даже если вы друзья с детства. Вероятность «развода» со скандалом и дележкой имущества присутствует всегда.

Игорь Ковалев, президент группы компаний DI-Group:

«Будьте занудами – проговорите все возможные варианты. Если вы будете готовы к тому или иному варианту, который вы предвосхитили, вам будет намного проще жить. Это и финансовое планирование, и планирование производственной части, и все варианты «если вдруг». Так вы обеспечите себе защиту. С точки зрения интеллектуальной собственности, с точки зрения юридической чистоты и правовых вопросов, защиту от того, что у вас украдут технологию или что команда разбежится. Здесь нет ничего сверхъестественного. Это фундамент, на котором будет строиться ваш бизнес».

6. Делай продукт для всего мира

Эксперты «Сколково» рекомендуют: создавай такой продукт, который бы подходил для всего мира, не только для России.

Обращать внимание на мировой опыт также не возбраняется. Гиганты бизнеса так и делают. Например, «Сбербанк», когда Герман Греф решил поставить его на путь модернизации.

Пекка Вильякайнен, советник президента по работе со стартапами фонда «Сколково»:

«Все успешные предприниматели, с которыми я имел удовольствие общаться, разрабатывают свой продукт так, чтобы он подходил для всего мира. Неважно, большой это бизнес или малый. Если у вас прачечная, вы рубашки стираете, посмотрите, как построены прачечные сети всего мира».

7. Не тормози!

Реальность мира глобальных технологий такова, что если хочешь в него вписаться, то все нужно делать быстро. Нет времени чесать затылок, курить бамбук и тянуть с запуском и выходом на рынок.

Путь от посева до ранней стадии сегодня занимает уже не годы, а месяцы. Источник: Сколково.

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

Пекка Вильякайнен, советник президента по работе со стартапами фонда «Сколково»:

«Советский стиль планирования, мышления в пятилетках, не подходит для предпринимателей сегодняшнего дня. Ты не можешь расписать план для своей компании на пять лет вперед. Технологические циклы стали сегодня столь короткими, что пять или три года могут показаться вечностью».

8. Найди ментора

Ментор для начинающего стартапера – друг, товарищ и брат. При этом он сам должен быть практикующим предпринимателем. Конечно, успешным, чьи советы реально будут полезными (согласитесь, зачем вам ментор-неудачник?).

Ключевой момент – при поиске ментора, не найти «дементора», который высосет из вас все жизненные соки. Или разведет на бабки. Такое тоже бывает.

Хороший ментор не требует платы за свою помощь, потому что его главный интерес – вырастить себе коллегу или будущего партнера. Но и ты, в свою очередь, тоже не можешь от него что-либо требовать. По сути, он тебе ничего не должен. Ментор не сделает твой бизнес успешным по мановению волшебной палочки, а только лишь подскажет, что лучше предпринять.

Ментор поможет вам вырасти, но не заменит ни одну из частей команды.

Хорошие менторы на дороге не валяются. Их можно найти в специальных организациях, которые активно развивают институт наставничества:

  • Ассоциация менторов фонда «Сколково»
  • Институт наставничества Бориса Ткаченко
  • Международный форум лидеров бизнеса (IBLF Russia)

И, конечно, стоит присмотреться к бизнес-тусовке и в своем родном городе, участвовать в мероприятиях и движухах. Как знать, может именно там ты встретишь своего ментора.

Анна Брусницына, тренер-эксперт фонда «Наше Будущее»:

«Когда у вас есть наставник, выживаемость бизнеса увеличивается до 80%. Он сэкономит вам десять лет жизни, пока вы будете раскачиваться. Конечно, сейчас в мире полно информации в открытом доступе. Можно узнать что угодно откуда угодно. Но наставник поможет вам разобраться в этом потоке информации и вычленить самое важное. Даст вам именно ту информацию, которую вы сами захотите усвоить».

9. Привлекай инвестиции

Очень важный пункт. Без капитала трудно стартовать. Ведь нужно и зарплату сотрудникам платить, и помещение оборудовать, и многочисленные издержки покрыть.

Если ты – не наследник богатых родителей, не владеешь нефтяной вышкой или если у тебя нет специальных накоплений, финансовый вопрос может встать довольно остро.

Что же делать? Откуда брать деньги на развитие бизнеса?

Пользуйся возможностями специальных институтов

На помощь начинающему стартаперу спешат многочисленные специальные институты. Все вместе они образуют так называемую «экосистему» поддержки предпринимательства. Если кратко, то в нее входят:

  • Фонд содействия инновациям
  • Фонд развития интернет инициатив (ФРИИ)
  • Российская венчурная компания (АО «РВК)
  • Стартап-акселератор Generation S
  • Национальная технологическая инициатива (НТИ)
  • Фонд «ВЭБ Инновации»
  • Российский фонд прямых инвестиций (РФПИ)
  • Корпорация МСП
  • АО «Российский экспортный центр»
  • Группа РОСНАНО
  • Фонд развития промышленности

Как видно, выбрать есть из чего.

«Экосистема» поддержки предпринимательства в России. Инфографика предоставлена фондом «Сколково»

Все вышеперечисленные институты – федеральные и очень серьезного уровня. И, соответственно, требования у них тоже очень высокие. Так что с проектами а-ля «написал вчера на коленке» к ним лучше не соваться.

Подобные институты есть и в регионах, и у нас, в Алтайском крае. У них градус требований уже пониже, однако тут тоже не стоит приходить с чем-то сомнительным.

Всегда помни: так просто денег на твой супер-пупер-мега-класный-офигительный проект никто не даст. Даже если делаешь зарядку по утрам и ешь брокколи на завтрак. Даже если прочитал все книги про Стива Джобса. Даже если патриот.

Инвестиции, чаще всего обличенные в форму грантов, институты поддержки раздают не всем подряд, а только тем, кто докажет, что реально достоин таких вложений.

Для этого потенциальный «грантополучатель» должен пройти все круги ада целый ряд специальных процедур.

Разберем на примере.

Допустим, фонд «Сколково» (который, кстати, тоже входит в «экосистему» и поддерживает предпринимателей грантами).

Сначала определись с тем, какой именно грант от фонда ты хочешь получить. Их в фонде три:

  • Микрогранты
  • Минигранты (до 5 миллионов рублей)
  • Большие гранты (от 5 до 300 миллионов рублей)

Они разительно отличаются и по размерам финансирования, и по критериям отбора проектов, и по срокам рассмотрения заявки. Например, мы решили, что нужен минигрант.

Подаешь заявку, ждешь примерно 50 дней, когда вынесут вердикт – подходит ли твой проект для финансирования в принципе. Если ответ положительный, то потом начинается страшное. Экспертиза.

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

Все это внимательно, буквально до мелочей, изучают эксперты фонда «Сколково» и решают, давать деньги или нет.

Проекты, прошедшие через экспертизу, получают не только гранты, но и статус резидента «Сколково».

Александр Малявин, старший специалист грантовой и экспертной поддержки фонда «Сколково»:

«Деньги – это не главное. Не надо расценивать фонд как какой-то «денежный мешок». В «Сколково» есть огромное количество инструментов, например, как менторские программы, бизнес-ангелы, консультационная и информационная поддержка, технологические сервисы. Если вы будете грамотно жонглировать этими инструментами, то у вас будет все, что нужно для успешной реализации проекта».

 

Пекка Вильякайнен, советник президента по работе со стартапами фонда «Сколково»:

«Часто ко мне как к инвестору приходит человек и говорит: «Пеккушка, дай миллион долларов на три года, через три года позвони, помощь не нужна». Я его спрашиваю: «Ты точно знаешь, как бизнесом заниматься?». Он говорит: «Да, конечно, я патриот, прочитал книжку Стива Джобса, готов зарабатывать деньги». В таких людей я никогда не инвестирую. Этот человек не понимает природу инноваций и бизнеса вообще».

10. Действуй!

Just do it. Пусть это и звучит как избитая цитата из бизнес-паблика про успех. Сидя на диване, мировую корпорацию не сколотишь.

Так что просто действуй. Без страха, без упрека и с хорошей долей здравого смысла.

И, как знать, может следующим Стивом Джобсом или Илоном Маском станешь именно ты.

Мужчины vs Женщины: чьи поздравления лучше?

23 февраля и 8 марта – горячая пора в «Энтерре». В это время наш дружный коллектив делится на два воинствующих лагеря, и один стремится превзойти другой в оригинальности поздравления, обойдясь без всем надоевших носков и кастрюль.

Надо сказать, и в этом году «гонка» креативных поздравлений развернулась нешуточная. ИТ-леди с таинственным видом шептались по углам и часто скрывались в переговорке. А парни вообще сначала припугнули, что забыли, ничего не приготовили и «кина не будет». Но в итоге все было хорошо – оба торжества прошли с шиком и блеском, как мы любим.

 

И все-таки не настолько мы разные, ведь думали синхронно (каждодневная работа бок о бок сказывается).

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

Итак, да начнется великая битва! И пусть удача всегда будет с вами!

Соотношение сторон по количеству человек было неравным – примерно 85/15 в пользу мужчин, оттого борьба была крайне напряженной. И очень захватывающей в то же время.

Но это все лирика. Пройдемся по пунктам.

Армия

  1. Цель
    Нашим мужчинам предстояло на время стать солдатами и пройти военную подготовку. И, конечно, встать на защиту родины.
  2. Приветствие
    «В соответствии с федеральным законом ФЗ-2017-02-32 «Об отмечании праздников», принятым 05.10.1995 г., вы вызываетесь на ежегодные учения, которые призваны поддерживать уровень готовности весело проводить время и участвовать в стратегически важных мероприятиях по укреплению боевого духа и повышению настроения. Явка обязательна».
  3. Пункт назначения
    Парни «Энтерры» прошлись по «маршруту победы» и посетили знаковые города воинской славы – Москву, Санкт-Петербург, Севастополь, Смоленск, Владивосток, Калининград и другие.
  4. С собой
    Для идентификации новоиспеченным солдатам роздали жетоны – все как в армии.
  5. Антураж
    Цвет хаки был довольно популярен в этот день в офисе, который превратился в настоящую казарму, только чуть более праздничную: стены покрылись маскировочной сетью, картой и флагами разных стран, а сотрудники облачились в тельняшки и камуфляж.
  6. Сленг
    В офисе на 23 февраля воцарилась армейская субординация. Мы разговаривали друг с другом исключительно на языке армейского жаргона. Например, начальство приветствовали фразой: «Здравия желаем, товарищ командующий!».
    Также в обиход вошли позывные «Равняйсь!», «Смирно!», а задачи снимались долгожданным «Вольно!».
  7. Разделение на команды
    Защитники родины поделились на три команды традиционным армейским методом – с помощью расчета на «первый», «второй», «третий», который и предопределил судьбу солдат.
  8. Испытания
    «Юность в сапогах» парни вкусили по полной программе! Они и приседали, и отжимались, и отдавали честь, и пели военные песни, и научились оказывать экстренную первую помощь. Также солдаты Энтерры прошли обучение военной грамотности: вспоминали изначальные наименования оружия (все ведь помнят, что «Катюша» – это не только песня?), расшифровывали аббревиатуры и объясняли военные термины с помощью жестов. Кстати, аббревиатуры разработчики переиначили на своей манер. Например, «ПМ» (пистолет Макарова) вдруг стал «проджект-менеджером», а «КП» (контрольный пункт) – «коммерческим предложением».
  9. Смогли парни и пострелять вдоволь и поиграть в настоящую войнушку. Это был бирпонг в стиле милитари, детка! Запуливая теннисные мечи в пластиковые стаканчики противников – своеобразный аналог авиационных бомб и вражеской техники – они потренировались в ловкости и меткости.
  10. Угощения
    Все по протоколу – из сухпайка, который в полевых условиях нужен любому солдату. Кстати, угощения из этого набора продуктов оказались довольно приятными на вкус и порадовали всех.
  11. Итог
    Парни проявили мужество и отвагу и достойно справились со всеми испытаниями! Военная подготовка пройдена, дембеля получены! Родина защищена!

Круиз

  1. Цель
    Девушкам повезло больше – им не нужно было защищать родину и охранять границы, а отправиться в круиз в южные страны. Просто мечта! Но изрядно напрячь мозг и размяться все-таки пришлось.
  2. Приветствие
    «Добро пожаловать на борт, дорогие дамы! Просим вас занять места согласно купленным билетам. Желаем вам приятной поездки!».
  3. Пункт назначения
    Маршрут пролегал по экзотическим южным странам – Гаити, Ямайке, Мексике, Кубе и Гондурассу.
  4. С собой
    Перед отправлением каждая девушка получила билет и должна была заполнить необходимые документы – загранпаспорт, визу и медицинский полис.
  5. Антураж
    Офис на Международный женский день стал бортом корабля, бороздящего моря и океаны. Представительницы прекрасного пола с энтузиазмом крутили штурвал, били в колокол и фотографировались возле огромного якоря на входе. Южный колорит убранству придали пальмы и разноцветные рыбы, внезапно выросшие из пола и потолка.
  6. Сленг
    «Отдать швартовы!», «Держать курс в открытое море!», «Свистать всех на верх!», «Йо-хо-хо, и бутылку рома!», – то и дело звучало в этот день в офисе. Морской сленг идеально подошел сотрудникам компании.
  7. Разделение на команды
    Немногочисленных девушек поделили на две команды. Кто в какой – решил цвет волшебного талончика. Некоторая часть вытянула голубой, другая – зеленый, так и сформировались команды.
  8. Испытания
    Как только раздалась команда «Отдать швартовы!», начались морские приключения. Отдых у девушек выдался активный. На Гаити они не сразу повалялись на пляже, а сначала командами изготовили гамаки из газет. На Ямайке – приготовили коктейли из кокосов.На Кубе – давили вино из винограда и помогали коку – чистили яблоко по международным стандартам, одной лентой. В Гондурассе – «свистали всех наверх», исполняя известные песни на морскую тематику, используя свистки. Ну и, конечно, какой праздник без конкурса мокрых маек.
    Во время путешествия на корабле у туристок проверили все документы – паспорт, визу и медицинский полис. Для этого им нужно было ответить на вопросы викторины и вспомнить факты из географии, биологии и ОБЖ, а также прокачать скилл по разгадыванию ребусов и шарад.
    Самый главный сюрприз ждал девушек в Мексике. Там их встретили двое мучачос, которые спели мексиканские частушки под гитару. Это был, безусловно, гвоздь всего путешествия. Экстаз, феерия! Ради такого и сотню километров преодолеть можно. Девушки восхищенно им аплодировали и улюлюкали, требуя продолжения концерта.
  9. Угощения
    В лучших традициях круизных лайнеров – фрукты и шампанское
  10. Итог
    Пусть и не кругосветное, но путешествие, девушки совершили, познали новые города и страны и набрались впечатлений. И заодно спасли человека, упавшего за борт, и помогли мексиканцам запасти бобы, которые составляют основу их рациона.Такой приключенческий круиз-квест девушек «Энтерры» привел в безграничный восторг. Видимо, в ИТ-компании идут работать девушки, жаждущие острых ощущений

Так чьё же поздравление оказалось лучше? И тем, и другим праздники, организованные противоположной стороной, пришлись по душе. Дамы самозабвенно хлопали в ладоши весь круиз, а парни были рады размяться «по-солдатски» после долгого сидения на рабочем месте и с упоением играли в бирпонг.

 

Получается, ничья!

P.S. Во время подготовки ивентов мы не забили на наши текущие проекты и не спустили весь наш креатив на праздники. Все было выполнено качественно и в срок, и как всегда, с нужной долей позитива и фантазии.

Как оценить стоимость разработки при управлении проектом по Agile?

Мы не смогли пройти мимо крутейшей статьи по Agile от главы проектов Toptal. А чтобы было легче ей поделиться, мы ее перевели. Просим любить и жаловать!

Одна из самых сложных вещей при разработке программного обеспечения – определить, как долго потребуется работать над новым продуктом и сколько это будет стоить. Почему это так сложно? Ответ не слишком очевиден.

Оценка стоимости нового продукта в принципе сложна, а люди не слишком хороши в точном предсказании событий. Ни один проект не повторяет другой, каждый уникален не только в своих целях, но и в бесчисленных особенностях, которые его формируют. Часто простая на первый взгляд проблема оказывается намного сложнее изнутри, а порой требует серьезных технических доработок для своего решения. И, несомненно, в любом проекте всегда есть множество неизвестных, которые возникают уже в процессе работы над ним.

К тому же и одинаковых людей не бывает – ни заказчиков, ни разработчиков, ни пользователей. Мы все приступаем к работе со своим багажом знаний, опыта, ценностей, ожиданий, готовности к риску и способности адаптироваться.

Написание качественного ПО – это хлеб с маслом для разработчиков; создание же классного программного продукта – намного более сложное предприятие для всех, кто в него вовлечен.

Разработка крутого ПО требует идеального баланса

Однако, когда мы говорим о ПО, понимание сроков и стоимости является ключевым для принятия стратегических бизнес-решений. Это верно и для стартапов, и для сложившихся бизнес-проектов, и для оптимизации бизнес-процессов. Затраты времени, возврат инвестиций и полученные преимущества могут помочь бизнесу или разрушить его. Логичны вопросы: что мы получим за наши деньги? Можем ли мы предсказать издержки? Сколько будет стоить создание продукта, который мы хотим? Когда мы его запустим? Получим ли мы качественный продукт в результате? Поможет ли он развитию бизнеса? Принесет ли он нам дополнительную ценность?

Итак, как же быть с оценкой масштабов, сроков и стоимости проекта? Давайте исследуем возможности Agile, и то, что делаем мы в Toptal.

Традиционный подход к цене договора и оценке

Традиционно, если вы не используете Agile и создаете ПО с определенным функционалом, для определенной сферы, то допускаете вариабельность сроков и затрат. Это приводит к проблемам:

1. Как вы можете понять, что создаваемый в рамках проекта функционал – именно тот, который наилучшим образом подходит вашему бизнесу или заказчику? Чаще, чем можно представить, требования к функционалу и области применения меняются, а требования к результату определяются уже в процессе работы над проектом, причем это касается необходимых и обязательных компонентов.

2. Когда затраты не определены, мы теряем контроль над возвратом инвестиций, к которому стремимся. Рост стоимости часто возникает из-за не просчитанных рисков или изменивших требований, что заставляет разработчиков расширять команду, чтобы уложиться в заданный срок, или увеличивать затраты времени на разработку. Ни то, ни другое нежелательно.

3. Когда не определено время, мы не можем контролировать свою позицию на рынке. Возможно, мы пропустим важную для индустрии дату или конкуренты запустят аналогичный продукт раньше нас – в любом случае мы теряем конкурентное преимущество, которое могло быть у нашего продукта.

Все следствия вариативных сроков и стоимости отрицательные и нежелательны.

Конечно, большинство заказчиков пытаются решить все эти проблемы. Однако вероятность этого близка к нулю.

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

 

Подход к проектам разработки в Agile

Стоимость – это производное времени и людей (участников команды). Добавьте время, и стоимость вырастет за счет того, что вы дольше задействуете специалистов. Добавьте участников команды, и стоимость вновь вырастет, при этом ценность для бизнеса – нет. Это то, чего мы стремимся избежать. Поэтому принципы Agile предполагают фиксированные затраты времени и размер команды при вариабельности масштабов.

Что лучше звучит и вызывает больше доверия у заказчика – фиксированная или переменная стоимость? При этом важно, чтобы продукт исполнял свое предназначение и удовлетворял нуждам заказчика. Нет никакого смысла в том, чтобы потратить точное количество времени и денег и получить инструмент, который невозможно эффективно использовать.

Поэтому контракты, созданные по методологии Agile, предполагают следующие опции:

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

Ранняя остановка разработки. Это позволяет заказчику остановить работу над проектом на любой стадии, если результат уже получен и дальнейшая разработка не ускорит возврат инвестиций, а только увеличит затраты на работу команды. Преимущество для покупателя в этой ситуации заключается в скорейшем завершении работы над проектом, если он имеет весь необходимый функционал и вполне жизнеспособен. Чаще всего, разработчик получает при этом компенсацию рисков, например, в размере 20% от оставшейся стоимости договора.

Гибкие изменения. Изменения заложены в ДНК разработки по методологии Agile. Мы ожидаем, что в самом начале не знаем всего необходимого для успеха проекта. Поэтому мы поощряем изменения, основанные на релевантных данных и обратной связи. Они помогают убедиться в том, что мы работаем в правильном направлении. В конце каждой итерации мы можем отказаться от функционала, который больше не нужен или не является приоритетным, или заменить его. И если новый имеет ту же стоимость, то это не повлияет на цену договора. Если же стоимость будет ниже, то мы сможем добавить что-то, от чего ранее решили отказаться. Это возможно в любое время, если команда проекта и заказчик поддерживают тесные и доверительные рабочие взаимоотношения.

Дополнительные работы. В жизненном цикле проекта часто выявляются опции, которые невозможно реализовать в рамках фиксированной стоимости контракта. В таком случае возможно добавить новые этапы работы над проектом, каждый из которых получит отдельную оценку стоимости и времени.

Гибкие сметы. В рамках работы по Agile можно создать два варианта гибкой сметы проекта: с гибкими сроками или с гибким функционалом. Первый позволяет сказать, к примеру, что работа над проектом или его частью с указанным списком опций займет от 12 до 16 недель. Однако, увеличение сроков приводит к росту затрат на работу команды, которая не может в это время приступить к работе над новыми проектами. Поэтому мы в Toptal предпочитаем использовать гибкий список опций. Мы гарантируем, что продукт будет иметь определенный минимум функционала, достаточный для достижения целей заказчика, и будет разработан строго в указанные сроки.

Стоит помнить, что функционал всегда можно расширить позже. Например, когда вы начнете получать прибыль, увеличите количество пользователей или снизите издержки использования. В любом случае гораздо проще обосновать затраты ресурсов и времени, если проект уже показал возврат инвестиций и свою ценность для бизнеса.

 

Наш подход к стоимости ПО и ценообразованию

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

Чтобы произвести оценку и зафиксировать стоимость проекта, мы предпринимаем следующие шаги:

1. Начальная общая оценка

На этой стадии мы очень мало знаем о том, каким получится проект. Было бы крайне самонадеянно считать, что уже в начале работы мы точно знаем, какие опции нужны нашим заказчикам и пользователям.
Поэтому мы начинаем с общего документации проекта и общего набора эпиков (основных крупных опций), определяя его специфику, исходя из целей и нашего видения.

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

Б. Набор эпиков(epic). Не углубляясь в детали, определите функционал, который необходим для продукта. Это будет структурированный «список покупок», который станет скелетом вашего продукта.

В. Анализ MoSCoW. Это техника, которая позволяет определить, что именно делает продут жизнеспособным, а что необязательно, но просто хочется в нем реализовать. Функции, которые вы определяете как Must – то, что будет привлекать и удерживать пользователей продукта. То, что вы обозначите как Should, будет радовать и удивлять покупателей, однако это можно будет добавить и позже. Функции Could не добавляют значительной бизнес-ценности и не ускоряют возврат инвестиций, поэтому будут в наименьшем приоритете. Наконец, Won’t могут стать важными в один прекрасный день, но на этой стадии развития проекта они не нужны. Таким образом, вы можете заодно определить и потенциал продукта.

 

2. Предложение

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

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

Как мы уже упоминали, в начале работы над проектом мы очень мало знаем о том, что должно получиться в итоге. Мы осознанно размываем описание функционала и масштабов, в противном случае мы должны точно знать, что от нас требуется. Оценка стоимости и сроков на этом этапе будет наименее точной, но она уже позволит понять, стоит ли связываться с проектом.

Предложение – это первый инструмент определения продолжительности и стоимости работы. Как только оно принято, мы можем двигаться дальше к фиксированной цене.

3. Планирование релизов

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

А. План продукта (product backlog). Это список пользовательских историй, основанный на уже существующем списке эпиков. На этом этапе работу ведет уже выделенная команда проекта, проектный менеджер и заказчик, и в результате они получают более значимый документ. Каждая история в новом списке представляет некоторую часть бизнес-ценности, которая заключается в продукте. На этом этапе мы по-прежнему не слишком углубляемся в детали, нам не нужны какие-либо качественные критерии, мы не хотим знать, будет ли кнопка синей или зеленой. Нам просто нужно знать: будет кнопка, которая запускает выполнение определенной задачи.

Б. Оценка. Когда у нас есть список пользовательских историй, команда проводит его оценку, используя технику «Покер-планирование» (Planning Poker). Это очень полезная техника, гарантированно дающая быстрый и надежный результат, основанный на экспертном мнении и оценке аналогов. Каждой истории в списке присваивается определенное число очков в зависимости от масштабов и сложности реализации. Доступны и другие техники оценки Agile, например «Идеальные дни» (Ideal Days).

В результате этой процедуры мы получим точную оценку масштабов проекта и установим зависимости между опциями. Масштаб – это сумма очков всех пунктов, например, 120.

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

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

Г. Планирование релиза. К этому моменту мы определили, каким должен стать наш продукт и каких он масштабов.

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

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

Прежде чем начать, мы должны удостовериться, что все одинаково понимают, что значит «готово». Это некий набор критериев, который является полным для заказчика и одновременно определяет требования к продукту для релиза.

Для начала, мы берем общее количество очков проекта, определенное на стадии журнала продукта, и делим его на скорость работы команды. Обычно скорость определяют как диапазон, но мы для простоты используем одно число. В работе мы используем двухнедельные итерации, поэтому наша скорость определяется как количество работы, которую мы можем выполнить существующей командой за две недели. Если наш проект имеет 120 очков, а мы ожидаем, что за две недели выполним 20 очков, то общее время разработки будет равняться 12 неделям, или шести итерациям. К этому мы добавляем нулевой спринт в две недели и еще один спринт на подготовку релиза. Итого, наш проект будет длиться 16 недель. Есть техники, которые позволяют создать достаточный буфер для рисков при планировании, и их мы обсудим ниже. Но если коротко, то буфер мы используем, чтобы управлять рисками неопределенности и прийти к соглашению о том, какое количество очков проекта мы обязаны предоставить. Итог может варьироваться от 90 до 150 очков, при этом 90 – это тот минимум, который необходим для жизнеспособности продукта.

Когда проект должен быть завершен к конкретной дате, например, за 10 недель, команда должна определить, какой объем журнала продукта можно реализовать за это время. Если мы ожидаем разработку 20 очков за этап, плюс нулевой спринт и релиз, то будем стремиться к реализации 60 очков к концу работы над проектом. И вновь мы должны учесть возможные риски, создав для них разумный буфер, что в итоге выльется в диапазон от 45 до 75 очков выполненной работы к моменту релиза. В 45 очков мы должны уложить минимальный функционал, необходимый для ценного и жизнеспособного продукта. Возможно, при таком сценарии вы сочтете разумным расширить команду, чтобы увеличить скорость разработки.

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

4. Фиксированная цена договора

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

Цена договора предоставляется вместе с графиком работ и согласованным графиком платежей.

Если мы готовы следовать духу разработки по Agile – доверять, общаться, сотрудничать, то все перечисленные выше шаги позволят нам создать условия, в которых проект будет с максимальной вероятностью разработан в указанное время в рамках бюджета. Конечно, нельзя исключать случаи, когда разработка займет больше или меньше времени, и в этих ситуациях важно сохранять максимальную прозрачность процессов.

Техники оценки

Для планирования и оценки по Agile есть множество техник, которые команда разработки может использовать для уверенности в объемах, сложности, продолжительности и стоимости проекта. Вот некоторые из них, которые используем мы для наших разработок программных продуктов.

Оцениваем масштаб

Масштаб проекта указывает на его область применения, сложность, габариты, риски и значимость. Если проводить аналогии, то нам нужно понять, что мы строим – Эйфелеву башню или Великую китайскую стену. Эйфелева башня – это высокая, тяжелая и сложная структура, созданная в тесной городской среде. А Великая китайская стена – сравнительно простая, но длинная и устойчивая структура, которая тянется на многие мили по холмистой местности. И хотя оба проекта можно назвать большими, их назначение, сложность, габариты и значимость различны.

Очень важно управлять ожиданиями при оценке. Она не является предсказанием, обещанием или гарантией. Когда речь идет об общем масштабе, продолжительности и стоимости, мы всегда работаем с диапазонами, чтобы учесть риски, неопределенность и неизвестные.

Описания, которые представляют функционал вашего продукта, по отдельности измеряются и оцениваются с помощью очков или идеальных дней. Общее количество очков или дней определяет масштаб проекта.

Очки

Очки – это единицы измерения, демонстрирующие общий объем пользовательских историй. Этот размер при оценке включает все аспекты дизайна, разработки, тестирования, ревью кода, интеграции, и так далее.

Размер каждой истории соотносится с размером всех других. Например, опция А «стоит» 1 очко, опция Б – два, а опция В – три. Таким образом, опция В в три раза масштабнее, чем А, и в полтора раза, чем Б.

Из суммы очков всех историй в журнале продукта мы получаем общее число очков проекта.

Идеальные дни

Эта технология оценивает масштаб в днях. В ней исключены любые отвлекающие процессы – перерывы, планирование, чтение почты и все, что не имеет отношения непосредственно к созданию проекта. Она концентрируется на сроках выполнения задачи при постоянной и непрерывной над ней работе.

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

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

Способы оценки

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

Оценка по аналогии. Мы берем две отдельных опции и решаем, что одна из них больше или меньше, чем другая. Мы можем взять отдельную историю и согласиться, что она невелика, и если мы используем очки историй, то назначим ей два очка. Следующая может быть больше предыдущей, и ей мы дадим пять очков, если решим, что она больше в два с половиной раза.

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

Покер-планирование. Об этой технологии писали немало. Я упоминал ее в своем блоге. Один из лучших ресурсов для ее понимания вы найдете также по ссылке.

Если коротко, то она комбинирует экспертные мнения, аналогии и командную работу в одном простом, быстром и надежном процессе.

 

Скорость

Скорость – это оценка способности команды выполнять некоторый объем работы в течение заданной итерации (спринта).

Она выражается с помощью диапазона, например, 23-32 очка историй на спринт, особенно на начальных стадиях работы над проектом. В основном это потому, что даже если та же самая команда раньше работала над похожей задачей, всегда сложно точно предсказать скорость работы. Обратите внимание, мы говорим именно о скорости команды, а не отдельного человека!

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

Когда мы запускаемся, то вынуждены определять диапазон скорости, располагая небольшим количеством данных. Мы можем использовать исторические данные, если совпадают команда и проблематика, что случается весьма редко. Мы можем провести тестовую итерацию с помощью команды проекта, но это весьма затратно и не работает, если решение о начале работы еще не принято. Или же мы можем прогнозировать.

Прогноз скорости включает оценку отдельных спринтов с помощью очков историй и разбивку их на отдельные задачи, необходимые для реализации истории. Мы оценим количество часов, которые нужны для завершения каждой задачи, включая дизайн, разработку, тестирование, и так далее, и предположим, какую работоспособность будет иметь команда на протяжение отдельного спринта. Работоспособность в 70% в случае свободной от других задач команды подойдет для начальных расчетов. Поэтому, в простых ситуациях, мы рассчитаем количество часов для команды следующим образом:

  1. 4 участника команды * 2 недели * 40 часов в неделю = 320 часов
  2. Умножаем на 70% = 224 часа
  3. Добавляем все задачи, нужные для реализации, пока не дойдем до 224 часов
  4. Суммируем очки историй для выбранных задач и получаем скорость, например, 36
  5. Применяем коэффициент в 20% в обе стороны и получаем оценочный диапазон скорости в 29-43 очка

Скорость обычно варьируется в течение первых 2-4 итераций, а затем стабилизируется в рамках небольшого диапазона очков. И если наш начальный диапазон был 29-43 очка, то к четвертой итерации он выйдет на плато, например, 34-38. Это позволит нам с большей точностью предсказать дату завершения проекта.

Планируем буферы для рисков и неопределенности

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

Мы учитываем эту неопределенность, или риски, с помощью буфера в графике работы. Он соотносится с вероятностью ошибки при оценке и неизвестными, которые мы не можем предвидеть, начиная работу.

Обычно буфер бывает двух видов: функциональный и временной. И так как мы чаще всего обозначаем фиксированную стоимость и срок релиза, то предпочитаем использовать функциональный буфер.

Такой подход дает нам надежную стратегию управления рисками и вызывает доверие у заказчиков. Они имеют точные ожидания относительного того, что получат по завершению проекта.

Функциональные буферы

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

Таким образом, заказчик решает, какие приоритетные опции из журнала продукта наиболее важны – например, на общую сумму до 100 очков историй. Затем он может добавить дополнительный функционал еще на 30 очков. Таким образом, команда будет планировать разработку «весом» в 130 очков, с обязательным минимумом в 100, к установленной дате релиза и по фиксированной цене договора.

Некоторые мысли в завершение

Agile может оказаться довольно сложной для полного принятия и использования методологией. Особенно это касается чувствительных тем, таких как цена, сроки и размеры проектов. К сожалению, я из первых рук знаю, что некоторые клиенты хотят сначала зафиксировать абсолютно все, а потом только рады обвинять поставщиков, когда проект выходит из заданных рамок. В равной степени есть и разработчики, которые упираются в землю, принимают жесткую позицию и отказываются что-то менять в ответ на запрос заказчика. Agile основана на доверии, хороших взаимоотношениях и бесперебойной коммуникации. Эти ценности должны разделять все стороны, и тогда они смогут работать над проектом, получая взаимную пользу, удовлетворение и успех. Открытость, конструктивное отношение к сотрудничеству и переговорам – это лучший способ не испортить партнерство.

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

Мы знаем, что объем работы меняются, возникают новые ранее неизвестные факторы или то, чего изначально хотел заказчик, изменилось, порой радикально. Адаптивный подход к ценообразованию, планированию и оценке позволяет клиентам получить именно такой продукт, который требует их рынок. А разработчику он позволяет быть гибким, креативным и одновременно эффективным. Ключ ко всему – максимальное взаимодействие между заказчиком и разработчиком при переговорах.

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

Заключение

Я надеюсь, что этот материал поможет вам при планировании, оценке и определении стоимости проекта разработки по Agile. Все перечисленные подходы и техники созданы, чтобы построить доверие в команде и вселить в заказчика уверенность относительно сроков и цены его будущего продукта. И, конечно же, чтобы уверенно принимать решение о начале работы.

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

Автор материала – Paul Barnes, глава проектов Toptal

Оригинал был опубликован в блоге Agile-Nightmare.

Бронь крепка. Как работает приложение для заказа столиков в ресторанах двух столиц

 

Один из наших клиентов взялся решить проблему онлайн-бронирования столиков для ресторанов и кафе сначала в Москве и Санкт-Петербурге, а затем – и по всей России. Как мы разрабатывали приложение для заведений, работающих с сервисом – читайте ниже.

 

Факт: компания в сфере услуг, которая не способна обеспечить доступ к этим услугам через интернет, теряет до половины потенциальных клиентов. Зайдя на сайт и не увидев способа сделать онлайн-заказ, каждый второй уйдет в поисках чего-нибудь поудобнее.

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

Многие минимизируют издержки с помощью простого трюка: «Оставьте свой номер телефона, и мы вам перезвоним». Это безусловно на 200% лучше, чем ничего – но у такого решения масса слабых мест.

Один из наших клиентов взялся массово решить проблему по крайней мере для ресторанов и кафе. Сервис RestAdviser дает ресторанам возможность организовать онлайн-бронирование на своей площадке, управлять рассадкой гостей и делать многие другие полезные вещи. Кроме того, сервис работает и для пользы непосредственно клиентов – собирает отзывы и рейтинги с разных ресурсов (Афиша, Restoclub, TripAdvisor), облегчая процесс выбора и минимизируя время на серфинг.

Сегодня RestAdviser работает в Москве и Санкт-Петербурге, но у сервиса есть долгосрочный план по выходу на федеральный уровень.

Энтерре RestAdviser заказал разработку мобильного приложения для своих клиентов – владельцев ресторанов. По задумке, администраторы и другие специально обученные люди в приложении видят онлайн-бронирования, подтверждают их, выбирают столики для гостей и управляют всем этим богатством. В качестве платформы выбрали iPad.

Задача

Удобное и функциональное приложение для ресторана. Оно должно уметь:

  • создавать залы, столики, прочие важные элементы с помощью конструктора,
  • получать данные о бронировании столиков на сайте и отображать их в приложении,
  • при необходимости вносить изменения в бронирования.

Логика работы приложения

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

Как осуществляется бронирование?

Как работает бронирование столиков в приложении

Конструктор в приложении – визуальный. Клиент-ресторан может создавать неограниченное количество залов, столов, указывать расположение важных для гостей элементов – сцены, окон, стен, дверей. Таким образом пользователь, который осуществляет бронирование, может выбрать лучший для себя вариант. Расстановку столов ресторан при необходимости может менять – например, если забронирован большой банкет.

Бронь можно перемещать с одного стола на другой.

С разработкой приятного и удобного конструктора у нас не было особых проблем, и это повод для гордости. В нашем портфолио мобильных приложений уже есть проекты, для которых очень важен визуальный и интуитивно понятный UI – например, векторный редактор графики Grapholite и конструктор баз данных Mobi DB. Так что нам оставалось применить имеющийся опыт к задаче.

А еще заказчик попросил нас сделать красивый календарь. Мы некоторое время думали, а потом нашли готовое и изящное решение на Хабрахабре. Очень рекомендуем!

Маленькие, но очень важные детали

В процессе разработки перед нами возникло три важных задачи.

  1. Сервис для ресторанов от RestAdviser – платный, однако мало кто готов покупать кота в мешке.
    Поэтому оценить функционал приложения клиент может бесплатно и без авторизации: поиграть с конструктором, проверить удобство, примерить на свое заведение. Однако синхронизация с сервером (а значит, и фактически бронирование столов) доступны только авторизованным, то есть заплатившим пользователям.
  2. Потенциальный конфликт бронирований, который может возникнуть, когда один и тот же стол забронировали одновременно (в нашем случае в течение пяти минут) через сайт и приложение, или через SMS.
    Представим, что есть очень популярный ресторан с ограниченным количеством крайне удобных столиков, которые нравятся всем. В этом случае на столе остается последняя бронь. А вытесненная попадает в специальный список нераспределенных заявок, которые требуют вмешательства администратора ресторана.
  3. Путаница со временем. Напоминаем, что сервис планирует выйти на федеральный уровень, а часовых поясов в России аж 11. Еще их периодически сдвигают, меняют, переводят стрелки.
    Чтобы избежать путаницы, мы сделали вот что. На сервере всегда московское время. Приложение об этом знает, и отображает пользователю настраиваемое время работы ресторана (местное). При синхронизации учитывается возможная разница во времени.

Что получилось?

Скриншот приложения
Скриншот приложенияСкриншот приложения