Фриланс, студія чи компанія - кого вибрати для розробки ПЗ?

Фриланс, студія чи ІТ-компанія: глибоке порівняння варіантів для розробки вашого програмного продукту.

Фриланс, студія чи компанія - кого вибрати для розробки ПЗ?
INGELLO / BUSINESS2294

Мені регулярно ставлять це питання, і зазвичай із підступом. Людина вже десь обпеклася й хоче, щоб я підтвердив її нову теорію. «Фрилансери всі зникають, правда ж?» або «Компанії тільки роздувають кошториси, краще взяти одного тямущого хлопця». Я щоразу відповідаю однаково: питання поставлено неправильно. Не можна обрати виконавця, не розуміючи, що саме Ви будуєте. Це все одно що питати, кого краще найняти, теслю чи будівельну компанію, не уточнивши, чи йдеться про шпаківню, чи про торговий центр. Я багато років будую системи для бізнесу, працював і як фрилансер, і в студії, і зараз у компанії, тому можу чесно розповісти про всі три варіанти, включно з їхніми темними сторонами. Так, і про нашу теж.

Спершу розмір задачі, потім виконавець

Будь-який програмний проєкт можна грубо покласти на шкалу складності. На одному кінці простий сайт-візитка, лендинг, невелике доопрацювання готового магазину, скрипт для вивантаження даних. На іншому кінці система, у якій є ролі, права доступу, інтеграції з банком, складом і бухгалтерією, звітність для власника та десятки співробітників, які щодня в ній працюють. Посередині все інше. І в кожної точки цієї шкали свій природний виконавець, приблизно як у кожної річки свій тип мосту. Через струмок вистачить дошки. Через Дніпро потрібен інженерний проєкт, геологи, розрахунок навантажень і бригада, яка обслуговуватиме цей міст наступні тридцять років.

Головна помилка, яку я бачу, це коли через Дніпро намагаються перекинути дошку, бо «дошка дешевша». Друга, рідша, але теж прикра: коли через струмок будують вантовий міст, бо «серйозна компанія має робити серйозно».

Фрилансер: свобода і самотність

У доброго фрилансера є величезні переваги. Він дешевший, бо в нього немає офісу, менеджерів і бухгалтерії. Він швидше стартує, бо йому не треба погоджувати ресурси всередині команди. З ним можна говорити напряму, без посередників. На невеликих і чітко окреслених задачах фрилансер часто виявляється найкращим вибором, і я сам багато років так працював.

Але у фрилансера є властивість, про яку замовники згадують запізно: він один. Він один хворіє, один іде у відпустку, один вигорає, один отримує цікавіше замовлення. Коли він зникає, а зникають усі, рано чи пізно, з найрізноманітніших причин, разом із ним зникає все знання про систему. Документації зазвичай немає, бо писати її нікому й ні для чого, усе ж і так у голові. Архітектура теж живе в голові, і вона така, яку одна людина встигла вигадати між дедлайнами. Новий виконавець відкриває код і каже знамениту фразу: «Тут простіше переписати». І це не завжди лінощі, іноді це правда.

Студія: гарно і швидко, поки система проста

Студія це кілька людей, зазвичай сильних у дизайні та верстці. У них є портфоліо з гарними сайтами, налагоджений процес для типових проєктів, менеджер, який відповідає на листи. Для сайту компанії, промосторінки, інтернет-магазину на готовій платформі студія часто оптимальна: дешевша за компанію, надійніша за фрилансера, і результат зазвичай виглядає чудово.

Проблеми починаються, коли студію просять зробити систему. Студія звикла мислити екранами, а система живе даними, процесами та інтеграціями. Я бачив багато проєктів, де інтерфейс був прекрасний, а під ним лежала база даних, спроєктована на коліні, без урахування того, що за рік замовлень стане в сто разів більше, а бухгалтерія захоче звіт, якого схема даних просто не дозволяє побудувати. Це як будинок із розкішним фасадом і фундаментом від сараю. Поки в ньому ніхто не живе, усе добре.

Компанія: процеси, архітектура і відповідальність

ІТ-компанія дорожча, і це треба чесно визнати одразу. Ви платите не лише за програмістів, а й за архітектора, аналітика, тестувальника, менеджера, за процеси, які здаються зайвими, доки не станеться пожежа. Натомість Ви отримуєте те, чого немає в перших двох: систему, яка не залежить від однієї людини. Архітектурний контроль, за якого рішення ухвалюються не між двома дедлайнами, а з розрахунком на зростання. Документацію, тести, код-ревʼю. Юридичну відповідальність і договір, за яким можна щось вимагати. Можливість масштабувати команду, якщо проєкт виріс, і скоротити, якщо треба заощадити.

Але й у компаній є свій антипатерн, і я не вдаватиму, що його немає. Велика компанія може втопити маленький проєкт у бюрократії: три тижні на оцінку, пʼять дзвінків на погодження кольору кнопки, звіти заради звітів. Якщо Вам потрібен лендинг, а Вам продають «дискавері-фазу на два місяці», Ви прийшли не туди. Добра компанія вміє чесно сказати: «Вам не до нас, Вам вистачить фрилансера, ось на що дивитися під час вибору».

Як обирати на практиці

Я зазвичай пропоную клієнтові три питання. Перше: що буде, якщо виконавець зникне завтра? Якщо відповідь «ну, знайдемо іншого, і він за тиждень розбереться», це задача для фрилансера або студії. Якщо відповідь «стане відділ продажів», Вам потрібна компанія або принаймні команда з документацією та архітектором. Друге: скільки років цій системі жити? Сайт під акцію живе пів року. Облікова система живе десять років і переживає трьох директорів. Третє: скільки зовнішніх систем вона зачіпатиме? Кожна інтеграція з банком, складом, CRM чи державним реєстром множить складність, і тут одинак майже завжди програє.

І ще одна практична порада, яка заощадила моїм клієнтам чимало грошей. Хоч би якого виконавця Ви обрали, вимагайте, щоб код лежав у Вашому репозиторії, доступи були у Вас, а архітектуру було описано хоча б на кількох сторінках. Це страховка на випадок будь-якого зі сценаріїв вище. Ми в Ingello для цього використовуємо Fractal: систему описано декларативно, і за описом будь-який інженер розуміє, як вона влаштована, навіть якщо перший автор давно зайнятий іншим проєктом. Але страховку можна зробити й без нас, головне зробити її до того, як вона знадобиться. Вдалого Вам вибору, колеги, і нехай Ваш міст відповідає Вашій річці.