Введение
Команда сотрудников – это совокупность людей, которые взаимозависимы в своих задачах, разделяют ответственность за результат и воспринимают себя и других членов команды как целостную социальную единицу, встроенную в более крупную систему (например, бизнес-подразделение или компанию). Основой любой организации, занимающейся разработкой программного обеспечения, является команда, будь то управленческая команда, команда разработчиков, команда по устранению неполадок или команда тестирования. Организации, занимающиеся разработкой программного обеспечения, работают в условиях жесткой конкуренции. Поэтому квалификация, производительность и эффективность команды разработчиков – это ключевое условие для успеха в ИТ-бизнесе. Организация командной работы повышает скорость, продуктивность, способность к обучению и решению проблем. Слаженный коллектив сотрудников представляет собой нечто большее, чем просто совокупность людей, выполняющих определенную работу. Это единая система, объединенная общей целью, все структурные элементы которой выполняют определенные функции. Основы этой системы, а также командная динамика закладываются во время тимбилдинга. Поэтому ИТ-организации должны сосредоточиться на формировании и поддержании высокоэффективных, успешных групп работников для выполнения проектов. В настоящее время в России существуют серьезные трудности в сфере ИТ, связанные с выездом из страны значительной части квалифицированных специалистов. По этой причине исследование командообразования и работы групп ИТ-разработчиков является сегодня актуальным. Другие аспекты актуальности связаны с тем, что сотрудник в успешной команде чувствует себя комфортно, что не только позволяет ему создавать качественный продукт, но и формирует чувство приверженности, способствует росту внутренней мотивации персонала.
Обзор литературы
Как указывает Розен (2021), команда не является статичным конечным продуктом деятельности по командообразованию. Целесообразно рассматривать коллектив сотрудников как динамичную структуру, постоянно меняющуюся в зависимости от обстоятельств и окружающей среды. Деятельность по формированию рабочей группы – это скорее запуск процесса. Данный будет продолжаться, когда команда начнет работать в своей реальной среде [7].
В исследовании Леви (2021) утверждается, что работа трудового коллектива с индивидуумами с разным уровнем знаний и умений также должна способствовать расширению навыков каждого сотрудника. Когда член команды чувствует, что поставленная перед ним задача соответствует его опыту и что эта задача является достойным вкладом в общую работу, уровень его самооценки и мотивации повышаются. Также важно, чтобы каждый участник понимал и осознавал свою роль и знал, чего коллектив ожидает от него [4].
В работе Скарнати (2020) отмечается важная роль командной динамики. Сильные и слабые стороны коллектива влияют на его развитие и определяют последствия данного процесса. Существуют различные факторы, которые могут влиять на динамику команды, включая характер задачи, организационный контекст и состав команды. Основное развитие коллектива включает в себя личностный рост членов команды, изменение уровня мотивации, динамику морального духа и общую трансформацию коллектива [9].
Рам (2020) в своем исследовании отмечает, что наличие энтузиазма и мотивации к работе и освоению новых навыков так же важно, как и наличие необходимых талантов и умений. Энтузиазм одного сотрудника повышает мотивацию других членов команды. Высокий моральный дух способствует росту самооценки, так что сотрудник не только стремится быть полноправным членом команды, но и расти во внутренней иерархии [6].
В статье Рашмера (2019) рассматривается личное отношение человека к членству в команде. Если команда успешна и эффективна, сам факт принадлежности к ней приводит к повышению самосознания, самооценки, уверенности в себе, удовлетворению от самореализации [8].
Говард и Фостер (2019) указывают, что ключевую роль в самоощущении членов команды играют их права и возможности. Когда сотрудники контролируют свою работу, имеют возможность влиять на свою служебную аттестацию и карьерный рост, то участие в команде дает им чувство самоопределения, личностный смысл и удовлетворенность [3].
Командная работа не может быть успешной без самоотдачи каждого члена команды, приверженности сотрудников как своим товарищам по коллективу, так и целям работы. Члены команды демонстрируют приверженность делу, проявляя лояльность и преданность. Эти сотрудники полны энтузиазма, вкладывают время и энергию в свою деятельность и готовы идти на личные жертвы ради проекта.
Доверие – жизненно важный фактор для эффективной командной работы, доверия между самими членами команды и доверия между членами команды и руководством.
Командная работа становится более эффективной при наличии положительной командной динамики. Это будет способствовать созданию лучшей рабочей среды с довольными, самореализовавшимися сотрудниками. Такие специалисты, в свою очередь, будут более продуктивными. Высокоэффективные команды – это трудовые коллективы, которые способны самоорганизоваться для выполнения своих задач, развивать социальные отношения и выдвигать лидеров, обеспечивающих руководство на требуемом уровне.
Позитивная командная динамика – это такая трансформация, которая способствует созданию высокоэффективных успешных команд. Негативная динамика команды – это изменения, создающие барьеры, мешающие коллективу и сотрудникам полностью раскрыть свой потенциал. Отсутствие положительной динамики, описанной выше, неизбежно приведет к стагнации и снижению производительности. Если члены команды чувствуют, что принадлежность к данному коллективу не отвечает их потребностям в личном развитии, или что их вклад в успех не имеет значения, это ведет к снижению уровня мотивации и целеустремленности. Все это, в свою очередь, приведет к снижению уровня производительности таких сотрудников.
Также в ситуации, когда индивидуальные роли в команде четко не определены, это приводит к путанице и чувству бесцельности.
С точки зрения менеджмента, в организациях, занимающихся разработкой программного обеспечения, у людей есть три типа потребностей, которые они должны удовлетворять: социальные потребности, потребности в самоуважении и самореализации. Внутренняя динамика команды относится к силам, которые существуют внутри самой команды (Furumo & Pearson, 2019) [2]. Эйман (2020) утверждает, что внутри команды роли и нормы должны быть четкими. Сплоченность необходима для эффективной работы. Тесные рабочие отношения в команде позволяют свободно дискутировать друг с другом и легко делиться новыми знаниями [1].
О'Коннор и Басри (2020) указывают, что разработка программного обеспечения – это не только создание эффективного программирования и инструментов, но и четко работающая организация и процедуры. Вовлечение людей в деятельность по совершенствованию команды имеет важное значение, поскольку сотрудники, которые внедряют технологические инновации в свою повседневную деятельность, становятся более вовлеченными и эффективными. Отсутствие вовлеченности нарушает процесс улучшения, потому что, если сотрудники не берут на себя обязательства по предлагаемым изменениям, цель улучшения процесса будет провалена. Как сильные, так и слабые стороны рабочего процесса обусловлены квалификацией и знаниями персонала [5].
Материалы и методы
Материалом для исследования являются команды разработчиков программного обеспечения российских ИТ-компаний. Рассмотрение командной работы разработчиков позволит установить особенности тимбилдинга и повышения производительности деятельности в данных компаниях в условиях оттока кадров.
Методы исследования – изучение работы российских ИТ-компаний, исследование стандартных методик управления командами и сопоставление данных методик с реальной работой команд разработчиков.
Результаты
Программный процесс, по сути, описывает способ, которым организация разрабатывает свои программные продукты и вспомогательные услуги. Процессы определяют, какие шаги должны предпринимать организации-разработчики на каждом этапе производства. Также должны быть регламентированы процессы мониторинга, контроля, разработки планов и оценки качества. Существует специально разработанный ряд стандартных моделей процессов, которые помогают компаниям управлять своей деятельностью по разработке программного обеспечения. Программный проект включает в себя множество процессов и всегда зависит от команды, особенно от качества коммуникации внутри команды. Более того, общение может принимать различные формы, как вербальные, так и невербальные.
Уровень коммуникации в процессе разработки программного обеспечения зависит от размера программного проекта. Для небольшого проекта взаимодействие между членами команды является достаточным, но для более крупного проекта требуется более интенсивное взаимодействие: «сотрудник – сотрудник», «сотрудник – руководитель проекта», «руководитель проекта – заказчик», «сотрудник – заказчик» и т.д.
Нарушение командной коммуникации ведет к нарушению координации, ослаблению взаимной поддержки и сплоченности. В итоге усилия команды могут быть потрачены впустую из-за несогласованного поведения.
Связь между членами команды также становится более сложной с увеличением числа членов команды, и это влияет на динамику команды. В процессе разработки программного обеспечения человеческий фактор является не единственным важным критерием, который следует учитывать в процессе, но определяющим в общем успехе проекта. Следовательно, людей можно рассматривать как основной фактор совершенствования процесса разработки программного обеспечения, который нуждается в поощрении и поддержке в организации. Поэтому участие и самоотдача команд не только в работе, но и в совершенствовании процессов работы имеют решающее значение.
Успех программного проекта и процесса определяется заинтересованностью команды разработчиков программного обеспечения в самом проекте и процессе. В небольшой организации, занимающейся разработкой программного обеспечения, влияние ключевых сотрудников является основным фактором. Однако участие персонала также важно в мероприятиях по совершенствованию, поскольку они обладают подробными знаниями и опытом текущего процесса.
Компании, занимающиеся разработкой программного обеспечения, различаются. Они варьируются в зависимости от таких факторов, как размер, сектор рынка, время работы в бизнесе, стиль управления, ассортимент продукции и географическое положение. На сегодняшний день большинство исследований, посвященных командной работе и другим параметрам, влияющим на процесс разработки программного обеспечения, проводилось в контексте крупных и очень крупных организаций, при этом очень мало исследований проводилось на базе малых предприятий. Малые и средние предприятия – это те, в которых занято менее 250 человек, микропредприятия – менее 15 человек. Определение малого и среднего бизнеса охватывает большой возможный диапазон с точки зрения размера компании, что имеет очень большое значение для контекста исследования. Многие российские ИТ-компании могут быть отнесены не просто к малым, но и к микропредприятиям. Такие микропредприятия, как правило, располагают ограниченными ресурсами, особенно финансовыми и человеческими, и в основном практикуют уникальные процессы управления бизнесом. Эти ограничения и характеристики оказывают большое влияние на технологическую инфраструктуру компаний. Большинство процессов управления осуществляются неформальным способом, при котором большая часть принятия решений, коммуникации и решения проблем обсуждается устно и в меньшей степени документируется. Это указывает на то, что ориентированные на людей и коммуникационные факторы очень важны.
Большинство работ по разработке программного обеспечения выполняется командами инженеров-программистов, которые совместно реализуют процесс разработки. Хотя существует много литературы, посвященной процессу разработки программного обеспечения и способам его улучшения, вопросам командной работы и, в частности, влиянию командной динамики на процесс разработки программного обеспечения уделяется меньше внимания.
Как мы уже отмечали выше, командная динамика – это термин, используемый для определения того, как люди работают и взаимодействуют друг с другом в командах. Командная работа более эффективна при наличии позитивной командной динамики способствует созданию лучшей рабочей среды с удовлетворенными, самореализовавшимися сотрудниками. А такие сотрудники, в свою очередь, будут более продуктивными.
В большинстве малых и средних российских ИТ-компаний нет формальной структуры команды или иногда структура команды существует лишь эпизодически, когда это может потребоваться для конкретного проекта.
Независимо от того, является ли лидер команды техническим или «нетехническим» менеджером, успешное руководство командой осуществляется с помощью следующих стратегий. Они могут быть применены к локальным, гибридным и удаленным командам. В качестве инструментов повышения производительности лидеры команд реализуют следующие мероприятия.
1. Постановка четких и понятных целей и ожиданий.
Важно поставить четкие цели, ясно донести их до команды и убедиться, что каждый член команды понимает свою роль и ожидаемый вклад. Это включает в себя создание среды, в которой члены команды чувствуют себя комфортно, могут свободно выражать свои идеи, опасения и получать обратную связь. Постановка целей обеспечивает регулярное информирование об обновлениях проекта и поощрение открытого диалога для оперативного решения проблем. Основные методики постановки целей:
«Умные» цели: постановка целей, которые являются конкретными, измеримыми, достижимыми, актуальными и привязанными ко времени. Конкретные цели четко определяют, чего необходимо достичь. Поддающиеся измерению цели могут быть определены количественно, что облегчает отслеживание прогресса в их достижении.
Цели и ключевые результаты: фокусируются на определении целей высокого уровня и измеримых результатах, демонстрирующих прогресс. Устанавливаются на более короткие периоды, обычно ежеквартально.
2. Выбор методологии разработки программного обеспечения.
Методологии разработки программного обеспечения существенно различаются, причем некоторые придерживаются последовательных процессов, в то время как другие делают упор на гибкость и ориентированность на клиента.
Например, традиционный «водопадный» метод следует линейному пути для выполнения требований проекта, в то время как другие методологии используют более итеративный и гибкий подход.
Гибкие команды сосредотачиваются на кратковременных интенсивных усилиях, обеспечивая непрерывные улучшения в соответствии с потребностями клиентов.
Среди гибких методов наиболее часто используются Agile, Scrum, экстремальное программирование и функционально-ориентированная разработка.
Scrum делает упор на самоуправление и эффективность. С другой стороны, Kanban предлагает иную перспективу, используя визуальные панели для отслеживания прогресса в выполнении нескольких задач одновременно.
Выбор правильной методологии зависит от конкретных параметров и требований проекта.
Обсуждение
Процесс разработки программного обеспечения в ИТ-компаниях постоянно развивается с течением времени. Кроме того, команды разработчиков регулярно оценивают и обновляют свои процессы разработки. Эти процессы являются неформальными, непрямыми, с высокой степенью реактивности и связаны с требованиями заказчиков, инициативами разработчиков и технологическими изменениями. Модель процесса представлена на рисунке 1.
Рис. 1. Модель процесса разработки программного обеспечения
На операционные процессы в ИТ-бизнесе большое влияние оказывают структура и процессы коммуникации в команде. Тесные рабочие отношения между членами команды ИТ-разработчиков и частые неформальные контакты помогают создать высокий уровень позитивной командной динамики и обмена знаниями в деятельности по разработке программного обеспечения.
Кроме того, факторы внешней среды, такие как особенности макроуправления; автономный стиль работы, активная обратная связь со стороны коллег и руководства и непосредственное вовлечение руководства в деятельность по разработке программного обеспечения, также способствовали формированию благоприятных условий для команды разработчиков программного обеспечения. Как правило, в отечественных ИТ-компаниях наблюдается высокий уровень позитивной командной динамики в процессе разработки программного обеспечения. Члены команды обладают всеми важными критериями, такими как высокая квалификация, высокая мотивация, активное участие в обмене информацией, прямое вовлечение и открытое общение, которые важны в процессе разработки программного обеспечения. В России разработкой приложений занимаются в основном небольшие компании, которые можно отнести к категории микропредприятий. Команды, в которых работает небольшое количество сотрудников, имеют горизонтальную структуру команды и работают неформально. Из-за небольшого размера команды и открытой рабочей среды командная динамика в основном положительная. Несмотря на то, что некоторые сотрудники работают удаленно (в разных географических точках), результаты показывают, что взаимоотношения в команде, общение, обмен информацией и навыки межличностного общения находятся на высоком уровне.
Agile (она же гибкая) разработка программного обеспечения по сравнению с традиционной разработкой программного обеспечения является более «легкой». Существуют различия в некоторых характеристиках между методами гибкой разработки программного обеспечения (облегченными) и традиционными методами разработки программного обеспечения (тяжеловесными) (см. табл.).
Таблица
Гибкая разработка по сравнению с традиционными параметрами разработки
Параметры |
Традиционные методы |
Гибкие методы |
---|---|---|
Простота модификации |
Жесткая |
Легкая |
Подход к разработке |
Прогнозирующий |
Адаптивный |
Ориентация разработки |
Ориентация на процесс |
Ориентация на клиента |
Размер проекта |
Большой |
Малый или средний |
Масштаб планирования |
Долгосрочный |
Краткосрочный |
Стиль управления |
Командование и контроль |
Лидерство и сотрудничество |
Обучение |
Непрерывное обучение |
Обучение в области разработки вторично по отношению развитию |
Документация |
Подробная |
Общая |
Количество сотрудников |
Большое |
Малое |
Бюджет |
Высокий |
Низкий |
Количество команд |
Несколько |
Одна |
Размер одной команды |
Средний |
Малый |
Модель разработки программного обеспечения в Agile-методологии (см. рис.2)
Рис. 2. Разработка программного обеспечения в Agile-методологии
Agile методы более адаптивны к возможным изменениям в проекте. Они предусматривают прямое сотрудничество между разработчиками и заказчиками. Agile более эффективен для использования в малых и средних проектах. Планирование в гибких методах является краткосрочным для конкретных функциональных возможностей, что проще выполнить по сравнению с традиционными методами, при использовании которых необходимо долгосрочное планирование или планирование всего проекта. Отметим, что документация по традиционным методам должна быть высокого уровня, более подробной, поэтому над ней требуется большая работа, вследствие чего финальный документ имеет огромный объем.
Существуют различные типы гибких методов, таких как метод разработки на основе тестирования, метод разработки на основе функций, метод экстремального программирования, метод Scrum, метод динамической модели разработки системы, методы Crystal и т.д. Каждый из них имеет свои собственные принципы, жизненный цикл, роли, преимущества и недостатки и т.д. Все эти гибкие методы разработки программного обеспечения создают программное обеспечение в итерационных и инкрементальных процессах.
В настоящее время внедряются новые методы, которые делают для целых организаций то, что методика Agile сделала для команд разработчиков программного обеспечения. «Holacracy» подход предлагает комплексную систему для достижения гибкости во всех аспектах организации.
Методика Holacracy нацелена на применение гибких подходов за пределами команд разработчиков программного обеспечения. Holacracy используется сотнями компаний по всему миру, включая такие известные компании, как Zappos, the David Allen Company и Medium. Точно так же, как системы Agile разработки разбивают работу на «спринты», Holacracy вынуждает компанию пересматривать свои правила, роли, цели и полномочия в короткие сроки. Это предохраняет от чрезмерного планирования и дает возможность регулярно пересматривать планы, направления и убеждения. Holacracy снимает полномочия с управленческой иерархии и распределяет их между группами и сотрудниками. После этого четко ограниченные роли могут выполняться автономно, без непосредственного руководителя. Более конкретно, Holacracy отличается от традиционной модели управления четырьмя способами:
- Отсутствие должностных инструкций;
- Отсутствие делегированных полномочий;
- Отсутствие крупных реорганизаций;
- Отсутствие «офисной политики».
В Holacracy власть действительно распределена, и решения принимаются локально, человеком, находящимся ближе всего к рабочей ситуации. Команды самоорганизуются: перед ними ставится цель, но они сами решают, как наилучшим образом ее достичь. Таким образом, Holacracy заменяет традиционную иерархию рядом взаимосвязанных, но автономных команд («кругов»). И как только круг распределяет некоторую ответственность или полномочия одной своей роли, тот, кто исполняет эту роль, обладает властью в этой области, которую никто другой не может превзойти.
Holacracy – это быстрый и гибкий подход к организационному развитию. Данный способ управления отличается тем, что определения ролей и кругов не предписываются заранее и не являются жестко ограниченными. Вместо этого Holacracy позволяет компании развивать любую организационную структуру, которая наиболее подходит для ее текущей среды. Таким образом, холакратия не просто помогает организациям развиваться – она помогает им становиться эволюционными. Распределение полномочий в Holacracy – это не просто изъятие власти из рук лидера и передача ее кому-то другому или даже группе. Скорее, власть переходит от человека, стоящего на самом верху, к процессу.
Ключ к повышению эффективности заключается в том, чтобы внедрить эволюционный процесс на уровне компании как постоянное, обязательное условие организационного развития. Это помогает создавать организации, которые работают быстро, гибко и добиваются успеха, достигая свои цели. Holacracy не является панацеей, не разрешает всех напряжений и проблем в организации. Однако этот метод обеспечивает наиболее устойчивую основу для распознавания, формулирования и решения задач. Внедрение Holacracy в самоорганизующиеся команды разработчиков программного обеспечения может привести к повышению прозрачности процесса, улучшению принятия решений и более высокому чувству индивидуальной ответственности. В конечном итоге внедрение этого метода управления обеспечит повышение качества конечного продукта.
Заключение
Таким образом, для управления командой разработчиков программного обеспечения требуется не только понимание рабочих процессов и соответствующее техническое образование, но и наличие уникального набора лидерских качеств, понимание динамики команды и способность к адаптации. Эффективное лидерство выходит за рамки технических знаний. Оно вмещает в себя целый спектр компетенций – от постановки четких целей и содействия эффективному общению и до формирования позитивной командной культуры и преодоления сложностей коммуникации. Гибкие методы управления командой разработчиков способствуют повышению мотивации, ответственности и приверженности сотрудников, и, следовательно, положительно влияют на производительность и качество их работы. Holacracy – это стратегия управления и организационная структура, в которой полномочия по принятию важных решений распределены по всей организации. Данный подход отличается от обычных управленческих иерархий, где власть находится в руках немногих избранных. Основной принцип – самоорганизация, при которой сотрудники объединяются в команды и затем самостоятельно работают над достижением общей цели. Такая форма организации деятельности трудового коллектива представляется оптимальной для разработчиков программного обеспечения.