Ну, что касается контроля версий, кто-то должен взять на себя инициативу и настроить базовую структуру проекта, каталоги и т. Д. И сообщить об этом команде. В проектах, над которыми я работаю, обычно это архитектор или старший разработчик, который знает лучшие практики организации проектов для команды / компании.
Что касается избежания того, чтобы несколько человек работали над одними и теми же задачами, это функция управления проектом; кто-то должен определить, какие задачи необходимо выполнить, и сообщить об этом команде. Если вы работаете в среде Agile / Scrum, команда может разделять и раздавать рабочие элементы между собой, но в любом случае вам нужно общаться, чтобы не выполнять одну и ту же работу дважды.
EDIT
Чтобы решить проблему, связанную с несколькими людьми, работающими над одной и той же задачей, я склонен работать в небольших группах, по 2-6 человек; в этой среде у меня был большой успех с scrum подходом, использующим методологию Crystal Clear :
- Архитектор (ы) / дизайнер (ы) предлагают дизайн высокого уровня
- Архитектор (ы) / проектировщик (и) определяют итерации / поставки, первая из которых - «каркас проекта», который состоит из архитектурных и серверных компонентов и тонкого фрагмента приложения
- Ведущий разбивает функции на 1-3 дня / единицы работы (по оценкам)
- Команда встречается и обсуждает приоритет, сроки и зависимости задач, а также делит первый набор задач
- Команда ежедневно проводит короткие встречи для обсуждения статуса / приоритетов и зависимостей, а также при необходимости меняет направление
В более крупных проектах / командах вам почти наверняка понадобится человек, основная работа которого посвящена отслеживанию статуса, зависимостей и конфликтов.