[Из песочницы] Как потерять несколько миллионов, работая с дешевыми программистами
Статья нацелена в первую очередь на новичков, желающих сделать свое первое мобильное приложение, и, как мы в свое время, абсолютно не знающих с чего начать и присматривающихся к недорогим вариантам программирования. Отчасти в некоторых местах она будет интересна и мастодонтам мобайла в качестве интересного примера для борьбы с возражениями будущих не ретивых клиентов.
Вводная часть
На волне подъема развлекательных мобильных приложений и вирусных видео о разнообразных челленджах, у вашего покорного слуги родилась идея создать развлекательное мобильное приложение с тематикой челленджей и флешмобов. Забегая вперед скажу, что несмотря на описанные ниже ужасы, нам все такие удалось реализовать проект и выпустить в сторы beta-версию для iOS и полноценную версию для Android.
Для данной публикации достаточно будет сказать, что за реализацию идеи мы с командой идеологов взялись без малейшего набора знания в мобильной разработке, рекламе и всех сопутствующих тонкостях отрасли.
Собственные кейсы и лайфхаки
Ниже я опишу сухие цифры, примеры собственных кейсов, советы и топ лайфхаков по выбору программистов. На мой скромный взгляд это должны знать все, кто очень хочет сделать свое первое мобильное приложение, но не знает с чего начать. Скорее всего, некоторые советы подойдут в поиске исполнителей и в других областях и сферах.
1. При поиске подрядчика (в нашем случае — разработчика) не занимайтесь поиском его в Гугле или Яндексе. Найдите ТОП мобильных разработчиков за 2 года и идите по данному списку. Конечно, это не даст 100% гарантии, что вы найдете грамотного, ответственного и порядочного партнера (об этом чуть позже), но это даст гарантию того, что разработчики действительно имеют опыт в разработке мобильных приложений, а не «во всем понемногу».
Пример из жизни: при реализации проекта мы два раза прибегали к поиску программистов через обычные поисковые сервисы и составляли списки потенциальных разработчиков. Через два года, когда пришло понимание того, как нужно выбирать программистов, мы сравнивали наши прошлые списки с полученными позже инсайдами и отзывами от коллег по отрасли. С большей частью разработчиков из этого списка или, мягко говоря, работать не рекомендовали, или их обещания на деле могли разойтись с реальными возможностями. При этом ни одна из ТОП 50 компаний-разработчиков России в список, составленные по результатам поиска через Гугл и Яндекс не попала.
2. При составлении шорт-листа компаний, с которыми потенциально можно работать, обращайте внимание на реализованные проекты и не стесняйтесь звонить их клиентам из портфолио. Довольные клиенты с удовольствием расскажут и рекомендуют данного партнера, а недовольные с еще большим удовольствием отговорят заключать с ним контракт.
Пример из жизни: мы вели переговоры с компанией, которая снимает в офис в очень дорогом БЦ в Москве и имеет цены далеко выше среднего. Казалось бы, это должно было говорить о высоком профессионализме и наличие большого числа серьезных клиентов.Впоследствии нам удалось получить инсайд от работников этой компании. Выяснилось, что экспертиза в мобайле у данной компании невысокая, в отличие от web-разработки, что не мешало сделать нам предложение с высокой ценой и обещанием реализовать любые вещи. Проект реализовать было можно, но это, скорее всего, была бы не та конфетка, которую бы мы хотели получить за те высокие цены, которые предлагались.
3. При выборе подрядчика обязательно обращайте внимание на реализованные им проекты. Идеально, если подрядчик реализовывал или похожее приложение, или уже реализовывал части вашего предполагаемого функционала в других приложениях. Пройдитесь по общему функционалу и по отдельным функциям приложениям. Попросите показать живые, реализованные примеры похожих работ и функций. При этом желательно, чтобы это был не один проект, на котором могла происходить проба пера.
Если функционал вашего приложения похож на «социалочку», а разработчики, менеджеры проекта и директора говорят вам, что они сами не пользуются социальными сетями, но бьют себя в грудь и заявляют, что легко реализуют ваш проект — смело уходите со встречи. Скорее всего, у них будет крайне низкая экспертиза именно в вашем вопросе, и проект будет реализован криво.
Немало важно, были ли показанные вам примеры проектов выпущены в стор и поддерживают ли они их в данный момент. Если приложения не были выпущены или выпущены, но кардинально отличаются от того, что показывает вам потенциальный партнер — это первый серьезный звонок.
Пример из жизни: наш менеджер проекта и директор поверхностно знали функционал всех социальных сетей и вещи, которые на наш взгляд являлись нерушимыми и само собой разумеющимися, оказались или нереализованными, или на их взгляд тяжело реализуемыми. Серверный программист не имел до этого опыта работы с мобильными приложениями, и допустил такие ошибки, которые в итоге с неимоверным набором багов решались только полным переписыванием серверной части.
4. Если рассматриваемый вами партнер не придерживается этики ведения переговоров и не отличается пунктуальностью, не тратьте на него время. Как клиент вы ему не интересны и работа с ним, скорее всего, продолжится в непунктуальном ключе. У вас будут постоянные проблемы с работой, контролем, сроками и отношением к проекту в целом.
Пример из жизни: после того, как у нас остро встал вопрос о смене подрядчика, начались переговоры с рядом компаний из ТОПа разработчиков России. Удивительно было то, как на первоначальном этапе ряд компаний пренебрежительно относились к нам, как к клиенту.Сразу оговорюсь, что мы были готовы принять условие оплаты код-ревью, приехать в другой город на переговоры и предоставить исходные коды приложения. Блин, да мы были практически идеальным клиентом.
Некоторые из таких компаний умудрялись забывать перезвонить в назначенный срок, вспоминать о нашем письме через неделю или вообще забывали о факте наших переговоров.
Интересная история случилась с одной Питерской компанией. У нас была готова версия под iOS, и нам нужно было сделать точную по функционалу копию приложения для Android. Мы предложили выслать описание нашего проекта, дать доступ к iOS-сборке и приехать на встречу, на что получили ответ: «Мы так посчитаем, по описанию, нам смотреть работающее приложение не обязательно». При этом портфолио компании пестрило большими и серьезными проектами. В итоге, прошу заметить, переговоры с ними ничем так и не закончились, спустя год я так и жду от них письма или хотя бы звонка с коммерческим предложением.
5. Спрашивайте мнение у экспертов из отрасли. Было приятно убедиться несколько раз на собственном опыте, что профессиональное комьюнити достаточно тепло и активно помогает нуждающимся в совете людям. Ищите профильные группы в Facebook, не стесняйтесь задавать вопросы о конкретных компаниях, с которыми хотите работать, просите совета, в тех или иных областях. В больше части найдется куча полезных советов и приятных людей, которые готовы подсказать и помочь.
Что бывает, если не следовать этим рекомендациям
Итог работы объективно
- Срыв сроков в 2 раза;
- Колоссальные операционные расходы, которые мы понесли из-за срыва сроков сдачи проекта и дебаг;
- Исправление багов по принципу «когда у программистов будет время»;
- Нереализованные функции и неисправленные баги. В один из моментов у нашего партнера просто закончились деньги, чтобы платить зарплату своим программистам. В итоге нам сдали частично незаконченную работу с кучей явных багов;
Итог работы после независимого код-ревью
- Неправильно реализованные основополагающие функции и методы — отсутствие кеширования, неправильные методы авторизации пользователей, отсутствие безопасности, как класса. Много мелких багов средней критичности и проблем, которые обязательно возникнут на определенных стадиях развития проекта, и которые снимаются только полным переписыванием кода серверной части;
- Полное отсутствие безопасности. Приложение ломалось любым пользователем с начальными знаниями HTML и простым кодом на 300 символов, по сути, являющимся таблицей, куда вводятся нужные данные;
- Гигантское число багов с трудно вычислимыми причинами. Код был написан аккуратно, но с зачастую полным отсутствием здравого смысла в написанной функции или принципе исправления какого-либо бага. В некоторых случаях приходилось просто переписывать полностью куски кода или части функционала;
- Спустя месяц главная страница приложения загружалась минуту. На лицо был программинг «на костылях», когда функция работает и слава Богу, но лучше «там» ничего не трогать;
Итоги работы в деньгах
Исправление багов и самых критичных вещей вышли по стоимости на уровень написания новой серверной части в компании, которая действительно имеет опыт мобильной разработки.
Программирование у неопытных и дешевых программистов, операционные расходы на время программирования, операционные расходы из-за срыва сроков, стоимость исправление багов у новых программистов, операционные расходы на время исправления багов = стоимость серверной и клиентской части под одну платформу с более широким функционалом у компании из ТОП-30 разработчиков России.
Заключение
Новыми программистами проект был оценен уже как средний по сложности и большая часть функций из разряда «сложно, мы умоемся кровью, когда будем их реализовывать» перекочевала в разряд «мы это делали четыре раза в других проектах, сделаем и у вас, в этом нет ничего сложного».
Кстати, та самая компания, которая так «хорошо» реализовала нам проект, переехала по счастливому стечению обстоятельств в «Москва-Сити», что подтверждает теорию о том, что высокие цены и пафосный офис далеко не всегда являются залогом высокого профессионализма.
Встречайте по одежке, провожайте по уму и не будьте дураками, учитесь на чужих ошибках (например, наших), а не на своих.
Комментарии (2)
15 ноября 2016 в 13:42
+3↑
↓
Мы так посчитаем, по описанию, нам смотреть работающее приложение не обязательно». При этом портфолио компании пестрило большими и серьезными проектами. В итоге, прошу заметить, переговоры с ними ничем так и не закончились, спустя год я так и жду от них письма или хотя бы звонка с коммерческим предложением.
Когда мне говорят — сделай клон вот этого приложения (Под другую платформу, или с другим дизайном или еще что-то) — я сразу говорю: давайте тех задание.
Делать по запросу «вот также как тут» я не буду впринципе. Нельзя по внешнему виду приложения понять что и как.
Тоже самое и с исходными кодами чаще всего. Чего мне на них смотреть? Дайте мне документацию на API, макеты, workflow диаграмму. А показывать приложение мне не надо. Я всё равно по показу ничего не сделаю.Проект реализовать было можно, но это, скорее всего, была бы не та конфетка
Это просто ваша догадка, скорее всего не имеющая никакого отношения к реальности.15 ноября 2016 в 13:56
0↑
↓
Кстати, та самая компания, которая так «хорошо» реализовала нам проект, переехала по счастливому стечению обстоятельств в «Москва-Сити», что подтверждает теорию о том, что высокие цены и пафосный офис далеко не всегда являются залогом высокого профессионализма.
Петя потратил выручку на новый дорогой офис в «Москва-Сити», а Вася потратил выручку на новых разработчиков/новую аппаратуру/лицензии/запуск нового продукта. В итоге, Петя подтверждает теорию Bammbato, а Вася получает развитие.