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


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


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

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

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

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

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

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

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

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

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




Начало  Назад  Вперед