У меня вчера возник спор с одним человеком. Он говорил о том, что команда программистов в принципе не нужна. Ведь можно просто нанять пять супер-сильных программистов на фрилансе. И они сделают проект настолько же хорошо, но дешевле.
И я решил оформить свои мысли в тестовом виде. Вдруг кому-то будет интересно.
Если вдруг человек хочет создать свой интернет-проект, то он всегда забывает про одну очень важную вещь - слаженность
Заказчик думает, что он может просто нанять пятерых очень сильных программистов, поставить им задачу, спросить оценку и через некоторое время прийти за результатом. Но результата не будет. Потому что каждый программист дает оценку из рассчета на то, что все будет нормально. А нормально не будет.
Вспомните все эти фильмы про футбол или баскетбол и задумайтесь над тем какую роль там играет тренер. Он постоянно мотивирует игроков, думает над тактикой, он знает кто с кем лучше работает в связке.
Вы знаете хоть одну команду, которая играет без тренера? Вот примерно так же будут работать пять фрилансеров на вашем проекте.
Инструментарий
В любой команде есть уже проверенные инструменты, стандарты, подходы. Люди уже к ним привыкли.
Если ты как заказчик нанимаешь фрилансеров, то в любом случае будет ад.
Один из фрилансеров любит использовать React, а другой Vue, будут споры и холивары. Или, например, будут споры какой стейт менеджер лучше использовать MobX или Redux. Потом придет третий фрилансер и скажет, что они вообще все тупые и лучше всего для проекта использовать Rxjs и Angualr.
Могут быть проблемы с БД, одни привыкли использовать Active Record, другие пишут прямые запросы, а третьи привыкли писать хранимые процедуры и вызывать их в коде. И если нет стандартизации и каких-то правил, то будет бардак.
Чтобы не было таких вот проблем в команде есть тимлид. Это человек, который пользуется уважением внутри команды и уже доказал свою компетентность. Он и берет ответственность на себя выбирая инструменты и технологии. И работая в одной команде, под одной крышей проще контролировать такие проблемы, если же это удаленная команда не сработавшихся фрилансеров, то такую работу организовать очень сложно, особенно если у заказчика нет опыта в этом, и он доверяет заложение архитектуры и выбор инструментов «самому опытному» по его мнению разработчику, который может даже не иметь необходимых софт скилов.
Бывают, так же, ситуации, когда заказчик имеет своего знакомого. Которого назначает тимлидом. И просит руководить командой или фрилансерами. Но если такой человек не пользуется уважением, то точно так же споры неизбежны. Фрилансеры сразу же поймут, что перед ними не опытный человек. И фактически, будут слушаться его распоряжений, но не будут уважать его мнения. И в таком случае не редки случаи саботажа. Когда такой вот типлид, который не является авторитетом для команды говорит использовать некоторые технологии. Программисты с ним спорят, но все равно начинают использовать то, что он сказал. Потом возникают проблемы, и программисты говорят: "ну мы же говорили, что этого делать не нужно", вместо того чтобы решать проблемы.
Личностная неприязнь
У нас часто бывали ситуации, когда два программиста не могли работать вместе на одном проекте. У них всегда был разный взгляд на архитектуру проекта. В итоге работа превращалась в постоянные споры.
И для каждого из программистов важным было то, чтобы у другого не получилось и он смог бы сказать: "Я же говорил". Реализация проекта уже никого не интересовала.
При этом каждый программист сам по себе адекватный и может хорошо работать в команде.
Для этого и нужен менеджер проекта и грамотный тимлид, которые вовремя это увидят и переформируют команду. И соберут такую команду, которая сможет работать быстро и эффективно.
Оперативность
Кроме того, бывают срочные задачи. Которые просто невозможно решить, когда люди находятся в разных офисах.
У нас на одном из проектов была сиутация, которую нужно было решить в этот же день. Иначе клиент терял большие деньги и имел большие проблемы.
Менджер, собрал команду, рассказал о проблеме и ее важности, попросил всех остаться. Ребята проработали почти всю ночь, сам менджер тоже не сидел и ждал пока все пофиксят, но и самостоятельно принимал участие в устранении проблемы, подбадривал команду, заказал на всех ужин, помогал решать личные вопросы, так как не все могли остатся, кому-то надо было отвезти детей к бабушке, но личного транспорта небыло, так менеджер попросил своего личного друга. То есть все работали на результат.
Врядли такое может произойти когда у вас все работают удаленно.
Вывод
Фрилансеров можно использовать только для совсем небольших и не срочных проектов.
И даже если вы нанимаете двух фрилансеров, то нанимайте менеджера проектов, который будет контролировать процесс разработки и разруливать все сложные ситуации. Не просто спрашивать: "Ну, как дела?" у программистов. А глубоко погружаться в процесс.