Свяжитесь с нами
Нажимая на кнопку, вы даете согласие на обработку персональных данных
Статья-размышление для CMSmagazine для тех, кто собрался делать мобильное приложение

Алексей Чувашов
СТО
Без вопросов, без плана, зато с рюшечками: что общего между узбекскими строителями и плохими разработчиками?
Столкнувшись в прошлом году с необходимостью строить дом, я был поражен — насколько мой опыт в разработке мобильных приложений подходит этому делу.

Тут всё точно также! И толпы неквалифицированных подрядчиков, готовых работать за еду (только в разработке это не всегда узбеки). И восхитительная легкомысленность при продумывании архитектуры (проектирование фундамента, нагрузок, коммуникаций). О необходимости тестирования (контроля качества) вообще большинство подрядчиков просто где-то слышали…

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

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

Выбор подрядчика


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

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

Всё как у нас в диджитал, честное слово!

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

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

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

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

— ФЕЯ, летающая по экрану поверх всех приложений;

— искусственный интеллект, умеющий читать мысли;

— AR технологии, которые еще даже в прототипах не появились.

И это просто замечательно, когда заказчики смотрят вперёд технологий. Вернуть их на Землю не так сложно. Убило в этой истории то, что заказчику было предоставлено четыре официальных КП от наших конкурентов...
Если есть возможность — спросите еще до заключения договора о том, какую архитектуру приложения будет использовать компания, какие у них инструменты разработки, в конце концов, какая тестовая лаборатория.

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


Если фундамент может треснуть, он треснет

План есть, пора приступать к работам. Для дома и приложения вам нужен фундамент.

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

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

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

Без хорошей архитектуры шансы приложения сложиться под нагрузкой такие же, как и у дома, стоящего на кривом фундаменте. То есть стопроцентные. Нужно ли вам неработающее приложение? Риторический вопрос.
Коммуникации — залог жизнедеятельности

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

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

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

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

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

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

Заметьте, мы ставим код вперед дизайна. Потому что под «дизайном» здесь подразумеваем именно UI. А UX, мы описали выше, несмотря на моду назвав его «архитектурой».
Под крышей дома твоего

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

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

Часто тестирование — один из последних этапов, на который у "строителя" уже не хватает времени и эмоций. В 65apps мы уделяем "крыше" огромное внимание. Мы считаем, что какой бы крепкий и красивый дом не получился, если крыша течет, то все изящество конструкции легко может исчезнуть при достраивании (исправлении багов).

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

Фундамент сделали, коммуникации завели, стены возвели, крышей накрыли – пора клеить обои и класть ламинат. Наводить уют.

А приложению нужен дизайн. Обратите внимание, что UI-дизайнер может подключиться на самом последнем этапе, когда у вас есть правильная архитектура, функционал, подключены API и написан код, выполняющий всю основную работу.
Давайте теперь попытаемся обобщить все этапы:
Конечно, мы описали сферическое строительство дома в вакууме – может быть вам вообще нужен не дом, а шалаш в разливе (PWA или обертка). Или вообще массовая застройка муравейника (конструктор). С этим необходимо разбираться отдельно. Но, в любом случае, для получения хорошего продукта надо понимать происходящее на каждом этапе. Какие бы ни были у вас цели и задачи.

А какие аналогии вам приходят в голову?