Будучи разработчиком программного обеспечения в течение 6 лет, у меня был целый ряд опытов с разными командами, от отрицательных до положительных.Структурирование команды разработчиков программного обеспечения - по специализации или по задаче?
Один из лучших впечатлений, которые у меня были, был в определенной команде проекта в финансовой организации.
Существовал ряд факторов, которые сделали проект успешным, но я думаю, что структура команды была ключевым аспектом этого.
Резюмируя:
Мы имели разработчиков, которые специализируются в различных аспектах. 2 разработчиков, которые хорошо разбирались в пользовательском интерфейсе и 2-3 разработчиках, которые умели писать бизнес-логику и код взаимодействия с базой данных.
Код был строго разделен на слои презентации, бизнеса и данных.
У каждого разработчика был базовый знание всей системы. Даже если они не были экспертами во всем, у них было общее представление о том, как все висит вместе и может писать код в любом слое, если это необходимо.
Некоторые задачи включали разработчика во весь вертикальный срез функциональности (включая работу на всех уровнях).
Другие задачи касались только области приложения, в которой разработчик специализировался (например, просто задача пользовательского интерфейса или просто задача базы данных).
Я думаю, что это хорошо работает, потому что:
Разработчики смогли узнать всю систему и перейти в другой слой, если это необходимо.
Разработчики сохранили специализацию, и если разработчику нужна была помощь с чем-то, с чем он не знаком, всегда был человек.
архитектура был жестким, но людей были гибкими, так как они должны быть.
Существует ли формальный термин для такого рода структуры команды? Это звучит как Agile/SCRUM?
(Это не похоже, полностью планируется в то время.)
Есть мысли?
Спасибо за удивительную ссылку. Очень интересно сравнить это с тем, что мы делали в моей предыдущей компании. – Jonathan