{"id":14279,"url":"\/distributions\/14279\/click?bit=1&hash=4408d97a995353c62a7353088166cda4ded361bf29df096e086ea0bbb9c1b2fc","title":"\u0427\u0442\u043e \u0432\u044b\u0431\u0435\u0440\u0435\u0442\u0435: \u0432\u044b\u0435\u0445\u0430\u0442\u044c \u043f\u043e\u0437\u0436\u0435 \u0438\u043b\u0438 \u0437\u0430\u0435\u0445\u0430\u0442\u044c \u0440\u0430\u043d\u044c\u0448\u0435?","buttonText":"","imageUuid":""}

Проектирование мобильного приложения. Опыт за год

Денис Гордиенко, генеральный директор Bright Mobile о том, какие выводы сделал по итогу года проектирования приложений, как отдельной услуги.

С марта прошлого года я веду отдельную услугу – проектирование. Понадобилась она ввиду следующих причин.

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

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

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

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

Проектирование, как отдельная услуга

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

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

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

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

Разобравшись что и как лучше прописывать для программиста, перевёл проектирование в режим написания по ТМ, т.к. появилось примерно 30% заказчиков, которые берут готовое проектирование и идут с ним на fl. Это, само собой, их право, и никакого обмана меня в таком подходе нет, но для бизнеса это не выгодно.

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

Давайте сразу оговорюсь, что сейчас речь пойдёт о многопользовательских бизнес-приложениях: агрегаторы услуг, товарные маркетплейсы, доски объявлений, соцсети, сервисы знакомств и подобное.

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

В проектирование есть базовое понятие сущностей – тех или иных видов объектов, которые мы используем в своём проекте. У каждой сущности предполагается возможность её создания, просмотра, а также, опционально, удаления, редактирования и отображения списком, если сущность множественная.

Рассмотрим проектирование MVP на примере маркетплейса услуг, как я это делал, когда мы создавали RTPlatform. Здесь мы имеем три базовые сущности:

1. Пользователь. Клиент, который заказывает услугу.

2. Мастер. После заполнения специальной формы (профиля мастера) пользователь может стать мастером. Это уже отдельная сущность, которая может откликаться на те или иные заявки.

3. Заявки. Создаёт пользователь, когда хочет найти мастера

Как составить структуру приложения

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

Пользователь. Он может создавать заявки, просматривать их, удалять, а также редактировать свои собственные. Сам пользователь создаётся при авторизации, просматривать его карточку в мини-версии смысла нет – хотя, конечно, можно дать возможность смотреть его профиль мастеру, но это уже улучшение, в MVP без него можно обойтись. Удалять пользователей может админ, эту функцию можно вынести в базу данных или в панель администратора; редактировать у нас пока по большему счёту просто нечего. Все эти данные к пользователю не относятся, к списку экранов добавляется только «авторизация» — это создание его сущности.

  • Авторизация — создание сущности Пользователя

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

  • Создание / редактирование профиля мастера
  • Просмотр профиля мастера
  • Список профилей мастеров

Редактирование профиля мастера можно сделать добавив эту возможность на экран создания профиля мастера: все имеющиеся поля будут заполнены ранее введёнными данными, которые можно изменить.

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

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

  • Мои заявки
  • Все заявки
  • Создание заявки
  • Редактирование заявки
  • Просмотр заявки

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

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

  • Пользовательское соглашение. Юридическая информация
  • Меню. Список разделов под шторкой
  • Уведомления. Хронологический список полученных push-уведомлений

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

  • Переписка

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

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

  • О сервисе

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

  • Баланс

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

  • Подписки

Оценка ТЗ

Всё, что мы делали выше – это составляли структуру приложения. В принципе, уже этот список можно отправить разработчику для ориентировочного определения стоимости реализации продукта. Чаще всего разработчики оценивают сложность работы по количеству экранов и доп. функционалу – тем, что явно на экране не отображается, но что в приложении присутствует (тот же экран баланса и эквайринг: последний не отображается, как баланс, однако на его внедрение тратится время).

Отсюда рассчитывается стоимость: количество экранов (в нашем случае – 16) умножается на затрачиваемое время по моему опыту, с учётом каркасов, серверной части и багфикса один экран делается 13 часов. Плюс интеграция эквайринга – возьмём для примера 40 часов. Итого получаем:

16 х 13 + 40 = 248 часов на разработку

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

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

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

0
31 комментарий
Написать комментарий...
денькя

Вообще если описать это всё в общепринятых в software engineering терминах, то это называется requirements analysis, а выполнять эту работу должен software analyst.

К проектированию кстати это никакого отношения не имеет)

Ответить
Развернуть ветку
Mark Quincy

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

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

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

Ответить
Развернуть ветку
John Doe

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

Ответить
Развернуть ветку
Mark Quincy

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

Ответить
Развернуть ветку
Виталий Подольский

В целом, годный материал. Но хочу внести небольшое уточнение:

 архитектура приложения - это задача для технического директора, а не проектировщика

