IT-инфраструктура для бизнеса и творчества
Разработка
Maksim Orlov

Самый важный этап разработки: опыт создания ТЗ

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

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

Конфуций
мыслитель и философ древнего Китая

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

В основном я пишу для клиентов и тех, кто причастен к созданию цифровых продуктов. Я был и по ту сторону и по другую. Клиенты часто считают что им достаточно заплатить за МП и все будут готово через срок. Но это заблуждение. В действительности от клиента требуется внимание и участие на всех стадиях разработки проекта. Больше всего энергии надо потратить на этапе создания ТЗ. Ведь этот документ — сердце всего проекта. От его проработки будет зависеть жизнеспособность продукта.

Расскажу о первом этапе в работе над мобильным приложением. ТЗ — самый главный документ наравне с договором. ТЗ разрабатывает специальный человек в компании — бизнес-аналитик. Сразу отмечу, первое, что необходимо сделать клиенту на своей стороне — собрать отдельную группу специалистов. В неё точно должны войти: маркетолог, директор, логист, бухгалтер, рядовой сотрудник компании (например продавец-консультант, который работает с покупателями) и IT-директор. Проще говоря, по одному сотруднику из каждого отдела плюс верхушка компании. Эта группа должна быть включена в процесс обсуждения функциональности приложения, чтобы в драфт ТЗ попали все хотелки. Совместно с группой клиента будет сформирован объемный образ будущего мобильного приложения (МП).

Группу собрали — отлично! Аналитик изучит бизнес-процессы компании, посмотрит сайт, проанализирует конкурентов и их цифровые продукты. Потом выявит требования, определит приоритеты, подготовит спецификации, подготовит скелет ТЗ и набросает структуру будущего МП. Затем он разошлет файл участникам группы, и в назначенное время пройдет еще одни митинг. На встрече аналитик подробно расскажет о структуре МП и зафиксирует договоренности.

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

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

Порой я встречаю мнение, что ТЗ — просто бумажка. И слышу от клиента следующее:

—Мы же вам всё ясно и понятно объясняем. Зачем так подробно и нудно это обсуждать?

—Там не сложно. Скоро уже закончим? Может вы уже сами допишете и начнем разрабатывать?

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

И так далее. Но я приведу обычный пример. Возьмём всем понятную и самую популярную функцию приложения push-уведомления. Тут же вроде и говорить не о чем, и так ясно! Пуши должны приходить. Сделайте их и всё. А в реальности Push это отдельный вид искусства, который требует специальной проработки и вот почему.

  1. Пушей существует много видов. Нужно понять, как клиент хочет отправлять эти пуши. Всем сразу или сегментировать аудиторию и разбить по группам пользователей, или избранным пользователям. В какие моменты пуши должны быть отправлены, по расписанию или по определенным триггерам-событиям и так далее. Это отдельная настройка персонализированной рассылки push-уведомлений.
  2. Пуши на Android приходят по-разному из-за того, что есть smart-режим в ОС. Это надо предусмотреть и сказать об этом клиенту заранее.
  3. Есть возможность настраивать пуши, чтобы они приходили с картинками или без.
  4. Есть возможно чтобы пуши при тапе (при нажатии на него пальцем) на них открывали соответствующую страницу приложения. Это отдельный функционал, который называется deep linking.
  5. Есть разные возможности для реализации пуша, нативная или через например FCM или скажем через сервисы автоматизации push-рассылки Push Woosh. Одни дают возможность сегментировать аудиторию по разным признакам, другие позволяют собирать уникальные данные для аналитики.

Для примера есть статистика сервиса Kahuna — хорошо разработанные push-уведомления увеличили показатель возвратов пользователей (то, что называется Retention) в приложения более чем в 2 раза.

В общем, такая на первый взгляд простая вещь как Push-уведомление имеет очень много скрытых возможностей в реализации. И бизнес-аналитик должен обо всём сказать клиенту, объяснить, как это будет работать и узнать, как клиенту хочется, чтобы пуши были реализованы на приложении. Так и с регистрацией, и с каталогом, и с карточкой товара и так далее. Все подробности, все нюансы будут влиять на стоимость разработки и на время разработки. Отдельное внимание в ТЗ стоит уделить требованиям к интеграции сервисов и АПИ.

