Я работаю в компании, которая делает веб-приложения для различных банков и некоторых небольших электронных магазинов У нас работает около 20 разработчиков и в разработке одновременно находятся 4-5 проектов. Наши команды разработчиков мало взаимодействуют, и многие одинаковые задачи решаются разными способами (от хороших до плохих).
Мне интересно, будет ли хорошей идеей для компании иметь команду программистов, которые занимаются исследованием существующих фреймворков и постоянно совершенствуют общую библиотеку функций и общий фреймворк, чтобы создавать текущие и будущие проекты намного быстрее и эффективнее.
Насколько большой должна быть такая команда?
Также должны ли в нем быть постоянные члены, которые обучают других, или люди должны ротироваться?
Обновление: Я подумал об общем проекте, над которым люди могли бы работать для развлечения, что могло бы вызвать некоторый интерес. Кажется, что когда у людей есть проблемы с работой, решения, которые они придумывают, не самые лучшие.
Важным моментом является то, что невозможно разработать хороший фреймворк в полной изоляции. Хорошие фреймворки вырастают органично: когда программист замечает, что ему нужна какая-то конкретная функциональность, он добавляет ее в фреймворк, и так фреймворк растет понемногу — в отличие от создания «идеального фреймворка» заранее, который никогда не работает, потому что архитектор не может знать обо всех возможных вариантах использования.
Конечно, у органически растущего фреймворка есть и обратная сторона: его внутренняя целостность может быть не слишком хорошей, и он превращается в спагетти. Если ваша команда поддерживает хорошие внутренние связи, то вы можете объединить лучшее из обоих миров: отдельная команда архитекторов, поддерживающая целостность фреймворка, но создающая для реальных потребностей конечных пользователей (разработчиков).