В данной статье я поделюсь опытом, накопленным в ходе работы тимлидом в тревел-стартапе на рынке США. Я не буду рассказывать о тонкостях работы с легаси кодом и организации команды. В статье будет покрыты организационные вопросы работы в условиях неопределенности и высокого риска.
Бэкграунд о компании
В двух словах компания продает продукт, который агрегирует информацию и цены по воздушным перелетам и отелям от партнеров. Цель — показать клиенту наиболее дешевые варианты перелета и проживания. Автоматизация и информатизация многих партнеров, предоставляющих билеты и варианты проживания, находится на низком уровне, что усложняет интеграцию с ними. При этом продукт ориентирован на бизнес пользователя, которые не лояльны к ошибкам в приложении. Особенно ошибок, происходящих при оплате.
Работа в условиях неопределенности
Неопределенность заключается в том, что зрелость большинства партнеров, предоставляющих API для получения информации о перелетах, низкая. Что усложняет процесс разработки интеграции с ними. При этом бизнес просит реализовать интеграцию, с соблюдением следующих условий:
- обоснованные сроки разработки
- стабильность и качество решения
- поддержка и сопровождение решения
При интеграции с некоторыми партнерами обеспечить эти три требования достаточно сложно, так как скорее всего нет технической документации. Также может не быть контактного лица, которое может предоставить информацию. Достаточно сложно обеспечить стабильность решения и обработку ошибок (так как эти ошибки не специфицированы). В связи с этим зачастую усложняется поддержка решения.
В условиях неопределенности с начала разработки необходимо на каждом этапе (от проектирования до внедрения) работать над снижением этой самой неопределенности и снижением рисков.
Справедливо будет следующие высказывание. При прочих равных условиях в задачах с низкой степенью определенностью скорость увеличения определенности больше, чем в задачах с высокой степенью неопределенности.
Пример указан в таблице ниже.
Стадия реализации задачи | Неопределенность на конец этапа для задачи с низкой неопределенностью | Неопределенность на конец этапа для задачи с высокой неопределенностью |
---|---|---|
Оценка | максимальная | максимальная |
Анализ | средняя | максимальная |
Проектированиеl | минимальная | средняя |
Реализация | близка к 0 | минимальная |
Тестирование | близка к 0 | минимальная |
Эксплуатация | близка к 0 | минимальная |
Оценки и проектирование
Первое что нужно делать при оценке сроков — постараться узнать настолько много информации, насколько можно. Не факт, что это будет какой то документ, возможно, это будет информация, собранная по крупицам из разных уст представителей партнеров.
Важно помнить, что переоценку можно и нужно делать на каждом этапе при условии выявления новых требований и фактов. Как видно из таблицы, после этапа оценки неопределенность сохраняется максимальной, поэтому после этапа анализа и проектирования, когда уровень неопределенности снижен до среднего нужно провести переоценку.
Здесь хорошо подходит оценка с вероятностью. Например: разработку можно завершить 21 мая с вероятностью 50%, либо 6 июня с вероятностью 90%.
Выход в эксплуатацию
При выходе в эксплуатацию степень неопределенности остается минимальной, но всё же выше, чем в задачах с низким уровнем неопределенности. В этом случае достаточно сложно обойти риск появления проблемы, но при этом можно сократить время реакции. Для этого можно настроить мониторинг ошибок. Оперативный мониторинг позволит сократить время отклика на проблему а после проведения опытно промышленной эксплуатации сократить степень неопределенности до близкой к нулю. Как на проектах с высокой степенью неопределенности.
Выводы
В заключении хочется кратко сформулировать основные тезисы, которыми можно пользоваться в проектах с высокой неопределенностью:
- уточнение оценок и планов необходимо на каждом этапе процесса решения задачи
- минимизация времени отклика в ходе эксплуатации за счет мониторинга
- фокус тимлида в задачах с высокой степенью неопределенности должен быть на поэтапном снижении этой самой неопределенности и сведением её к нулю.