Задача разработчиков мобильного приложения позаботиться, чтобы ТЗ было очень подробное. Ведь исправления и корректировки на этапе программирования драматически увеличивают стоимость проекта. Важно продумать все на этапе проектирования. Тогда участники группы на стороне клиента смогут чётко понять, что будет за продукт и как он будет работать. Информация даст объемное видение мобильного приложения.

Имеем ТЗ — представляем, как будет выглядеть работа с МП. В итоге клиент получает то, что хочет. Великолепно работающий продукт. Потребуется от двух до 4 недель работы над техническим заданием.

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

Вот что дает ТЗ клиентам:

  1. Экономия времени — в документе уже есть все ответы, не надо ничего уточнять.
  2. Экономия денег — предусмотрели и не надо больше тратиться.
  3. Экономия нервов — я заплатил, я продумал, я договорился и все под контролем, все знают над чем они работают и чего я и все остальные ждут.
  4. Сформированное видение продукта.
  5. Сформированные ожидания.
  6. Возможность посмотреть, как работает команда, которую вы выбрали для написания мобильного приложения, на конкретной одной ясной задаче — разработка ТЗ.
  7. Возможность потом отправить готовое ТЗ в любую компанию для оценки — потенциально найти лучшие условия.
  8. Все хотелки проговариваются и фиксируются. Есть возможность их увидеть и осознать. Как следствие, выстроить иначе, чем планировалось. Отказаться от какого-то функционала, что-то изменить или усилить.

ТЗ — это бог разработки.

