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