Как поменять разработчика мобильного приложения и почему обычно это невозможно

Как поменять разработчика мобильного приложения и почему обычно это невозможно

Что делать, если IT-подрядчик не оправдал ваших ожиданий? Прежде всего, работать над ожиданиями. Заранее

Зачем вообще может потребоваться смена разработчика мобильного приложения? Как правило, по одной или нескольким причинам:

  • Сроки уже несколько раз сорваны и похоже их вообще прогнозировать бессмысленно.
  • Бюджет превышен, возможно тоже не один раз.
  • Функциональность не обеспечена. «Косяки» по производительности, дизайну, чему угодно.
  • Много багов. Вроде все работает, но плохо. Причем доработки ситуацию не улучшают.
  • Сложно общаться. Несмотря на все усилия, не получается найти общий язык. Сложно доносить свое понимание задач, приходится спорить на каждой сдаче-приемке, любое действие идет через сопротивление.

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

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

Что не так с передачей дел в мобильной разработке

Когда вы меняете строительную компанию или партнера по логистике, производству — понятно, как это осуществляется. Есть определенные результаты в ходе предыдущей деятельности, известны условия выхода из одного сотрудничества и входа в другое. Тоже с нюансами, но ничего фатального.

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

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

Например, у вас есть согласованное ТЗ (техническое задание), текущие результаты разработки на ваш взгляд не соответствуют, сроки вышли. Значит можно требовать… чего конкретно?

  • От доработки по ТЗ подрядчик может и не отказываться. Просто он выставляет дополнительные счета, что обосновывает в терминах, которые непонятны ни вам, ни суду.
  • Возмещать убытки вроде как не за что. Работа же выполнена. А ее качество, опять же, требует технологических и прочих экспертиз. Кто и как будет выносить такие оценки, принимать или нет их к сведению — двойная лотерея.
  • Хорошо, просто передайте все материалы по проекту, чтобы закончить его с другим IT-подрядчиком. О, вот тут начинается самое интересное!

Все что вам должны «передать» как раз и определяет качество выполнения IT-проекта. Можно даже сказать, что когда подрядчик способен и готов выполнить все требования по передаче проекта в полном объеме — нет никакой разумной причины менять его на другую компанию.

Поскольку тут много разных аспектов, их можно упрощенно классифицировать по аналогии с авто-страховками:

  • ОСАГО, то есть обязательный минимум.
  • КАСКО. Разумные дополнения.
  • VIP-тариф. Нечто вроде «покрытия» с полным восстановлением разбитой машины, здоровья всем участникам и свидетелям ДТП, а также их личной жизни, хорошего настроения и веры в чудеса.

ОСАГО

Два ключевых слова: код и доступы.

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

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

Тут важно по крайней мере получить полную копию кода своего приложения — выгрузку архивом или ссылкой на репозитории вроде GitHub или GitLab.

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

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

Удивительно, как часто нарушается это очевидное правило. Даже крупные корпорации могут ограничиться формальной «проверкой» наличия ссылки, скриншотов, непонятного набора файлов. Так закладывается мина на будущее.

Далее, нужно получить ВСЕ необходимые и возможные доступы, имеющие отношение к проекту. Например (но не только эти):

  • Домен
  • Битрикс
  • Платежные сервисы
  • Аккаунты разработчиков
  • Сторонние сервисы

Везде должны быть указаны ваши контакты — юрлицо, почта, телефон. Все, что оформляется юридически, изначально нужно оформить на себя. Никаким «удобством» нельзя оправдать то, что ваш ресурс вам по сути не принадлежит.

Если сомневаетесь в важности этого пункта, посмотрите художественный, но весьма познавательный фильм «Социальная сеть». В нем рассказывается о том, как один из учредителей небезызвестного Facebook был аккуратно вытеснен из числа выгодополучателей. При оформлении прав на мобильное приложение картина технически и юридически немного другая, но в целом все происходит именно так. Либо вы полностью контролируете происходящее, либо вас вообще нет в схеме.

КАСКО

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

  • Документация
  • Changelog
  • Bagtracker

Давайте по порядку. Слово «документация» звучит понятно, особенно по контрасту с другими терминами. Но это обманчивое ощущение. Вам нужны исчерпывающие руководства администратора системы, программистов, баз данных, пользователей. Каждое из них детализируется в тома технических описаний. Из них должно быть ясно:

  • Как перезагружать систему
  • Где находятся конфигурационные файлы
  • Какие IP и доступы используются
  • Как выглядит админская часть, что в ней можно и чего нельзя делать
  • Все про базы данных (версии, скрипты создания, бэкапы)
  • Где софт «крутится» физически, какие там настройки
  • IDE, зависимости, библиотеки, фреймворки

С каждым последующим уточнением все становится не более, а менее понятным. Вам опять нужен внешний аудитор. Точнее, он пригодился БЫ в том случае, если разработчик действительно предоставит полный пакет документации. Но скорее всего этого не произойдет. Что очень жаль, ведь отрывочные описания алгоритмов мало говорят о реализации. Значит, потом будут проблемы.

Changelog описывает последовательность разработки. Что и как меняли, в какой очередности, с какими результатами. Полная картина о ходе проекта, по которой другой разработчик сможет быстро включиться в работу и продолжить развитие продукта. Мог БЫ это сделать, получи он настоящий changelog. Но скорее всего, этого не будет.

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

Допустим, ваш подрядчик оказался «The One», почти как Нео из «Матрицы». Он предоставил код, доступы, документацию, историю разработки и тестирования. Здесь уже стоит дважды подумать, на кого и зачем вы собрались его поменять.

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

V.I.P.

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

  • ТЗ в идеальном порядке. Со всеми правками и дополнениями.
  • Wiki проекта. Внутренняя база данных — не приложения, а самой разработки.
  • CustDev, технология и документация бесшовных обновлений без остановки сервисов.

Снова зовите внешнего аудитора, если он еще не живет в вашем офисе. Нужно инспектировать ТЗ с момента первого согласования, а потом по каждому изменению. «Немного подправить» это «частное техническое задание» (ЧТЗ). Оно отдельно разрабатывается, проверяется на согласованность с прежним планом и ресурсным обеспечением, потом интегрируется в проект и запускается на выполнение. Если так не делать, вы никогда ничего не докажете. Не только в суде, а вообще.

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

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

Резюме

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

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

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

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

Профилактика лучше лечения. Это любой врач подтвердит.

66
2 комментария

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

1
Ответить

Отличная статья, заметил что проблемами с сменой разработчиков страдают в основном в проектах за фикс, где подписывается ТЗ и берется аванс 50%.

Лучше работать по ТМ, расчитываться раз в месяц, сделать возможным завершение договора по инициативе любой из сторон (либо по какой-то причине, либо с предупреждением за месяц). Если разрабы тупят, то вы потеряете максимум месяц работы (а не полгода).

При этом надо сократить цикл обратной связи, настроить CI/CD и демо-стенд, который видит заказчик.

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

Я бы еще добавил, что аудитор должен смотреть на maintainability, архитектуру и кодстайл. Попросите студию врубить линтер кода в пайплайн и проверять кодстайл автоматически. Документацию можно и нужно генерить автоматически, это тоже защитит вас, когда разрабы начнут сливаться/тупить

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

Также надо спрашивать про вовлеченность и прозрачность (писал про это тут https://vc.ru/u/1218994-dmitriy-caplya/580832-o-chem-stoit-dogovoritsya-s-studiey-razrabotki)

Ответить