Это задача архитектора. Каким боком здесь техдир?

Ответить
Развернуть ветку
Денис Гордиенко
Автор

Это уже у кого как. В совсем маленьких командах это делает просто "самый опытный программист". В большинстве команд <15 чел должность техдира / тимлида и архитектора чаще всего слита в одном человеке.

Ответить
Развернуть ветку
Евгений Скрипченко

Платите деньги.  В остальном Вы не компетентны.

Ответить
Развернуть ветку
Ренат Ибрагимов

Это выглядело примерно вот так.

Гиперссылка не работает.

Ответить
Развернуть ветку
Денис Гордиенко
Автор

Спасибо, поправил

Ответить
Развернуть ветку
Lirnik

Ни слова про дизайн. Разработчики оценивают объем без макетов?

Ответить
Развернуть ветку
Денис Гордиенко
Автор

Верно. Но если закладывать дизайн, то это в среднем +5 ч на отрисовку макета и +4ч на верстку. 

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

Ответить
Развернуть ветку
Lirnik

Даже для шаблонных элементов нужно спроектировать интерфейс. 

Ответить
Развернуть ветку
Панда Ву

Тяжела жизнь студии за садовым кольцом (хотел написать «за мкадом» но нет... круг сужается). По дороге клиенты либо на 180 градусов меняют ТЗ, либо дохнут, раз вы их принуждаете к предоплатому ватерфоллу.

Ответить
Развернуть ветку
Aleks B

раскрой месседж свой)

Ответить
Развернуть ветку
Matt Bruin

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

Ответить
Развернуть ветку
Aleks B

думаешь? водопад то норм для большинства случаев, особенно на старте

Ответить
Развернуть ветку
денькя

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

Ответить
Развернуть ветку
Панда Ву

Месседж в том, что проектирование как услуга может быть удобна только разработчику - взять деньги вперед как защита от частых обновлений требований, с которыми люди не могут справиться по разным причинам. (В основном низкие бюджеты проектов или некомпетентность) Позвоните в любую приличную студию и там вам дадут от $250 за час разработки где будет заложен менеджмент и проектирование. Адекватные разработчики отлично понимают из клиента никак не вытянуть до начала разработки все требования и никак не зафиксировать их. У всех одно и тоже: наступает момент, приходит заказчик и говорит: ребята а давайте вот тут сделаем по-другому.

Ответить
Развернуть ветку
Денис Гордиенко
Автор

За 250 долларов в час без проблем. 

Проблема в том, что большинство заказчиков хотят всё описанное за 25, а ещё лучше за 15. При этом разговор не "ребята а давайте вот тут сделаем по-другому.", а "ваще-т это ваши проблемы, что вы меня не поняли и не задали вопросы, переделывайте бесплатно". 

Ответить
Развернуть ветку
borodutch

У вас проблема глубже, вы где-то находите таких плохих заказчиков и почему-то обобщаете 🤔

Ответить
Развернуть ветку
Денис Гордиенко
Автор

видимо мы живём в разных вселенных.

Ответить
Развернуть ветку
Панда Ву

15-25$ это уровень фрилансера миддла, который о менеджменте и проектировании слышал краем уха. Для студии это однозначный убыток. Зачем таких берёте? Себя и их мучаете

Ответить
Развернуть ветку
John Doe

Чувак, похоже ты не в курсе, но это хотелка МакКинзи по дейли рейту. Даже не то, за что они по факту продают. Попробуй заявиться с таким рейтом в любой тендер приличного размера. Тебе в следующий раз даже РФП/РФАй не пришлют. Даже четверка сильно дешевле продает людей. Не вешай лапшу на уши.

Ответить
Развернуть ветку
Панда Ву

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

Ответить
Развернуть ветку
John Doe

Можно только порадоваться за Вас, если находятся такие клиенты :) Но зная уровень цен в контрактах нескольких интеграторов общей суммой не в один десяток миллиардов рублей - в такое счастье верится с трудом :) И, Вы удивитесь, люди умудряются работать в плюс :)

Ответить
Развернуть ветку
Mikhail Dragunov

Вы как то решили вопрос с клиентом вашей студии, что писал несколькими неделями ранее? 

Ответить
Развернуть ветку
Денис Гордиенко
Автор

Мы его решили в суде полгода назад. Его право писать своё виденье ситуации. У меня, само собой, иное мнение по этому поводу.

Ответить
Развернуть ветку
Егор Рабцевич

Это не в том ли где ты ещё 250 т.р. выставил мне? Так он не по сути вопроса) Суд в it это та ещё фикция, нормальным людям репутация дороже! Но это не про тебя, ты наверное «кореец»)

Ответить
Развернуть ветку
John Doe

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

Ответить
Развернуть ветку
Mikhail Dragunov

Ясно-понятно.

Ответить
Развернуть ветку
Константин Баранов

Спасибо, материал правильный и полезный👍🏻💪

Ответить
Развернуть ветку
28 комментариев
Раскрывать всегда