Чтение онлайн

на главную - закладки

Жанры

Люди как нелинейные и наиболее важные компоненты в создании программного обеспечения
Шрифт:

Проблема 1. Людям, занятым в проекте, совершенно неинтересно изучать нашу систему.

Проблема 2. Они вполне могут обойтись и без нас, и при этом успешно создавать программное обеспечение. Такое положение дел уже начинало меня беспокоить, и я стал заниматься методологиями разработки ПО (проектировал объектно-ориентированную методологию по заказу IBM Consulting Group (1992-94)). На этот раз, чтобы не наступать на те же самые грабли, я заранее опросил более дюжины различных компаний, которые работали над ОО проектами в различных странах, и тщательно записал все, что они мне рассказали. Изучая эти заметки, я сделал несколько интересных выводов:

Те команды, которые успешно работают над своими проектами, используют инкрементные процессы разработки [Co95]

При проектировании любая техника, сложнее "CRC-карточек" [B87] считается слишком сложной и не используется [Co94].

У тех, кто занимается проектированием, всегда есть возможность отказаться от любого программного продукта или техники, которые им не нравятся. Достаточно сказать начальнику: "Это замедляет работу. Если я буду этим пользоваться,

то не уложусь в срок", и он разрешит проектировщикам поступать по собственному усмотрению. В то время это наблюдение не казалось мне особенно важным, но, тем не менее, я его записал и назвал "проектным ограничением" методологии. После этого я разработал весьма привлекательную и, как мне казалось, настолько не формальную, насколько это возможно, методологию и опробовал ее на одном из проектов. Наш опыт описан в документации по проекту Winifred [Co98]. Основной идеей техники проектирования, которую я рекомендовал к использованию, и которой я обучал разработчиков, были CRC-карточки.

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

Рабочий процесс, который использовала моя команда, был настолько сложным и запутанным, что едва ли его вообще можно было описать. Впрочем, даже если бы мне удалось это сделать, никто бы не смог его повторить [Co98p]. Мою методологию этот процесс напоминал только весьма и весьма отдаленным образом.

Ни один из тех двух дюжин проектировщиков, которых я обучил своей методологии, не использовал CRC-карточки. Другими словами, хотя я и использовал свой "этнографический подход", все равно передо мной стояли:

Проблема 1. Людям, занятым в проекте, совершенно неинтересно изучать нашу систему.

Проблема 2. Они вполне могут обойтись и без нас, и при этом успешно создавать программное обеспечение. Такой процесс повторялся еще несколько раз, и я окончательно разуверился в своей способности "видеть то, что происходит на самом деле". Я мог сказать лишь, что в разработке проекта есть какой-то очень важный аспект, который мы никак не можем вычислить. Не так давно я попробовал решить эту проблему, работая в паре с этнографом. Мне нужна была помощь просто для того, чтобы дать название происходящему [Ho]. Вообще, консультанту хорошо работать вместе с этнографом, однако на этот раз мы едва ли смогли начать работу. Проблема была очень простая и непреодолимая: невозможно сказать, что ты видишь, до тех пор, пока у тебя нет для этого подходящего названия. Было очевидно, что нашему словарю не хватает адекватных понятий.

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

Таблица 1. Проекты и методологии, которые я изучал. Информацию в таблице, разумеется, приходится давать в сокращенном виде. Здесь я указываю год, рабочее название проектов и краткое замечание о каждом из них. Некоторые из проектов описаны в другой литературе. Ссылки на источники указаны в квадратных скобках. 1980 . "CT5". Успешно завершен. 26 человек, 3 года (на год позже, чем нужно), имел для компании решающее значение. Изучен в процессе стажировки, четко определенный макропроцесс, микропроцесс отсутствует.

