Будучи фрилансером, бродишь по всевозможным платформам, где публикуются вакансии и проекты. На Kleinanzeigen (бывший Ebay-Kleinanzeigen) при этом попадаешь довольно редко, а если и попадаешь, то по одной из трех причин: мазохизм, развлечение или отчаяние. Я принадлежу ко второй группе, а половиной пальца, возможно, к первой. Я не ищу там работу, она у меня есть. Я заглядываю туда, потому что то, что там можно найти, часто рассказывает об отрасли больше, чем любое объявление о вакансии.
Если искать там по обычным ключевым словам — «требуется программист», «создание сайта», «разработка приложения», — рано или поздно наткнешься на объявление, которое уже своим местом размещения бросается в глаза. Оно находится в рубрике «Отдам даром», куда обычно попадают продавленные диваны, картонные коробки для переезда и детская одежда, которые жалко выбрасывать. Его заголовок: «Разработчик приложения». Однако даром тут никого не отдают. Ищут того, кто создаст приложение бесплатно.
В тексте сказано: «Денег нет, так что вначале это будет неоплачиваемые дополнительные усилия, пока приложение не начнет приносить доход, если оно вообще этого добьется». Выбор рубрики тоже объясняет объявление: даром тут отдают вполне, причем с обеих сторон. Он отдает свое время и свои идеи, а другая сторона отдает реализацию. В этом смысле это справедливо.
В этой единственной мысли и кроется все заблуждение. Он приравнивает две разные вещи: иметь идею и создавать продукт. И он взаимозачитывает их друг против друга, пока в итоге не получается ноль, и каждый чувствует себя щедрым.
Этот случай — не единичная оплошность. Тот, кто, будучи разработчиком, ищет проекты на подобных платформах, рано или поздно натыкается на целый жанр объявлений, работающих по одной и той же схеме. Этот шаблон стоит разобрать. Для обеих сторон.
Закономерность, а не единичный случай
Объявление в рубрике «Отдам даром» — самый курьезный вариант, но далеко не единственный. То же самое базовое отношение встречается по всей стране, в разных тонах и с разным антуражем: то как поиск сооснователя на стартап-жаргоне, то адресованное исключительно студентам, то как небольшой проект, который должен выполняться в свободное время.
Один коммерческий заказчик обещает партнерство без бюджета, частное лицо оценивает свой запрос в 1 евро, третий заранее уточняет, что ищет не фрилансера, а члена команды. Общее у всех одно: платить не будут, по крайней мере не заранее и не деньгами.
Эти объявления приходят из Хемница, Ольденбурга, Дюссельдорфа, Меппена, Франкфурта, Вупперталя, Эгельсбаха и Бремена. Как от частных, так и от коммерческих заказчиков. И это лишь то, что я случайно подцепил, не ища целенаправленно и не заходя на платформу регулярно.
Тот, кто не заглядывает туда неделями, большинство таких объявлений вообще никогда не увидит. Сколько всего таких объявлений существует, на основе этого не вычислить. Да и вычислять не нужно: уже этот случайный улов демонстрирует одну и ту же схему в десятках городов, во все новых обличиях.
Одна фраза встречается в этих объявлениях снова и снова, в вариациях, но с одной и той же функцией. «Все необходимые концепции, данные и основы уже проработаны», — обещает один поиск сооснователя, «приложение теперь нужно только совместно доработать до конца». Другое объявление предлагает «полностью продуманную идею приложения», которую теперь нужно реализовать. Ключевое слово — «только». Оно превращает настоящую работу в формальность: идея есть, остальное — набор текста.
За этим стоит предположение о программном обеспечении, которое понятно, если сам никогда его не создавал. Предположение таково: идея — это сложная часть, а программирование — механическое исполнение. Подобно тому, как передают мастеру готовый чертеж, а он его выполняет.
Но чертеж описывает результат, который уже определен. Идея приложения — это предположение. Оно гласит: «Есть достаточно людей, у которых есть эта проблема, которым нравится мое решение и которые готовы за него платить».
Это три утверждения в одном предложении, соединенные союзом «и», и над всеми ними стоит четвертое слово: «достаточно».
Действительно ли у этих людей есть эта проблема, или она раздражает только самого автора идеи? Нравится ли им именно это решение, или они уже пользуются чем-то достаточно хорошим — запиской, таблицей, бесплатным приложением из магазина? И будут ли они за это платить, или они найдут приложение милым, но не стоящим и трех евро?
Каждое «и» — это фильтр, уменьшающий группу. То, что остается после последнего фильтра, всё еще должно быть рынком, а не двадцатью людьми. Каждый из этих вопросов остается открытым, пока его никто не проверил. «Полностью продумано» в подавляющем большинстве случаев означает именно это: додумано до конца в голове одного человека, не проверено на реальности и нигде не записано так, чтобы второй человек мог по этому описанию что-то создать.
«У меня есть идея, тебе осталось только приготовить»
Сравнение, которое подходит больше всего, — это, впрочем, не чертеж, а ресторан. «У меня есть идея, тебе осталось только приготовить». Каждый сразу чувствует, что здесь что-то не так, потому что готовка — это не остаток, а самое главное.
И чаще всего дело не ограничивается готовкой. Повар должен также принести с собой собственную кухню. В переводе на программное обеспечение: собственную среду разработки, а сегодня еще и собственного ИИ-ассистента, токены за свой счет. Тот, кто хочет платить в случае успеха, заставляет другую сторону работать бесплатно.
И даже если еда хороша, ресторан от этого еще далеко не полон. В случае с программным обеспечением та же ошибка в мышлении просто менее заметна, потому что готовый продукт в конце кажется работающим сам по себе. То, что происходит до и вокруг этого, остается невидимым для посторонних. И именно здесь начинается работа.
Прежде чем появится первая строка кода, нужно ответить на ряд вопросов. Ни на один из них нельзя ответить программированием. Вопросы из предложения-предположения — о людях, проблеме, решении и деньгах — это только начало. Ответы на них уже находятся снаружи, в исследовании и реальных разговорах.
При этом самым тщательным образом пропускается вопрос о деньгах: заплатит ли кто-то за это, сколько и по какой модели? Одно объявление требует приложение, которое должно «включать платную подписку», с оплатой «после каждой продажи подписки». Будет ли вообще кто-то оформлять эту подписку, нигде не указано. Это принимается как данность.
Надежные ответы дает только сама проверка: реальные разговоры, простой прототип, горстка тестовых пользователей, которых просят заплатить. То, что из этого получается, часто меняет продукт сильнее, чем любое более позднее дизайнерское решение. Иногда первоначальная идея при этом отбрасывается полностью, и остается меньшая, которая работает.
Только после этого начинается то, что многие считают настоящим началом, и это тоже еще не программирование. Из проверенной идеи сначала возникают сценарии использования.
Что делает пользователь шаг за шагом, от первого открытия до момента, когда приложение действительно принесло ему пользу? Где он входит, где его теряешь, что происходит, когда что-то идет не так или он не открывает приложение три недели?
Из сценариев возникают требования
Из этих сценариев возникают требования, как функциональные, так и нефункциональные: что приложение должно уметь и как оно должно себя при этом вести, насколько быстро, насколько надежно, насколько безопасно. Из этого следует, какие данные вообще возникают, где они хранятся и как связаны между собой.
И только из этого вытекают технические условия, которые со всем этим взаимодействуют: платформа, интерфейсы, архитектура. Каждый из этих уровней может перевернуть уровень над ним. Если в самом низу обнаруживается, что обещанная функция конфликтует с правилами защиты данных, всё, что выше, сдвигается вместе с ней.
Это не теоретическая мелочность. Приложение, которое считывает данные о здоровье или теле, как намекается в одном из объявлений, — это юридически и технически совсем другой проект, чем список покупок, включая GDPR и безопасность данных. А приложение, которое зависит от чужой платформы, например от интерфейса социальной сети, несет риск того, что эта платформа изменит свои правила или закроет доступ. Такие вещи решают вопрос о реализуемости и объеме работ задолго до того, как будет написана первая строка кода.