Согласно исследованиям, проводимым компанией CNewsAnalytics, среди 100 крупнейших ИТ-компаний России, более 80% занимаются разработкой и поддержкой программного обеспечения [1]. Данные за 2013-2015 гг. показывают, что выручка поставщиков ИТ-решений в России растет, несмотря на кризис [2]. Однако в связи с сокращением бюджетов, выделяемых производственными и торговыми компаниями на оптимизацию бизнеса и внедрение информационных систем, системные интеграторы вынуждены сокращать и свои расходы, оптимизируя деятельность, чтобы продолжать успешно конкурировать на рынке. Это значит, что пристальное внимание будет уделяться эффективному использованию и планированию ресурсов.
Данная работа посвящена анализу процесса организации работ в команде разработчиков программного обеспечения в рамках проектной деятельности с точки зрения эффективности распределения задач между ними. Распределение человеческих ресурсов между проектами, определение объема работ как по проекту, так и для каждого члена проектной команды, относится к этапу планирования проекта, а, следовательно, является зоной повышенного риска, так как стоимость ошибки планирования для любого проекта увеличивается по мере реализации проекта и в конечном счете может стать причиной его провала.
На сегодняшний день методологии управления проектами и методологии разработки программного обеспечения предлагают четыре основных подхода к распределению задач в команде: традиционный экспертный (задачи распределяет руководитель), командные методы организации планирования и распределения задач (Scrum, Poker Planning, Kanban) и методы, основанные на алгоритмах распределения ресурсов. Перечисленные подходы рассматривают процесс распределения задач в направлении от руководителя к подчиненным. В последние 5-10 лет, развитие получает новый подход: тендерный метод распределения задач в команде, который становится актуален тем, что позволяет исполнителям принять непосредственное участие в планировании и выборе задач на исполнение. На сегодняшний день разработаны алгоритмы, основанные на теории аукционов, симулирующие метод: определение победителя, определение выигрыша [3, 24]. Методологическая основа метода с точки зрения применения его на практике недостаточно проработана, нет четких рекомендаций по организации процесса распределения задач с использованием аукциона. Основные разработки в этом направлении принадлежат Крылову С.В., сформулировавшему основные принципы тендерного метода распределения задач в команде.
Актуальность данной работы состоит в том, чтобы оценить возможность применения тендерного метода для распределения задач на практике. Компания, в рамках которой проводится исследование, занимается модификацией и внедрением информационных систем. На сегодняшний день Компания столкнулась со значительными сложностями при выполнении работ по нескольким проектам, так как возросло число задач, количество исполнителей не изменилось, и процесс анализа и распределения задач руководителями групп стал занимать значительную часть времени. Более того, заинтересованность исполнителей снизилась по причине возросшей нагрузки и отсутствия внимания к личной мотивации сотрудников. В связи с этим возникла потребность в пересмотре как методов управления проектами в Компании в целом, так и в четком определении порядка распределения непрерывно появляющихся задач таким образом, чтобы учитывать уровень развития исполнителя и его личную заинтересованность в выполнении задачи.
Для решения проблемы было предложено оценить применимость теории аукционов, то есть тендерного метода распределения задач, и адаптировать до уровня методики, которую можно будет использовать также и другим компаниям с аналогичной структурой.
Объектом исследования является процесс распределения задач в команде разработчиков программного обеспечения. Предметом исследования является теория аукционов в качестве метода распределения задач.
Цель выпускной квалификационной работы - разработать методику распределения задач на основе теории аукционов.
Разрабатываемая методика ориентирована преимущественно на функциональных менеджеров (в сферах программирования, веб-проектирования, дизайна и пр.) и менеджеров проекта, отвечающих за срок и стоимость разработки.
Для достижения поставленной цели были выделены следующие задачи:
. Анализ стандартов, методологий и методов, касающихся распределения задач в команде и организации проектной деятельности. В результате требуется получить перечень подходов, которые можно будет использовать для разрабатываемой методики, и перечень ограничений, которые необходимо учесть.
. Изучение и анализ теории аукционов, степень ее проработки в сфере управления человеческими ресурсами, на основе опубликованных статей и научных исследований.
. Подготовка команды и инструмента для проведения эксперимента, применения методики и сбора статистики.
. Анализ полученных на основе эксперимента результатов, расчет результатов эксперимента.
. Разработка методики распределения задач путем организации аукциона с учетом результатов эксперимента. Постановка задачи на автоматизацию процесса планирования и распределения задач в команде.
В первой главе настоящей работы будет рассмотрена теоретическая и методологическая составляющая исследования: определение понятия аукциона, изучение подходов к распределению задач и анализ их достоинств и недостатков; описание существующей методики распределения задач методом проведения аукциона. Вторая глава посвящена анализу применения тендерного метода в Компании, с помощью проведения эксперимента: описание подготовки к проведению эксперимента и анализ результатов его проведения. По результатам эксперимента было проведено интервью с целью определения качественных требований к тендерному методу. Результатом исследования является разработанная методика распределения задач в команде, которая подробно описана в третьей главе.
Данная глава посвящена исследованию теоретических и практических научных разработок на стыке управленческого менеджмента в сфере управления ИТ-проектами и одного из направлений теории игр - теории аукционов. Для систематизации знаний были проанализированы методологии управления проектами и модели разработки программного обеспечения. Результатом исследования является набор рекомендаций и ограничений для разработки методики распределения задач в команде разработчиков.
тендерный разработчик программный
Подход к организации работы в команде проекта между менеджером и исполнителями с целью постановки задач как правило тесно связан с методологией управления проектом, при этом можно выделить несколько основных методов распределения ресурсов. Прежде чем приступить к анализу процессов планирования и управления человеческими ресурсами необходимо обозначить причину возникновения потребности в оптимизации процесса распределения задач между исполнителями.
Под распределением задач понимается соотношение работ по задаче и исполнителя. Назначение исполнителя на задачу возможно при условии, что исполнитель обладает достаточными навыками для выполнения задачи. Выделяются следующие методы распределения задач: традиционный экспертный (задачи распределяет функциональный руководитель), командный (чаще всего из гибких методологий разработки, Scrum, Poker Planning), эвристический (алгоритмы построения расписаний, распределения ресурсов).
Основным на сегодняшний день является экспертный подход к принятию решения о распределении задач: руководитель функциональной группы имеет в подчинении ограниченное количество специалистов, при поступлении новой задачи передает ее на исполнение одному или нескольким исполнителям с учетом своего представления об их навыках и квалификации, с учетом сроков выполнения и прочими факторами. Однако в условиях непрерывно появляющихся задач, ограниченного числа специалистов руководитель может допускать ошибки и распределять задачи таким образом, что не будут максимально задействованы навыки каждого или наоборот, загрузка высококвалифицированных специалистов будет значительно отличаться от развивающихся сотрудников. Как показал расчет загрузки персонала (время выполнения задач по проектам к общему числу рабочих часов за месяц) за 2014 год в Компании, в рамках которой проводилось исследование, фактическая загрузка высококвалифицированного разработчика составляет 104-120% в месяц, основного состава разработчиков от 63% до 83%. При этом выполнение 43% задач превышают сроки, запланированные на их реализацию.
Руководитель группы, который распределяет задачи между сотрудниками может не учесть всех факторов, влияющих на результат выполнения задачи. Это влияет как на результат работы отдельного специалиста, так и на результат выполняемого проекта. Более того, производительность исполнителей периодически падает, так как отсутствует необходимый уровень мотивации и заинтересованности. Централизованное распределение задач между исполнителями не дает возможность специалистам проявить себя, выбирать задачи самостоятельно. В связи с этим возникает потребность в пересмотре принципов планирования специалистов на проектах и метода распределения задач между ними.
Таким образом, проблема, которая должна быть решена в
ходе исследования звучит следующим образом: отсутствие личной мотивации и
заинтересованности исполнителей выполнять работу на проектах быстро по причине
централизованного распределения задач и назначения максимально возможного
времени на исполнение.
Для оценки методологической составляющей процесса распределения задач в команде на проекте необходимо изучить основные стандарты по управлению проектами. По стандарту ГОСТ Р 54869-2011 управление проектом - это планирование, организация и контроль трудовых, финансовых и материально-технических ресурсов проекта, направленных на эффективное достижение целей проекта [4]. Исходя из определения стандарты и методологии управления проектами должны содержать ряд рекомендаций по процессу планирования и управления человеческими ресурсами, в том числе предоставлять перечень лучших практик по организации распределения задач. В ходе исследования были обзорно изучены популярные методологии управления проектами: PMI (PMBoK), PRINCE2, P2M, ГОСТ Р 54869-2011 [5].
Методология управления проектами, разработанная институтом управления проектами (PMI), изложена в своде знаний управления проектами (PMBoK). Особенность методологии заключается в рассмотрении управления проектами как совокупности процессов, сгруппированных по девяти областям знаний. Распределение задач в проекте является частью процесса руководства и управления проекта. Среди прочего, процесс включает в себя подбор, подготовку и управление командой проекта, налаживание и управление каналами коммуникаций как внешними, так и внутренними. Предполагается, что задачи распределены заранее, а их перечень и исполнители указаны в плане проекта. Однако, специфика итеративных проектов по разработке программного обеспечения не позволяет в полной мере распределить задачи на этапе планирования. Данный тезис, однако, не противоречит применимости методологии в подобного рода проектах, так как методы управления подходят для задачи распределения работ. Основными методами и инструментами являются экспертная оценка и совещания. Таким образом, либо руководитель назначает сотрудников на выполнение задания, либо все решается коллегиально. Еще одним инструментом является использование информационных систем, однако свод знаний не дает четких разъяснений на счет задействования программных продуктов в принятии решений [6].
Методология Prince 2 помимо проектного менеджера предполагает наличие руководителя команды. Проектный менеджер дает распоряжение о распределении пакета задач. Руководитель команды распределяет задачи равномерно, пишет план работ по пакету, контролирует работу исполнителей и отчитывается перед менеджером. Очевидно, данный вид взаимодействий свойственен большим проектам. Методология не дает четкого указания по директивному распределению задач руководителем команды и определяет его как посредника между менеджером и командой, и ее представителем. Соответственно, его основная задача состоит в передаче информации без искажений и отстаивание интересов команды. По сути, метод распределения задач остается на усмотрение самой команды. За процедуру отвечает руководитель команды проекта [7].
ГОСТ Р 54869-2011 также не дает четких инструкций по распределению задач в проекте. Требованию к проекту, как и в PMBoK, описаны через призму процессного подхода. Очевидно, процедура распределения задач включена в процесс планирования персонала, выходом которого является определенное количество назначенных на проект сотрудников, их полномочия, ответственность и обязанности. Соответственно, данный процесс и предполагает распределение задач. Стандарт не раскрывает содержания процесса, ровно, как и методов распределения задач [8].
Японский стандарт P2M разделяет управление проектами на сферы деятельности. Основной чертой организационного управления проектом является гибкость, способность менеджера быстро реагировать на изменения как в окружении проекта, а так и внутри. Организационная составляющая должна быть высоко адаптивной, что свидетельствует о допущении данной методологией распределения задач в ходе реализации проекта. Принятие решений, в том числе и о назначении на выполнение задачи, должно происходить по заведомо обусловленным и принятым правилам. Размытая формулировка дает основания полагать, что источником решения может выступать менеджер, при соответствующем одобряемом стиле лидерства, или же группа. Пространство для трактовки данного положения позволяет предположить, что методы, используемые при принятии решений, выбираются на усмотрение руководителя и команды при обоюдном одобрении их применения. Методология делает акцент на моральном благополучии задействованных в проекте специалистов. Они должны быть мотивированны, приветствовать стиль лидерства и осознавать цели [9].
Анализ основных базовых методологий позволил прийти к выводу, что описание методов и процедур принятия решений по распределению задач в методологиях не рассматривается. Предполагается, что менеджер и команда должны самостоятельно выбирать метод распределения задач. Таким образом, имеет смысл провести анализ предметных методологий разработки программного обеспечения.
Одной из наиболее известных методологий является MSF (Microsoft Solution Framework). Она основана на лучших практиках разработки в Microsoft. В методологии описана модель проектной команды, в основе которой лежит распределение ролей на кластеры: управление программой, разработка, тестирование, управление выпуском, удовлетворение заказчика, управление продуктом. В малых проектах один специалист может обладать несколькими ролями, однако они не должны конфликтовать. Качество распределения ролей является важной предпосылкой к успешной процедуре распределения задач. Конфликтующие роли могут получать конфликтующие задачи, что скажется на показателях проекта. В случае с большими проектами, команда проекта делится на вышеперечисленные кластеры, а во главе кластера встает руководитель. Полномочия проектного менеджера распределены между руководителями кластеров, а сам менеджер не назначается. Соответственно, и распределение задач происходит в кластерах, с учетом плана проекта, с тем, чтобы кластеры работали организованно и слаженно. Основным требованием при планировании и решении задач является соблюдение компромиссов, то есть баланса между ресурсами проекта, реализуемыми возможностями и календарным графиком. Решения принимаются на основе построения матрицы компромиссов [10].
На основе данной методологии получила развитие гибкая методология разработки программного обеспечения (MSF for agile Software Development). Суть методологии сводится к представлению проекта как набора итераций со стандартными процедурами планирования и разработки в каждой из них. Данная методология предполагает наличие девяти аспектов. Во-первых, исполнители должны четко осознавать цель проекта и понимать свою роль в достижении данной цели. Видение себя частью системы требует от участника понимания функционирования системы в целом. Также, каждая заинтересованная сторона должна иметь своего представителя в проекте для защиты интересов. Участие в проекте - привилегия, за которую сотрудники должны испытывать гордость. Все задачи должны быть выполнены своевременно. Все участники имеют равные права и одинаковую значимость для проекта, как и ответственность. Команда несет ответственность, кроме прочего, за эффективное использование ресурсов, что требует от них хозяйского отношения. Обучение должно проводиться непрерывно. В совокупности, эти аспекты влияют на приверженность команды качеству.