История 2. «Программист Ашманова»
Программист:
«Чего там планировать, я быстрее сделаю и всё уже будет работать». «Планировать разработку бессмысленно, жизнь всё равно богаче».
«Программные проекты всегда срывают сроки потому, что это сложное и творческое дело, вроде научных исследований».
«К пятнице готово не будет, но в понедельник — точно. Или во вторник». «Я уже неделю ночами работаю, а вы меня укоряете за срыв срока».
Диагноз. Не достаточно самостоятельный программист. Не овладел навыками персонального лидерства. Не умеет четко ставить цели, проводить декомпозицию сложности, анализировать риски и планировать решение задачи. Нельзя доверять полностью самостоятельную работу.
Рекомендации. Помощь и поддержка более опытного коллеги. Декомпозиция сложности задачи на более простые и обозримые работы. Директивное управление, короткие задания на 4–8 рабочих часов, постоянный контроль.
Уоттс Хэмфри и Институт технологий разработки программного обеспечения Software Engineering Institute (SEI) создали индивидуальный процесс разработки ПО Personal Software Process (PSP) , который предоставляет детальные описания методов планирования и оценки, показывает разработчикам, как измерять собственную продуктивность и соотносить ее с существующим планом, объясняет, почему описанные методы могут помочь им в их работе.
Авторы данного подхода уверены, что прежде чем стать эффективным командным игроком, программист должен сначала достичь личной независимости и индивидуальной эффективности. Ниже приведены профессиональные компетенции, которыми должен обладать, согласно PSP, эффективный программист:
- учитывать время, затраченное на работу над проектом;
- учитывать найденные дефекты;
- классифицировать типы дефектов;
- оценивать размер задачи;
- освоить систематический подход к описанию результатов тестирования;
- планировать программные задачи;
- распределять их по времени и составлять график работы;
- индивидуальную проверку проекта и архитектуры;
- осуществлять индивидуальную проверку кода;
- выполнять регрессионное тестирование.
PSP призван помочь программисту полнее понять отношение между размером программы и временем, которое он тратит на ее разработку, должен сформировать упорядоченную систему, в рамках которой он может производить оценки, выполнять задачи, проверять статус работы и записывать результаты. Всем разработчикам ПО постоянно задается один и тот же вопрос: «Сколько времени у вас это займет?». Освоение индивидуального процесса помогает разработчикам научиться реалистично отвечать на этот вопрос.
Есть данные , что владение участниками команды PSP обеспечивает снижение числа ошибок в программах в среднем на 73%, рост точности оценки объема предстоящих работ на 26%, а точность оценки времени работы над проектом — на 40%. При этом производительность труда программистов (число строк кода в час) увеличивается на 21%.
Эффективный программист помимо технических знаний и умений должен обладать еще и личными компетенциями, необходимыми для командной работы:
- Занимает активную позицию, стремится расширить свою ответственность и увеличить личный вклад в общее дело.
- Постоянно приобретет новые профессиональные знания и опыт, выдвигает новые идеи, направленные на повышение эффективности достижения общих целей, добивается распространения своих знаний, опыта и идей среди коллег.
- Получает удовольствие от своей работы, гордится ее результатами и стремится, чтобы эти же чувства испытывали все коллеги.
- Четко осознает свои личные и общие цели, понимает их взаимообусловленность, настойчиво стремится к их достижению.
- Уверен в себе и в своих коллегах, объективно оценивает их достижения и успехи, внимательно относится к их интересам и мнениям, активно ищет взаимовыгодное решение в конфликтах.
- Является оптимистом, при этом твердо знает, что окружающий мир несовершенен; воспринимает каждую новую проблему, как дополнительную возможность подтвердить собственный профессионализм в своих глазах и во мнении коллег.
Бывает так, что, вроде бы, сильный специалист приносит команде больше вреда, чем пользы.
Порой встречаются «клинические случаи», которые, на мой взгляд, наиболее эффективно лечить «хирургическим» путем — избавлять команду от проблемных людей. К патологиям поведения, которые неприемлемы в команде, следует отнести следующие:
- Непорядочность. Лживость, отсутствие совести и чувства справедливости, способность на низкие поступки.
- Синдром острого дефицита эмпатии. Эгоцентризм. Неуважение и невнимание к партнерам. Склонность к отрицательным оценкам других. Грубость. «Каждый сам за себя! — никто тебе не поможет!» «Человек человеку волк!»
- «Звезданутость». Завышенная самооценка. Ощущение собственного превосходства. Умничанье. Человек сильно переоценивает свой личный вклад в общее дело и поэтому считает, что он должен работать меньше, чем его «менее способные» коллеги.
- Вульгарный анархизм. Я много говорю о свободе, как неотъемлемом атрибуте творчества и это действительно так. Но в российской традиции свобода часто подменяется понятием «вольница», а это совсем ни одно и то же. Свобода индивида заканчивается там, где начинается свобода другого. Свобода это диалектическое единство права выбора и принятия на себя ответственности за его последствия. Вольница — это полная безответственность, свобода от каких либо обязательств перед другими, ничем не сдерживаемые проявления чувств, действия или поступки. «Произвольничать, поступать самовольно, в обиду другим, нагло, дерзко» (с) В.Даль.
- «Социальный паразитизм». Стремление прожить вольготно за чужой счет там, где ответственность размыта, а личный вклад трудно четко выделить.