Давайте признаем, ко всем однажды приходила гениальная идея крутого нового приложения, которое должно захватить рынок. К сожалению, в такой ситуации мы не учитываем, насколько сложно создавать новую программную платформу и выводить её на рынок. Большинство людей, которым ближе бизнес, финансы, маркетинг и другие сферы, никогда не пытались создать технологическое чудо из ничего. Поэтому обычно, объясняя нюансы разработки, я применяю аналогии с домами, машинами, а чаще всего: с нынешней работой собеседника.
Вы можете построить землянку, деревянный дом или большой особняк.
Вы можете нанять джуниора, специалиста среднего уровня или эксперта. При постройке дома, вы можете найти того, кто построит вам простую землянку, деревянный дом побольше или тщательно спроектированный особняк. Для постройки дома с оригинальным дизайном вам сначала нужно нанять архитектора, чтобы разработать проект. А затем вам понадобится команда строителей, которые заложат фундамент. Затем появляется каркас здания, а потом строятся кухня, ванная и спальни. В конце концов вам нужно будет установить освещение, сантехнику, окна, двери и другие необходимые элементы. Так же можно описать создание машины.
Вы можете купить дешевую машину, Lexus или Ferrari.
Вне зависимости, какую машину вы выберете, кто-то всё равно должен её спроектировать. Полная переработка дизайна (новый кузов) обойдется в 200 или 600 млн долларов. А ещё не забывайте о двигателе. В программировании “кузов” — то, что видят люди: дизайн front-end, графический интерфейс, вёрстка, иконки, стиль и цвета. “Каркас” — это используемый фреймворк: Objective C для iPhone, PHP-MySQL или Node.js/MongoDB для сайтов или кроссплатформенные фреймворки, например: React Native от Facebook или Xamarin от Microsoft. Наконец, “двигатель”, который можно сравнить с алгоритмами, функциями, базой данных, серверной частью и другими элементами, поддерживающими работу платформы.
Люди строят дома уже тысячи лет, машины — с 1880-х годов, а вот разработка приложений — относительно новая область деятельности. Даже когда NASA отправляло людей в космос в 1960-х, использовался простейший язык программирования и огромные громоздкие компьютерные системы. Смартфоны появились всего десять лет назад.
После появления Интернета произошел переворот в сознании людей, из-за чего появилась огромная нужда в программистах, которых не хватает во всем мире. Кроме того, экспертов-программистов очень мало. Большинство из них работает в крупных технических компаниях в Силиконовой долине и других частях мира. Часто они создают собственные стартапы.
Если вам повезло привлечь одного из таких экспертов на работу руководителем технического отдела в вашем стартапе, вы заменили 100 средних программистов одним экспертом.
Это отношение может быть даже 1000 к 1.
К счастью, так как в мире так много программистов, вы можете нанять кого-то для создания простого сайта точно так же, как для ремонта вашей машины или чего-то в доме. Кроме того, после появления WordPress, кто угодно может создать свой сайт, посмотрев несколько обучающих видео на YouTube.
Но тут есть загвоздка.
Создание простого сайта или приложения очень отличается от разработки сложной мобильной платформой с продвинутым функционалом, инфраструктурой и масштабируемыми серверами. Такая же разница между подогревом обеда в микроволновой печи и приготовлением полноценного обеда на 7 блюд в ресторане с тремя звёздами Мишлен.
Я лично создал минимум сотню сайтов, а также около дюжины мобильных приложений. В процессе их разработки мне приходилось нанимать для помощи компании по всему миру. Могу с уверенностью сказать, что я работал, как минимум, с двадцатью компаниями по разработке программного обеспечения из восьми стран. И за двадцать лет создания программных платформ я понял одну вещь:
Большинству компаний не хватает навыков для решения сложных задач.
Большинство программистов могут создать основу вашей платформы, возможно, поработать с back-end и связать все это вместе. Но они не могут создать сложные части вашего приложения и заходят в тупик. И тогда вам приходится искать ещё кого-то, чтобы помочь им. Всё начинает рушиться. Ваше приложение не работает, как надо, а вы не можете вывести на рынок неготовый продукт. Вы тратите вдвое больше времени и денег, чем планировали. Вы не укладываетесь в сроки, и у вас быстро кончаются финансы. Ну и наконец, у вас так и не получается качественный продукт.
Если вы амбициозный певец, кого бы вы выбрали продюсером своего нового альбома: вашего соседа, у которого есть студия звукозаписи, или лауреата Grammy Jay-Z?
Или кого бы вы выбрали учителем рисования: вашего школьного учителя или Винсента ван Гога?
Такая же разница есть в качестве и навыках в разработке. Вы можете найти множество младших или средних разработчиков, но не так много экспертов. Вот через что вам придется пройти при создании сложной платформы вместе с неопытными разработчиками:
- Они не будут работать в удобное для вас время.
- Они плохо говорят по-английски, общаться с ними будет тяжело.
- Некоторые функции будут работать плохо или не будут работать вообще.
- Они не будут ничего придумывать при создании платформы (вы получите только то, что просили).
- Сложные части программы будут создаваться очень долго, если вообще будут.
- Не будет ощущения “команды”, для них это просто работа.
- Они, скорее всего, работают и над другими проектами и не посвящают всё свое время вашему.
- Им неинтересен ваш бизнес и маркетинговые цели.
- Они могут просто исчезнуть на несколько недель.
- Ваша платформа не будет масштабироваться и часто будет вылетать.
- В конце концов, вы потратите время и деньги.
- Вы расстроитесь и разозлитесь.
- Вы вернетесь в самое начало и будете искать эксперта.
Вы, наверное, задаётесь себе вопрос: Как избежать этого кошмара?
Если вы далёкий от технической сферы предприниматель, ответ прост. Вам нужно найти специалиста, опытного не только в технологиях, но и в управлении стартапом. Этот человек будет руководителем по программному продукту, а потенциально — вашим соучредителем (обычно с должностью управляющего директора). Вам ещё больше повезет, если вы найдете компанию по разработке ПО, которая знает все нюансы работы стартапов и обладает экспертными знаниями в необходимой сфере. Вот на что стоит обратить внимание при поиске партнера по разработке приложений:
- Когда они сталкиваются с проблемой, то быстро находят решение.
- Они вносят предложения по функционалу.
- Они вносят предложения по пользовательскому интерфейсу и алгоритму взаимодействия с пользователем.
- Они знают, какие фреймворки и кодовые базы лучше всего подойдут вашей платформе.
- Они разбираются в инфраструктуре back-end и масштабируемости.
- Если ваша платформа и будет прекращать работу, то крайне редко.
- Они будут знать о каждом баге и быстро его устранять.
- Они будут интересоваться вашим бизнесом и маркетинговыми целями.
- Их интересует то, что они создают, они хотят быть в вашей “команде”.
- Они уже создавали что-то похожее и это сэкономит ваше время.
- У них есть время на совещание по утрам, и они хорошо говорят по-английски.
- Они будут использовать удобные вам инструменты (в моем случае Slack, Trello, Google Drive, видео-чат).
- Они редко берут выходной, позволяя себе отдых только в относительно свободные дни.
- Они не ищут оправдания. Вместо этого они предлагают вам решения проблем.
Это далеко не весь список того, что дает вам работа с опытной компанией разработчиков. Это только основные моменты. Главный критерий необходимой вам команды: они хотят помочь вам разобраться в основных моментах вашей идеи, понимая вашу целевую аудиторию. Они должны помочь вам создать качественные технологии и принимать правильные бизнес-решения, что в итоге скажется на отношении пользователей к вашему продукту. То же самое касается пользовательского интерфейса, сайта, цифровых продуктов и социальных сетей. Ваши маркетинговые цели и идеи по развитию бизнеса должны быть тесно связаны с технологией, которую создает ваша команда.
Сложно найти подходящего партнера, но это того стоит.
Большинство моих клиентов, с которым я работал за эти годы, нанимали меня решать проблемы, созданные другими компаниями. Например, однажды клиенты сказали мне, что для создания приложения они наняли “галеру” из другой части света. За 10,000 долларов они получили шаблон мобильного приложения, который еле работал и постоянно вылетал. Тогда я рассказал, что бы они получили за 10,000 долларов, если бы сразу обратились ко мне. Меня наняли незамедлительно. Я мог бы спокойно быть руководителем производственного направления/начальником проектной группы, но я не мог бы никем управлять без экспертной команды разработчиков.
Конечно, работа с компанией топ-уровня обернется для вас соответствующими затратами. Как говорится в старой поговорке: “Бесплатный сыр только в мышеловке”. Вам нужна землянка, деревянный дом или особняк? Вы хотите дешевую машину, внедорожник или роскошный спорт-кар? Только когда вы определитесь, какое качество вы хотите (или можете себе позволить), стоит начинать думать о найме подходящих специалистов.
За 20 лет работы в сфере разработки сайтов и приложений мне повезло найти своего партнера по разработке. Ни одна другая компания не сравнится с этой блестящей и разноплановой командой разработчиков топ-класса. Написанный выше список качеств, по которым вам стоит искать партнера, идеально их описывает. Обратите внимания, они также видят свои недостатки и работают над их устранением.
Найти компанию, способную создать платформу высшего уровня сложности, — то же самое, что убедить Jay-Z быть продюсером вашего альбома. Более всего впечатляет умение этих программистов с легкостью справляться с любыми преградами. Мне очень нравится работать с ними над моей платформой сейчас и в будущем. Предлагаю вам сделать то же самое, чтобы избежать описанных выше кошмаров и ловушек.
Перевод статьи Jason Sherman: How to choose the right development partner when building a software platform