Человеческий фактор в программировании
Шрифт:
Думайте о прибыли от инвестирования, а не о сдерживании расходов
Для придания качеству высокого приоритета людей нужно оценивать и поощрять за выполнение качественной работы. Но что следует поощрять? В области разработки программного обеспечения именно продуктивность, измеренная либо в функциональных пунктах, либо в строках кода, служит основанием для премии, или повышения по службе, или признания, или других поощрений. Либо награждаются геркулесовые, самоотверженные усилия по выполнению работы в невозможные сроки. Как это ни странно, но во многих компаниях руководителям проектов выгодно создать предпосылки, при которых под конец проекта понадобятся крайние усилия. Такая нарочитая самоотверженность имеет больше шансов получить одобрение
Проблема не в том, что люди не заботятся о качестве, как жалуются некоторые руководители. Исследование (1991 г.), проведенное компанией Brooks International и охватившее 11000 человек из 6 отраслей, показало, что более 90 % работников чувствовали личную ответственность за качественное выполнение работы. Однако семь человек из десяти заявили, что качество не было важным фактором в оценке их деятельности. И только 25 % опрошенных утверждали, что руководство действительно оценивало повышение качества. Так что же мы поощряем? На самом деле признание и поощрения любого рода намного более редки, чем думают большинство руководителей. Почти 80 % руководителей искренне утверждают, что их подчиненные получают достаточное поощрение, но только один из семи подчиненных соглашается с этим (Lickert, 1989 [48]).
Для улучшения качества необходимо воспользоваться принципом Фербе-ра (Ferber Principle). Психиатра Эндрю Фербера (Andrew Ferber) однажды спросили, что является самым важным для начинающих терапевтов, стремящихся помочь семьям, с которыми они работают. Он ответил:
Когда вы видите то, что вам нравится, начинайте хлопать в ладоши как сумасшедший
Почти каждый слышал изречение, утверждающее, что нельзя контролировать то, что нельзя измерить (DeMarco, 1982 [32]). Часто такие слова оказываются прелюдией к активной кампании по запуску проекта, связанного с измерением параметров программного обеспечения или обеспечением статистического контроля качества. У формальных измерений есть множество преимуществ. Однако если на мгновение задуматься, то можно понять, что в жизни есть много важных вещей, которые родители, учителя, руководители контролируют, но не измеряют. Многое вообще нельзя измерить. Когда речь заходит о людях, то важным становится внимание, а не измерение. Значение имеет то, что вы контролируете. Любой хороший родитель знает: чем больше обращать внимание на капризы, тем больше будет капризов, У систем вообще и у человеческих систем в частности есть особенность, согласно которой само наблюдение изменяет предмет наблюдения. На этом основан хорошо известный эффект Хо-ворна (Hawthorne effect): если сделать группу объектом наблюдения и просто уделять больше внимания ее работе, это приведет к повышению производительности.
Безусловно, объект ваших наблюдений имеет значение, потому что именно на него и будет оказываться воздействие. Если оценивать программистов по краткости написанного кода, они будут производить меньшие по размеру системы. Если критерием является дружественность системы по отношению к пользователю, то вы получаете более удобные программы (Weinberg и Schulman, 1974 [66]).
В Австралии новый руководитель группы по разработке программ технического обслуживания захотел улучшить не только эффективность своей команды, но и ее статус и значение в компании. Для этого среди прочего он стал посылать основным программистам отчеты об ошибках, которые были обнаружены и исправлены в системах после их передачи «в производство». Программист мог получить записку, в которой просто сообщалось, что в минувшие выходные в системе произошел сбой и некорректное закрытие файла вывода, однако программист Куинфорп из отдела технического обслуживания обнаружил ошибку в цикле модуля Z091, который был исправлен, перекомпилирован и протестирован за 1,6 часа.
Такая практика принесла интересные результаты. Новые системы, находящиеся в производстве, получались более надежными и быстрее проходили приемо-сдаточные испытания. Сам факт наблюдения за качеством и сообщение о результатах наблюдений может способствовать повышению качества.
В другой компании каждый месяц вывешивались диаграммы, отражавшие эффективность каждого программиста, которая измерялась в строках написанного и отлаженного кода. Отчеты изменили. В объем сданного кода стали включать не только код, написанный программистами, но и код всех модулей, взятых из библиотеки компонентов повторного использования. После этого уровень повторного использования существенно возрос (см. главу 27).
Обратная связь — это важный ингредиент. Когда работники получают информацию о собственной производительности и ее связи с организационными целями, качество повышается. Это основа открытой модели руководства, в которой работники получают не только отчеты о производстве и ошибках, но и финансовую информацию о затратах, статьях расходов и прибылей (Саве, 1990 [6]; Finegan, 1990 [36]). Обладая такой информацией, работники проще оптимизируют распределение времени и улучшают собственные рабочие процессы. Ключом здесь является обратная связь, которая объединяет индивидуальную и командную производительность с общей финансовой картиной. Работникам известны не только выявленные ошибки и время, затраченное на программирование, но и общая стоимость работ, и получаемая в результате выгода (или убыток) с точки зре-
ния всего проекта. Многие руководители поняли, что это двусторонняя дорога. Чем больше информации доверяется работникам, тем больше работники доверяют руководству. В результате возникает непрерывный обмен идеями о возможных улучшениях. Обычно техническое руководство склонно думать об измерениях, выполняемых с точностью до третьего знака после запятой или еще точнее. Однако для проведения оценки и контроля процесса вполне достаточно качественных методов или даже приблизительных сравнений. В теории измерений, являющейся разделом статистики, приняты различные уровни измерений. Числа, которые можно перемножать и разделять, находятся на одном уровне (так называемая шкала отношений). Числа, которые можно складывать и вычитать, располагаются на другом, более низком уровне (интервальная шкала). Статистический анализ возможен, даже если результаты показывают лишь то, что одно лучше другого на некоторую неизвестную величину.
Не нужно измерять высоту с точностью до метра, чтобы найти башню на вершине горы. Требуется знать лишь то, куда ведет вас каждый шаг. Вверх или вниз. Для многих процессов эффективные стратегии улучшения могут быть основаны на приблизительном измерении, дающем представление о спаде или подъеме.
Наверное, большинство руководителей заявят о ценности информации. Они думают, что их решения основаны на данных. К сожалению, те же самые руководители зачастую избегают возможности получать нужную им информацию и имеют склонность забывать о тех данных, которые у них есть.
Истинный ученый знает, что не существует такого явления, как неудачный эксперимент. Все происходящее дает информацию, которая может привести к пересмотру гипотезы или изменению технологии. Изучая семейную терапию, я усвоил, что все происходящее во время сеанса является информативным. Мы говорим нашим практикантам:
Запомни, это все — данные
Настоящий руководитель знает, что все новости являются хорошими. Информация о процессе сама по себе является ценной и должна цениться. Ваше восприятие информации влияет на то, насколько она будет доступной для вас в будущем. Если поощряются только хорошие новости, правда не будет известна. Когда вы караете сотрудников, принесших плохие вести, проблема состоит не только в наказании посыльных, но и в том, что в итоге к вам будут поступать только хорошие новости. «Пло-хие» новости, знать о которых зачастую важнее всего, доставляться не будут.
Однажды у меня был начальник, который сказал мне, что никогда не будет ругать меня за плохие вести. Особенно ему хотелось знать о трудностях, которые могут угрожать агентству, на которое мы работали. Он не только сдержал свое слово, но и оставил за мной и моими подчиненными право решать такие проблемы. Это помогало поддерживать открытость во взаимоотношениях и обеспечивало начальнику доступ к важной информации, необходимой для принятия решений.
Безусловно, для улучшения любого процесса самой важной является информация о трудностях и неудачах, хотя получения именно таких данных руководители стремятся избегать. Обнаружение ошибки в программе должно быть поводом для праздника. На самом деле все программные ошибки должны не только фиксироваться, но и изучаться.