{ "author_name": "Maksim Orlov", "author_type": "self", "tags": [], "comments": 4, "likes": 0, "favorites": 13, "is_advertisement": false, "subsite_label": "dev", "id": 261108, "is_wide": true, "is_ugc": true, "date": "Sun, 20 Jun 2021 19:36:49 +0300", "is_special": false }
(function () { let cdnUrl = `https://specialsf378ef5-a.akamaihd.net/SelectelBranding/images/` let previousArticleNumber = null let currentArticleNumber = 0 let platform = 'Desktop' let articles = [ { name: 'camera', url: `${cdnUrl}CameraCat`, text: 'умную камеру для\u00A0наблюдения за\u00A0котиками', link: 'https://vc.ru/selectel/306690', num: 3 }, { name: 'chill', url: `${cdnUrl}ChillCat`, text: 'трекер, который подскажет, когда пора отдохнуть', link: 'https://vc.ru/promo/288561-eye-tracker', num: 1 }, { name: 'cloud', url: `${cdnUrl}CloudCat`, text: 'котика: даёшь ему «пять», а\u00A0он делает бэкап в облако', link: 'https://vc.ru/dev/294799-maneki-neko', num: 2 } ] let buttonCycle = document.querySelector('.button--cycle') let buttonChoose = document.querySelector('.button--choose') let buttonMobile = document.querySelector('.button--mobile') let textField = document.querySelector('.selectel-footer-subtitle') let imageAgent = document.querySelector('.image--agent') let banner = document.querySelector('.selectel-footer') buttonCycle.addEventListener('click', cycleClick) buttonChoose.addEventListener('click', () => sendEvent(`Promo ${articles[currentArticleNumber].num} Left`, 'Click')) buttonMobile.addEventListener('click', () => sendEvent(`Promo ${articles[currentArticleNumber].num} Left`, 'Click')) let media = window.matchMedia("(max-width: 570px)") media.addEventListener('change', matchMedia) function matchMedia() { if (media.matches) { platform = 'Mobile' } else { platform = 'Desktop' } update() } matchMedia() function cycleClick(event) { sendEvent(`Promo ${articles[currentArticleNumber].num} Right`, 'Click') if (event) { event.preventDefault() event.stopPropagation() } window.open('https://vc.ru/tag/selectelDIY', '_blank') //cycle(event) } function cycle(event) { // incrementArticleNumber() textField.innerHTML = generatedText() imageAgent.src = articles[currentArticleNumber].url + platform + '.svg?3' imageAgent.setAttribute("class", "") imageAgent.classList.add('image--agent', articles[currentArticleNumber].name) banner.href = articles[currentArticleNumber].link } function update() { banner.href = articles[currentArticleNumber].link imageAgent.src = articles[currentArticleNumber].url + platform + '.svg' textField.innerHTML = generatedText() } function incrementArticleNumber() { previousArticleNumber = currentArticleNumber if (currentArticleNumber >= articles.length - 1) { currentArticleNumber = 0 } else { currentArticleNumber++ } } const sendEvent = (label, action = 'Click') => { const value = `SelectelDIY — loc: Footer — ${label} — ${action}`; if (window.dataLayer !== undefined) { window.dataLayer.push({ event: 'data_event', data_description: value, }); } }; function generatedText() { let defaultText if (platform === 'Desktop') { defaultText = `Мы тут собрали %text%. Хотите научим?` } else { defaultText = `Мы тут собрали %text%.` } return defaultText.replace('%text%', articles[currentArticleNumber].text) } function getRandom(min, max) { min = Math.ceil(min) max = Math.floor(max) return Math.floor(Math.random() * (max - min + 1)) + min } (function create() { currentArticleNumber = getRandom(0, articles.length - 1) cycle() let page = document.querySelector('.page--entry') if (page) { function insertAfter() { let parents = page.querySelectorAll('[data-id="7"]') let referenceNode = parents[0] referenceNode.parentNode.insertBefore(banner, referenceNode.nextSibling); loaded() } setTimeout(() => insertAfter(), 0) } }()) function loaded() { banner.classList.add('loaded') } loadImages([ `${cdnUrl}CameraCatDesktop.svg`, `${cdnUrl}ChillCatDesktop.svg`, `${cdnUrl}CloudCatDesktop.svg`, `${cdnUrl}CameraCatMobile.svg`, `${cdnUrl}ChillCatMobile.svg`, `${cdnUrl}CloudCatMobile.svg?3`, ]) function loadImages(urls) { return Promise.all(urls.map(function (url) { return new Promise(function (resolve) { var img = document.createElement('img'); img.onload = resolve; img.onerror = resolve; img.src = url; }); })); } }())
0
4 комментария
Популярные
По порядку

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

0

Нет, не стоит. 

0

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

0

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

0
Читать все 4 комментария
Делал дизайн, пока говорил по телефону: история Пола Рэнда, который создал логотипы для IBM и Стива Джобса Статьи редакции

Рисовал антифашистский журнал, работал арт-директором в Esquire и делал рекламу на азбуке Морзе.

Пол Рэнд   monitorbox
Что советуют опытные руководители начинающим и тем, кто хочет сделать карьеру

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

Курс биткоина впервые превысил $65 тысяч в ходе торгов Статьи редакции

В середине октября криптовалюта второй раз за год преодолела отметку в $60 тысяч.

Путин объявил «нерабочими» дни с 30 октября по 7 ноября с сохранением зарплаты Статьи редакции

Регионы могут сами установить сроки — начать уже с 23 октября.

Retail Innovation Tech Alliance (RITA) дал старт новому отбору стартапов

Retail Innovation Tech Alliance (RITA) объявляет о шестом отборе стартапов для реализации совместных проектов с крупнейшими ритейл и технологическими корпорациями России и Казахстана.

Личный фонд - новый способ оформления наследства

С 1 марта 2022 года появится возможность структурировать наследство с помощью личных фондов.

Разбор: «Яндекс» действительно притворяется системным сообщением iOS на iPhone

Чтобы убедиться, так ли это, я решил открыть сайт одиозной компании «Яндекс» на компьютере в браузере Safari, включив режим отладки и используя «юзер-агент» iPhone. И проверить, действительно ли это системное сообщение или «Яндекс» имитирует системное сообщение iOS, используя фишинговый методы?

Sports.ru снял документальный фильм про «Зенит»-2008

В центре внимания — «золотое поколение» футбольного клуба, завоевавшее Кубок и Суперкубок УЕФА в 2008 году.

Трейлер фильма «Зенит-2008. Победная песня»
Сделай сам: умная камера для наблюдения за питомцами

Обучаем нейросеть на котиках.

Арт-экология. Уличные тренды и успешные городские проекты

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

Ленд-арт объект "Рогатка желаний" на фестивале ленд-арт в Муслюмово фото: организаторы фестиваля
Что пугает в резюме?

Сейчас ищу технического кофаундера (подробнее тут: «Как найти кофаундера?»), получаю достаточно много писем и обращений самого разного содержания. Хотел поделиться впечатлениями, это не руководство и не критика.

null