1986 . Проекты "Cleanroom" [Mi]. Успешно завершены. Федеральный сектор IBM, большие команды разработчиков. Неоднократный успех при использовании тяжеловесной методологии, требующей большой дисциплины. 1986 . Проекты "Sherr" [Br] Успешно завершены. Процесс можно описать следующим образом: "сделай так, что все заработало, но не работай сверхурочно". Основной упор на нестандартные креативные решения, процесс не определен. 1980 . "Broooklyn Union Gas" [Co98]. Успешно завершен. Новая ОО технология, 150 человек, проект для решения критически важных задач. 1992 . "Tracy" [Co98]. Провал. Небольшая команда разработчиков слепо следовала методологии, согласно которой нужно было "моделировать мир, а потом превратить модель в программный код". Был доступ только к случайным пользователям и необученному персоналу. 1992 . "BlackKnight". Успешно завершен. Небольшая команда разработчиков, успешно сочетающая использование пояснительных заметок и активное общение 1992 . "Manfred" [Co98]. Провал. Небольшая команда разработчиков, хромает дисциплина, облегченная методология. "Это мы разработаем потом", провал работы из-за постоянного создания прототипа. 1992 . "CSPITF". Успешно завершен. Небольшая команда разработчиков тщательно контролировала итерации. Облегченный процесс, все сидят рядом. Успешная совместная работа руководителя технического процесса и руководителя проекта. Технический руководитель остался, чтобы реструктурировать внутреннюю структуру кода для следующей команды. 1992 . "OTI" [Co98]. Успешно завершен. Маленькие команды разработчиков. "Дайте хорошему работнику хороший инструмент и оставьте его в покое". Неоднократный успех при работе с облегченной методологией, ориентированной на человека. 1993 . "Reginald" [Co98]. Провал. Команда из двух разработчиков выросла до трех команд в двух разных графствах. Одна из этих команд слепо следовала тяжеловесной методологии с обилием документации, и так и не написала ни строчки кода до закрытия проекта. 1993 . "Ingrid" [Co98]. Успешно завершен. 26 человек, 2 года. Инкрементный макро процесс, микро процесс отсутствует. Первый инкремент потерпел неудачу. Заменили всех программистов, с течением времени выработали облегченную методологию, с упором на коммуникации. 1993 . "Synon in NZ". Успешно завершен. Руководитель проекта утверждал, что успех был обеспечен тем, что "четыре человека работали в одной комнате и использовали быстрый итеративный инструментарий", и что это не подходит таким проектам, где разработчики не могут свободно общаться между собой. 1994 . "Udall" [Co98]. Успешно завершен. Поначалу работала большая команда разработчиков, и

потерпела неудачу. Успех обусловлен тем, что "начали с нуля и сделали из плохой большой команды маленькую, но хорошую". 1995 . "Winifred" [Co98]. Успешно завершен. 45 человек, 20 месяцев. Успех обеспечили "инкрементность разработки, хорошо поставленная коммуникация и несколько очень хороших работников". Использовался макро процесс, микро процесс отсутствовал. Успешное применение средней по весу методологии, ориентированной на коммуникацию. 1996 . "Reel". Провал. 150 человек, которым было велено обновлять всю документацию при каждом изменении в проекте. Проект закрыт. Один из участников разработки подвел итог: "Сколько не старайся, плохая методика все равно даст плохой результат". 1997 . "Caliper". Провал. 90 человек, проект имел для компании решающее значение. Прошло уже шесть лет, но даже первая основная версия проекта до сих пор не сдана. Слишком смелые ожидания, новые технологии, отсутствие инкрементной разработки, на всех позициях персонал, не обладающий адекватными рабочими навыками. 1997 . "NorgesBank". Опрошено шесть команд разработчиков. Все повторяют приблизительно одно и то же: "Успех обеспечен хорошей коммуникацией, как в самой команде разработчиков, так и между разработчиками и пользователями". 1998 . "C3" [C3]. Успешно завершен. После первого провала 26 человек решили заменить восьмью. Extreme Programming [EP]. Успешное применение в небольшой команде методологии, требующей высокой дисциплинированности от сотрудников. Основной упор - коммуникация. 1998 . "NB Banking". Успешно завершен. Проект, изначально рассчитанный на трех человек и два месяца работы, неожиданно вырос до 10 человек, которые проработали 14 месяцев. Связь при помощи видео. Не понравилась. Макро процесс, микро процесс отсутствовал. Успеха удалось достичь при помощи "инкрементных разработок, правильно подобранных людей и хорошей коммуникации". 1998 . "M.A.D". [Ch]. Успешно завершен. Небольшая команда разработчиков занималась изучением окружения конечных пользователей и использовала прототипы. Удачное использование методологии, основывающейся на создании прототипов и коммуникации. 1998 . "Insman". Успешно завершен. В команде шесть человек, использовалась методология "Crystal(Clear)" [Co00]. Успеха удалось достичь благодаря особому упору на "тесном общении, моральном духе команды, итерациях длиной в три месяца и обучении разработчиков". 1999 . "Cinch". Продолжается в настоящее время. 40 человек работают вместе, однако при этом еще требуются формальные сдачи работ. Все осознают цену написания документации, однако пока не могут перейти на более индивидуальный подход (непонятно почему - из-за личных качеств, по привычке или же в этом виновата культура?). 1999 . "Hill AFB TSP1" [Web]. Успешно завершен. Семь человек, CMM 5-го уровня, используется PSP/TSP. Небольшая команда успешно использовала ориентированную на процесс методологию, в которой требовалось соблюдение строгой дисциплины.

