Технические командные роли
Коллективная разработка
Авторская разработка
Авторская разработка – принцип создания программных продуктов, при котором весь жизненный цикл разработки поддерживается единственным разработчиком.
Авторская разработка предполагает достижение профессионального успеха, известности и славы в одиночку.
Примеры известных авторских разработок: текстовый редактор Лексикон (Е. М. Веселов), трансляторы с языков Algol-68 (П. Наур), и Pascal (H. Вирт) и др.
Принцип авторской разработки неприменим для многих современных разработок из-за их сложности, объема и требований к качеству и сопровождению.
Наиболее приемлем принцип авторской разработки в области наукоемких приложений. Для таких приложений характерна необходимость многолетнего изучения предметной области, отсутствие начального финансирования проекта и малая рентабельность, определяемая узким кругом пользователей.
Считается, что авторская разработка может выигрывать по производительности в несколько раз у коллективной за счет следующих характеристик:
|
|
- исключения межличностных коммуникаций, связанных с необходимостью порождения и изучения большого количества технологической документации;
- исключения работ по разбиению проекта на составляющие, по распределению их между исполнителями, по координации деятельности исполнителей и контролю за их работой.
Однако объем программного продукта, выполненного методом авторской разработки обычно в 5÷20 раз меньше по сравнению с индустриальными аналогами.
Наибольшую популярность современная авторская разработка получила при создании условно-бесплатных программных продуктов (shareware).
Одним из основных вопросов коллективной разработки является разделение труда – от равноправных соисполнителей до организации в виде жесткой иерархии (например, бригады главного программиста).
Бригада равноправных соисполнителей обычно состоит из специалистов, занимающихся примерно подобными задачами в рамках одного проекта. В рамках одной бригады может быть несколько специализаций. Тип работы определяет содержание и природу выполняемой работы:
Разработка приложений:
- программист;
- специалист по инженерии программирования;
- специалист по инженерии знаний.
Работа с приложениями:
- специалист по приложениям;
- администратор данных;
- администратор базы данных.
Техническая поддержка:
- системный администратор;
- сетевой администратор;
- администратор коммуникаций.
Обеспечение качества продукта:
- технический писатель;
- инженер тестирования;
|
|
- инженер качества.
Маркетинг:
- специалист по сопровождению продукта;
- специалист по продажам продукта.
Отдельное место занимает специализация системного интегратора. Основные задачи системного интегратора – предложить заказчику вариант решения его проблемы, выбрав наиболее приемлемый по цене и технике, и реализовать его. Таким образом, системный интегратор продает решения и несет ответственность за их реализацию. Системный интегратор как профессионал должен обладать знаниями из очень многих областей – прикладное и системное программное обеспечение, администрирование систем, аппаратура, сети, экономика и т. п.
Бригады главного программиста подобны хирургическим бригадам. Один участник команды занимается основной работой – остальные оказывают ему всевозможную поддержку.
В состав бригады входят следующие специалисты.
Главный программист. Лично выполняет анализ и проектирование, создание и отладку кода, написание документации. Должен обладать талантом, большим опытом работы и существенными знаниями.
Дублер. Может выполнять любую работу главного программиста, но менее опытен. Подстраховывает главного программиста, может заниматься написанием кода, но не несет ответственности за проект.
Администратор (он же – менеджер). Под его контролем – деньги, люди, помещения, машинные ресурсы, контакты с другими группами и руководством.
Редактор. Фактически, это технический писатель. Его задача – критически переработать черновики документации (созданные главным программистом), снабдить их ссылками и обеспечить публикацию или помещение в Интернете.
Языковед. Эксперт в тонкостях языков программирования. Может найти эффективные способы использования языка для решения сложных задач. Обычно работает с несколькими бригадами.
Инструментальщик. Разработчик специализированных инструментов – утилит и скриптов. Поддерживает основной инструментарий и оказывает по нему консультации. При необходимости может осуществлять администрирование ОС.
Отладчик. Разработчик тестов и организатор тестирования продукта.
Делопроизводитель. Отвечает за регистрацию всех технических данных бригады в библиотеке программного продукта. Благодаря делопроизводителю, активные программисты освобождаются от рутинных работ. В настоящее время функции делопроизводителя автоматизированы и переданы репозиторию проекта.
Принято выделять восемь ключевых ролей в проекте.
Председатель. Выбирает путь, по которому команда движется вперед к общим целям. Умеет обнаружить сильные и слабые стороны команды и обеспечить наибольшее применение потенциала каждого ее участника.
Архитектор. Он же оформитель. Придает законченную форму действиям команды. Имеет четкое представление о проблемах и их возможных решениях.
Генератор идей. Предлагает радикально новые идеи и стратегии, новые подходы к решению проблем, с которыми сталкивается группа. Особое внимание уделяет главным проблемам.
Критик. Он же скептик, оценивающий проблемы с прагматической точки зрения. Ищет недостатки, изъяны и недоделки. Компенсирует оптимизм генератора идей.
Исполнитель. Работник, собственно занимающийся написанием кода. Как правило, он не обладает широтой кругозора.
Завершающий. Поддерживает в команде настойчивость в достижении цели. Играет доминирующую роль на завершающих стадиях разработки.
Дипломат. Поддерживает силу духа в участниках проекта. Оказывает им помощь в трудных положениях. Пытается улучшить взаимоотношения в команде.
Организатор. Обнаруживает и сообщает о новых идеях, разработках и ресурсах. Имеет много друзей и связей в своей организации, с помощью которых можно выпросить или одолжить необходимые ресурсы.
|
|
В реальных командах программистов могут быть выделены не все из этих ролей. Роль исполнителя часто берут на себя сразу несколько членов команды.