Руководство командой разработчиков программного обеспечения

       

История 2. «Программист Ашманова»


Программист:

«Чего там планировать, я быстрее сделаю и всё уже будет работать». «Планировать разработку бессмысленно, жизнь всё равно богаче».

«Программные проекты всегда срывают сроки потому, что это сложное и творческое дело, вроде научных исследований».

«К пятнице готово не будет, но в понедельник — точно. Или во вторник». «Я уже неделю ночами работаю, а вы меня укоряете за срыв срока».

Диагноз. Не достаточно самостоятельный программист. Не овладел навыками персонального лидерства. Не умеет четко ставить цели, проводить декомпозицию сложности, анализировать риски и планировать решение задачи. Нельзя доверять полностью самостоятельную работу.

Рекомендации. Помощь и поддержка более опытного коллеги. Декомпозиция сложности задачи на более простые и обозримые работы. Директивное управление, короткие задания на 4–8 рабочих часов, постоянный контроль.

Уоттс Хэмфри и Институт технологий разработки программного обеспечения Software Engineering Institute (SEI) создали индивидуальный процесс разработки ПО Personal Software Process (PSP) , который предоставляет детальные описания методов планирования и оценки, показывает разработчикам, как измерять собственную продуктивность и соотносить ее с существующим планом, объясняет, почему описанные методы могут помочь им в их работе.

Авторы данного подхода уверены, что прежде чем стать эффективным командным игроком, программист должен сначала достичь личной независимости и индивидуальной эффективности. Ниже приведены профессиональные компетенции, которыми должен обладать, согласно PSP, эффективный программист:

  • учитывать время, затраченное на работу над проектом;
  • учитывать найденные дефекты;
  • классифицировать типы дефектов;
  • оценивать размер задачи;
  • освоить систематический подход к описанию результатов тестирования;
  • планировать программные задачи;
  • распределять их по времени и составлять график работы;
  • индивидуальную проверку проекта и архитектуры;
  • осуществлять индивидуальную проверку кода;
  • выполнять регрессионное тестирование.


PSP призван помочь программисту полнее понять отношение между размером программы и временем, которое он тратит на ее разработку, должен сформировать упорядоченную систему, в рамках которой он может производить оценки, выполнять задачи, проверять статус работы и записывать результаты. Всем разработчикам ПО постоянно задается один и тот же вопрос: «Сколько времени у вас это займет?». Освоение индивидуального процесса помогает разработчикам научиться реалистично отвечать на этот вопрос.

Есть данные , что владение участниками команды PSP обеспечивает снижение числа ошибок в программах в среднем на 73%, рост точности оценки объема предстоящих работ на 26%, а точность оценки времени работы над проектом — на 40%. При этом производительность труда программистов (число строк кода в час) увеличивается на 21%.

Эффективный программист помимо технических знаний и умений должен обладать еще и личными компетенциями, необходимыми для командной работы:


  • Занимает активную позицию, стремится расширить свою ответственность и увеличить личный вклад в общее дело.
  • Постоянно приобретет новые профессиональные знания и опыт, выдвигает новые идеи, направленные на повышение эффективности достижения общих целей, добивается распространения своих знаний, опыта и идей среди коллег.
  • Получает удовольствие от своей работы, гордится ее результатами и стремится, чтобы эти же чувства испытывали все коллеги.
  • Четко осознает свои личные и общие цели, понимает их взаимообусловленность, настойчиво стремится к их достижению.
  • Уверен в себе и в своих коллегах, объективно оценивает их достижения и успехи, внимательно относится к их интересам и мнениям, активно ищет взаимовыгодное решение в конфликтах.
  • Является оптимистом, при этом твердо знает, что окружающий мир несовершенен; воспринимает каждую новую проблему, как дополнительную возможность подтвердить собственный профессионализм в своих глазах и во мнении коллег.


Бывает так, что, вроде бы, сильный специалист приносит команде больше вреда, чем пользы.


Порой встречаются «клинические случаи», которые, на мой взгляд, наиболее эффективно лечить «хирургическим» путем — избавлять команду от проблемных людей. К патологиям поведения, которые неприемлемы в команде, следует отнести следующие:


  • Непорядочность. Лживость, отсутствие совести и чувства справедливости, способность на низкие поступки.
  • Синдром острого дефицита эмпатии. Эгоцентризм. Неуважение и невнимание к партнерам. Склонность к отрицательным оценкам других. Грубость. «Каждый сам за себя! — никто тебе не поможет!» «Человек человеку волк!»
  • «Звезданутость». Завышенная самооценка. Ощущение собственного превосходства. Умничанье. Человек сильно переоценивает свой личный вклад в общее дело и поэтому считает, что он должен работать меньше, чем его «менее способные» коллеги.
  • Вульгарный анархизм. Я много говорю о свободе, как неотъемлемом атрибуте творчества и это действительно так. Но в российской традиции свобода часто подменяется понятием «вольница», а это совсем ни одно и то же. Свобода индивида заканчивается там, где начинается свобода другого. Свобода это диалектическое единство права выбора и принятия на себя ответственности за его последствия. Вольница — это полная безответственность, свобода от каких либо обязательств перед другими, ничем не сдерживаемые проявления чувств, действия или поступки. «Произвольничать, поступать самовольно, в обиду другим, нагло, дерзко» (с) В.Даль.
  • «Социальный паразитизм». Стремление прожить вольготно за чужой счет там, где ответственность размыта, а личный вклад трудно четко выделить.



Содержание раздела