Аня Крх

Про выбор технологий в стартапе

Эту статью я специально написала для тех кто:

  • Хочет создать IT продукт, MVP, или внутренний IT проект
  • У кого разработка на начальной стадии, ещё ничего нет с т.з. кода
  • Кто ищет технического кофаундера, CTO, разработчиков для реализации своей идеи

... и при этом ...

  • Имеют (откуда-то) требование по стеку технологий на которых это должно быть реализовано

Вы делаете неправильно! Объясняю почему.

В своём телеграм канале я выкладывала статью о пирамиде задач. Если кратко, то задачи бывают разного уровня неопределённости. Задачи верхнего уровня не имеют правильного и единственного решения, например "хочу построить дом в котором мне будет удобно жить". Задачи низкого уровня не допускают вариативности, это задачи из серии "положить кирпич на кирпич".

Задача "создать продукт" — это задача высокого уровня, пусть и не самого высшего. Задача "написать функцию на языке python которая будет принимать на вход 3 коэффициента, решать квадратное уравнение, и возвращать 2 числа-решения" — это задача низкого уровня.

Указывая способ решения вашей задачи, вы в своей формулировке опускаете её по пирамиде работ ниже, чем она должна стоять. Потому что вы заранее определяете то, каким образом она должна быть решена. Причём вы не уточняете ещё с точки зрения бизнес требований (чем бы как раз стоило заняться), а лезите в чужую область.

К чему это приводит:

  • Вы сужаете свою задачу и количество потенциальных людей которые могут подойти для её решения
  • Тот человек, которого вы ищете на самом деле (который способен решать задачи высокого уровня и только такие задачи ему и интересны) пройдёт мимо
  • При этом тот человек который вам заведомо не подходит, стриггерится на перечисленные keywords и отправит заявку, это увеличит вероятность потратить и ваше и его время не на то, и ещё хорошо если вы поймёте что не подходите друг другу на этапе первого общения, а если когда уже деньги заплачены и работа началась?

Человеку, который вам реально подходит (уровень CTO), вы затрудняете задачу распознать метч и ответить вам, потому что ему придётся сделать дополнительную работу чтобы это понять. Пройти через диссонанс почему вы вроде ищете CTO, а запрос сформулирован будто на миддла. Отфильтровать из объявления лишнее и понять истинную мотивацию. На принятие этого решения есть несколько секунд и не факт что он будет готов вложить своё мозготопливо чтобы глубоко проанализировать текст объявления и взглянуть на него не так как это написано, а предположить что вы хотите на самом деле. А если стек технологий не его любимый, то ему нужно понять, эти требования реально обоснованы (например когда проект уже работает и нужно его развивать) или это сгенерил gpt и следовательно можно не обращать внимание. Ему придётся найти какие-то признаки по которым это можно понять. Не все готовы прочитав ваше объявление в чате телеграмма разматывать клубок о том что же вы имели ввиду, и тем более писать и задавать вопросы.

Как результат, вы думали что вы помогли своему потенциальному CTO тем что дали определённость, но на самом деле навредили и ему и себе. Сами потратили своё время на то чтобы спуститься по уровню работ ниже и декомпозировать большую задачу, в решении которой вы не разбираетесь (и не должны). Ещё и заставили человека (и не одного!) на той стороне делать обратное упражнение и подниматься выше, пытаться выяснять "А какую задачу вы решаете? Чтобы что? Почему? Зачем?".

По моему опыту, основные источники откуда берётся стек технологий в объявлениях на поиск CTO или создание MVP следующие:

  1. Друг подсказал
  2. В интернете прочитал
  3. GPT мне так сформулировал

С первым случаем всё просто. Если ваш друг знает как надо делать — то пусть он и делает.

Если в интернете написано что с помощью данных технологий можно сделать вашу задачу, ну да, наверняка можно. А там случайно не написано что можно сделать и по-другому? И вообще что существует множество различных стеков технологий и что современные языки программирования являются универсальными? Грубо говоря, можно что угодно сделать на чём угодно. Вы когда в интернете искали или у GPT спрашивали, в строке поиска ввели все требования к вашей системе? Требования по надёжности, масштабируемости, бюджету, планируемой нагрузки, ресурсов которые есть, обозначили компромиссы на которые готовы пойти? Вангую что нет.

Открою секрет, технологии обычно подбираются под команду. Если команда (или один исполнитель) уже 100 раз делал это на некоторой технологии, то он вашу задачу решит во много раз быстрее чем другая команда, которая будет разбираться походу. Даже если предположить что технологический стек во втором случае в 100 раз "лучше". Открою ещё один секрет, рынок технологий похож на обычный рынок, всё то что не эффективно — вымирает, а серебряных пуль нет. Нет никаких технологий которые "строго лучше" чем другие. У всех стеков есть плюсы, минусы и подводные камни.

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

Тут может быть возражение "как искать разработчика, если не знаешь какой стек должен быть?". А ответ звучит так. Вам не нужно искать разработчика, разработчик (одна разработческая единица) с вероятностью 99% не сможет решить вашу задачу перехода от нуля к единице. Вам нужно искать либо IT агентство, либо CTO.

Если вы ищете CTO, не нужно писать стек технологий! Вы так найдёте только джуна после курсов, который думает что может что-то сделать с нуля, ведь он прошёл tutorial по этой технологии.

Нужно формулировать задачу так как она есть. Вам нужно создание IT продукта? Так и пишите: нам нужно создать IT продукт с нуля, ищем человека который может это затащить. Всё. И вообще всё равно как это будет сделано. Имеет значение только влияние на бизнес и дальнейшее развитие с точки зрения бизнеса. Разговоры ведутся на вехрнем уровне пирамиды работ. Нужно просто честно написать всё от себя. То что именно вам важно. Не только вы ищете CTO, но и CTO ищет вас, вы хотите одного и того же. Важна суть, душа, а не вылизанная по форме gpt вакансия. Оставьте это там где большой рынок, где берут количеством и пытаются что-то автоматизировать, это происходит на низком уровне работ. А тут другие правила.