Одна из основных проблем в ИТ проектах — взаимопонимание двух миров: бизнеса и разработки. Одни хотят быстро и красиво, другие хотят получить исчерпывающее описание хотелки. Переговоры занимают много времени, но еще больше — исправление ошибок. Как эффективно выстроить процесс, рассказывает зам технического директора музыкального сервиса «Звук» Кирилл Ларин. заместитель технического директора музыкального сервиса «Звук» Кирилл Ларин Ольга СоркинаТак как разработка (+тестирование) — самое дорогое звено в создании ИТ-решения, то необходимо экономить время разработчика любым способом.Если задача поступает в разработку с неполным описанием, то есть в ней нет всех Use cases и Corner cases, то разработчик тратит массу времени на выяснение нюансов. Или не хочет вступать в полемику и делает все, опираясь на свою картину мира, по принципу “художник так видит”. Если в компании ограничены ресурсы, нет системного аналитика, либо он не покрывает весь бэклог, то необходимо найти другой выход, который позволит эффективно решить проблему.РешениеОдно из решений — выработка стандарта описания задач. Лучше больше продумывать их до реализации, чем додумывать в процессе исполнения. Здесь необходимо найти баланс между заказчиком и разработкой.Основа баланса — смещение большей части работы на постановщика/представителя бизнеса. Чем лучше он проработает фичу, тем вернее будет результат на выходе.Однако часто бизнес не знает, что требуется разработчику, чтобы сделать задачу верно и в срок. Как найти общий язык?Сквозь слёзы и пот мы в Звуке сформировали стандарт, который позволяет получить 90% информации, необходимой для решения любой it-задачи.Cтандарт постановки задачГлавная цель — реализовать именно то, что хотел заказчик. Так как любую информацию можно трактовать по-разному, то следует использовать утвержденный формат постановки задачи. Такой формат, который уменьшит вероятность разночтений. Для этого заказчику необходимо описать следующие аспекты задачи:ТребованиеПроблема, которую надо решитьПродуктовые требованияТехнологические требованияUser storiesUse casesCorner casesРассмотрим подробно каждый аспект.ТребованиеДля точного определения, что требуется сделать в постановке задачи используется принцип SMART:Specifiс. Задача должна быть конкретной. Куда мы пойдем, чего мы хотим достичь?Measurable. В чем должен измеряться результат и какой результат будет для нас хорошимAttainable. Достижимые цели. Здесь мы проверяем, находятся ли наши цели в реальных пределахRelevant. Все задачи должны относиться к бизнесу и должны вести к цели проектаTime-bound. Обязательное ограничение во времени. Большие задачи надо стараться разбить на более мелкиеПроблемаКакую проблему заказчик пытается решить?Продуктовые требованияКакие метрики будут оцениваться, какие показатели будут достигнуты в ходе решения задачи?Технологические требованияКакие технологические требования и ограничения предъявляет заказчик к функционалу?User storiesКакая функциональность ожидается?Несмотря на то, что US в огромной степени играют роль, ранее принадлежавшую спецификациям требований, сценариям использования и т.п., они все же ощутимо отличаются рядом тонких, но критических нюансов:Они не являются детальным описанием требований (то-есть того, что система должна бы делать), а представляют собой скорее обсуждаемое представление намерения (нужно сделать что-то вроде этого).Они являются короткими и легко читаемыми, понятными разработчикам, заказчикам и пользователям.Они представляют собой небольшие инкременты ценной функциональности, которая может быть реализована в рамках нескольких дней или недель.Они относительно легко поддаются оценке, таким образом, усилия, необходимые для реализации, могут быть быстро определены.Они не занимают огромных, громоздких документов, а организованы в списки, которые легче упорядочить и переупорядочить по ходу поступления новой информации.Они не детализированы в самом начале проекта, а уже более детально разрабатываются «точно в срок», избегая таким образом слишком ранней определенности, задержек в разработке, нагромождения требований и чрезмерно ограниченной формулировки решения.Они требуют минимум или вовсе не требуют сопровождения и могут быть безопасно отменены после имплементации.Структура user storyТекст самой US должен объяснять роль/действия пользователя в системе, его потребность и выгоду, которые пользователь получит после того как история случится.ПримерКак, <роль>, я <что-то хочу получить>, <с такой-то целью>.Важно:Есть одна РольЕсть одно действиеЕсть одна ценность/влияниеUS можно оценить по критериям INVEST:Independent. Меньше зависимостей — легче планироватьNegotiable. Детали появляются в ходе обсуждений команды разработки и заказчикаValuable. Измеримая история — какие метрики изменилисьEstimable. Большая или расплывчатая история — невозможно точно оценить трудозатратыSmall. Небольшая история разрабатывается в рамках неделиTestable. Простой критерий готовностиВажно помнить, что:Лучше написать много историй поменьше, чем несколько громоздких.Каждая история в идеале должна быть написана избегая технического жаргона — чтобы суть была понятна и бизнесу и разработке.Истории должны быть написаны таким образом, чтобы их можно было протестировать.Тест-план должен быть написан до кода.Как можно дольше стоит избегать UI. История должна выполняться без привязки к конкретным элементам.Каждая история должна содержать оценку.История должна иметь концовку — т.е. приводить к конкретному результату.История должна помещаться в итерацию.Use casesКакой сценарий необходимо пройти, чтобы достичь цель?Что UC включают в себя:Кто пользуется системойЧто пользователь хочет сделатьКакая у пользователя цельШаги к достижению целиКак система реагирует на действия пользователяЧто UC не включают в себя:Реализацию на специфическом языке (терминология и т.п.)Информацию про интерфейсыИз чего состоят UCВ зависимости от глубины и сложности того, что вы хотите или должны достичь, UC описывают комбинацию следующих элементов:Актер — кто или что выполняет действие.Предварительные условия — что должно быть/случиться до и после прохождения UC.Триггер — какое-то событие, которое стало причиной запуска UC.Главный успешный сценарий — прохождение UC по ожидаемому сценарию.Альтернативный сценарий — вариации главного успешного сценария. Происходит, когда что-то пошло не так на системном уровне.Как писать UCДля написания UC используются следующие шаги:Определить кто будет пользоваться системой.Выбрать одного пользователя.Определить, что этот пользователь будет делать с системой. Каждое действие станет UC.Для каждого UC определить курс событий, когда этот пользователь использует систему.Опишите основной курс в описании для UC. Опишите его с точки зрения того, что делает пользователь и что система делает в ответ, о чем пользователь должен знать.Когда базовый курс описан, рассмотрите альтернативные курсы и добавьте их, чтобы «расширить» UC.Ищите общие черты среди UC. Объедините их как UC одного курса.Повторить шаги с 2 по 7 для всех пользователей.Corner casesДля того чтобы избежать непредвиденных сценариев в работе фичи, необходимо описать все возможные CC. По сути, CC отвечает на вопрос А что будет, если ...? СС должны покрывать большинство вариантов и указывать на причины возникновения вариантов.Чтобы описать CC нужно определить, какие факторы влияют на фичу и описать результат/сценарий при всевозможных комбинациях этих факторов.Для этого целесообразно использовать таблицу, в которой на пересечении факторов будет описан результат/сценарий.ПримерС теорией всё понятно, но как дело обстоит на практике? Разберем упрощенное описание задачи на примере сохранения настроек приложения.ТребованиеСохранять настройки приложенияПроблемаВ ходе опроса было выявлено, что пользователь ожидает, что приложение запоминает его последнее состояние (настройки). По аналогии с другими сервисами.Продуктовые требованияИспользовать распространенный UX для реализации решенияТехнологические требованияСохранять настройки приложения на серверной стороне в связке с данными пользователяUser storyКак пользователь, я хочу, чтобы приложение запоминало мои настройки, чтобы мне не приходилось указывать их каждый раз при авторизацииUse cases— Пользователь открывает приложение.— Пользователь входит в учетную запись в приложении.— Пользователь устанавливает настройки приложения.— Система сохраняет настройки.— Пользователь выходит из учетной записи в приложении. — Пользователь входит в учетную запись в приложении (+ на другом устройстве).— Система передает сохраненные настройки в приложение.— Приложение отображает сохраненные настройки пользователя.Corner caseОбеспечить обратную совместимость со старыми клиентами.Как помочь новому стандарту прижитьсяПервое. Объяснить команде боль. Как известно, если вы указываете причину внедрения, конверсия увеличивается. Второе. Показать пример, поставить некоторое количество задач для начала по стандарту, показать заказчикам, как это надо делать, как оно работает.Третье. При внедрении обязательно собрать обратную связь по стандарту. Ответить на все вопросы, внести корректировки. Тогда будет коллективный труд, порог вхождения ниже.Четвертое. Воспринимать все нововведения, как эксперимент. Если он удался (были достигнуты цели), он приживется сам собой, так как мотивация у людей будет осознанной. Если не удался, можно вернуться к прежнему состоянию.Пятое. Закрепить нововведения фактами в виде цифр — сравните с периодом до внедрения. Производительность увеличилась на столько-то, количество ошибок упало на столько-то.Выводы и результатыКаждая система, находящаяся в покое, противиться изменению. При внедрении подобных стандартов/изменении процессов вы столкнетесь с сопротивлением. Но игра стоит свеч. Лучший аргумент — это метрики. Если они пошли вверх, значит, вы на верном пути.В «Звуке» после внедрения стандарта скорость и качество работы увеличилось в 2 раза. Мы получили положительные отзывы от всех участников команды и решили основную проблему.#бизнес_процессы #звук #стриминг #музыка #приложение #управление
Ускорить ?
чтото сомневаюсь что так быстрее.
у всех свой опыт) У нас новая практика показала результат.
Русский язык не пробовали учить? https://clip2net.com/s/4agjrnK