Что меня удивило во всех этих проектах? То, что они ясно свидетельствуют о следующем:

Практически любую методологию можно с успехом применять в каком-нибудь проекте.

Любая методология может привести к провалу проекта.

Тяжеловесные методологии тоже могут успешно применяться в работе.

Облегченные методологии чаще приводят к успеху, и, что более важно, разработчики сами говорят, что успех проекта был обеспечен именно методологией. Я не нашел ни одной теории, которая объяснила бы, почему облегченные методологии (те, в которых мало места уделяется всяческим формальностям), чаще приводят к успешному завершению проекта, нежели тяжелые методологии, где формальности играют очень большую роль (случайные исключения в нашем списке составляют только Cleanroom и PSP/TSP). Конечно, плохой руководитель - весьма существенный фактор, который сильно влияет на весь ход работ, однако его нельзя отнести к методологии. Впрочем, даже если учитывать и качество руководства проектом, все равно достоверных прогнозов не получится.

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

Весь мой опыт консультанта можно было бы описать, исходя всего лишь из нескольких свойств человеческой натуры. Теперь, применяя свои знания на практике, я могу гораздо лучше прогнозировать развитие проектов и давать гораздо более полезные рекомендации. Мне кажется, пришло время официально признать, что главным в исследованиях должен быть вопрос: "Какими качествами обладают люди, которые занимаются разработкой программного обеспечения, и какое влияние они оказывают на проектирование методологии?"

Четыре основных свойства

Люди - устройства активные, и у них есть режимы успешной работы и режимы сбоя. Вот несколько основных таких режимов, которые я определил, и которыми пользуюсь и по сей день:

Человек - существо, которому необходимо общение. Причем общаться он предпочитает в режиме непосредственного диалога, лично, по типу "вопрос-ответ".

Человеку трудно постоянно работать сверхурочно.

Человек - существо изменчивое, он меняется в зависимости и от времени, и от пространства.

Как правило, у человека есть чувство гражданского долга, он может хорошо ориентироваться в ситуации, брать инициативу в свои руки и делать "все, что необходимо" для того, чтобы проект завершился успешно.Есть и ряд других характеристик, которые я не буду описывать здесь подробно:

Человеку нужно время, как на размышление, так и на общение (см. [Co98], [Cs], [Dm]).

Человек хорошо работает, опираясь на примеры (этот тезис требует дальнейшего изучения, см. [J-L]).

Поделиться:
Популярные книги

Вечный. Книга V

Рокотов Алексей
5. Вечный
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Вечный. Книга V

Чехов. Книга 3

Гоблин (MeXXanik)
3. Адвокат Чехов
Фантастика:
альтернативная история
5.00
рейтинг книги
Чехов. Книга 3

Последний попаданец 9

Зубов Константин
9. Последний попаданец
Фантастика:
юмористическая фантастика
рпг
5.00
рейтинг книги
Последний попаданец 9

Серые сутки

Сай Ярослав
4. Медорфенов
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Серые сутки

Ты нас предал

Безрукова Елена
1. Измены. Кантемировы
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Ты нас предал

Кодекс Охотника. Книга XXIII

Винокуров Юрий
23. Кодекс Охотника
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Кодекс Охотника. Книга XXIII

На границе империй. Том 7. Часть 4

INDIGO
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
5.00
рейтинг книги
На границе империй. Том 7. Часть 4

Нефилим

Демиров Леонид
4. Мания крафта
Фантастика:
фэнтези
боевая фантастика
рпг
7.64
рейтинг книги
Нефилим

Провинциал. Книга 1

Лопарев Игорь Викторович
1. Провинциал
Фантастика:
космическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Провинциал. Книга 1

Восход. Солнцев. Книга IV

Скабер Артемий
4. Голос Бога
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Восход. Солнцев. Книга IV

Солдат Империи

Земляной Андрей Борисович
1. Страж
Фантастика:
попаданцы
альтернативная история
6.67
рейтинг книги
Солдат Империи

Дурашка в столичной академии

Свободина Виктория
Фантастика:
фэнтези
7.80
рейтинг книги
Дурашка в столичной академии

Сиротка

Первухин Андрей Евгеньевич
1. Сиротка
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Сиротка

Сумеречный стрелок 7

Карелин Сергей Витальевич
7. Сумеречный стрелок
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Сумеречный стрелок 7