Люди как нелинейные и наиболее важные компоненты в создании программного обеспечения - [4]

Шрифт
Интервал

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


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

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

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

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

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

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

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

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


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


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

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

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

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


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

Человек предпочитает скорее потерпеть неудачу из-за своего консерватизма, нежели рискнуть, но сделать что-то необычным образом [Pi]; ему больше нравиться изобретать, а не находить готовые решения, он может одновременно держать в голове совсем немного сведений, он делает ошибки и с трудом меняет привычки.

Отдельная личность может легко возобладать над проектом.

Способность человека выполнять те или иные задания в большей степени определяется его личными качествами.

Человек - существо общительное

Основным фактором в разработке программного обеспечения является возможность коммуникации. На рисунке 1 изображена некая кривая, с помощью которой я иллюстрирую свои методологические рассуждения. На этом рисунке видно, как падает эффективность коммуникации, если исчезает ее модальность и синхронизация. Этой теме посвящено несколько исследований (см. [Pl] и [Si]), кроме того, эту же зависимость подтверждает и Вайнберг, который описывал проекты около 30 лет назад [Wei].

Самым эффективным видом коммуникации является непосредственное, личное общение (например, когда вы обсуждаете что-либо и рисуете при этом на доске). Если мы будем убирать одно за другим все свойства общения, присущие двум людям, рисующим у доски, мы увидим, как падает эффективность коммуникации. Убирать мы будем следующие свойства:


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

Разнообразные модальности. Человек общается не только словами, но и при помощи жестов. Часто человек может высказать свое суждение жестикуляцией, например, поднимая бровь или указывая на что-то пальцем.

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

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


Еще от автора Алистэр Коуберн
Каждому проекту своя методология

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


Парное программирование: преимущества и недостатки

Парное, или совместное, программирование является процессом создания программного обеспечения двумя программистами, работающими бок о бок за одним компьютером. С помощью опросов и специальных экспериментов авторы этой статьи исследовали положительные и отрицательные стороны такого стиля работы. Они обнаружили, что при парном программировании время разработки увеличивается на 15%, но при этом улучшается дизайн системы, уменьшается количество дефектов, снижается риск, связанный с занятостью в проекте определенных сотрудников, растет технический уровень команды, улучшается взаимодействие и коммуникация, а кроме того, сам процесс работы в целом доставляет гораздо больше удовольствия.


Рекомендуем почитать
Привычка достигать. Как применять дизайн-мышление для достижения целей, которые казались вам невозможными

Как перестать лелеять смутные желания и взяться за дело? Как соединить намерения и действия, разговоры и конкретные дела? Как приучить себя достигать поставленных целей?Бернард Рос, основатель легендарной Stanford d.school, учит, как с помощью инструментов дизайн-мышления сформировать привычку к достижениям, которая позволит легко справляться с жизненными вызовами и реализовывать свои мечты.И неважно, хотите вы прыгнуть с парашютом, изучить несколько иностранных языков, освоить новую профессию, восстановить отношения с близкими людьми, похудеть или запустить крутой стартап, – прочитав его книгу, вы сможете поверить в себя и смело реализовать любые идеи.На русском языке публикуется впервые.


Никаких компромиссов. Беспроигрышные переговоры с экстремально высокими ставками. От топ-переговорщика ФБР

Переговорные техники, описанные Крисом Воссом, родились из сокрушительных поражений ФБР. После трагических событий на ферме Рэнди Уивера в штате Айдахо в 1992 году и в секте «Ветвь Давида» в 1993 году, где в общей сложности погибло почти 100 человек, стало понятно: традиционные методики не работают в экстремальных ситуациях. Поэтому ФБР начало усиленно искать принципиально новые подходы. В результате появились 9 принципов, изложенные автором этой книги, – топ-переговорщиком ФБР с двадцатилетним стажем.Эта книга – потрясающе увлекательное и одновременно простое руководство по любым переговорам.


Alibaba. История мирового восхождения от первого лица

Инсайдерское откровение о том, как один человек построил мировую корпорацию, способную противостоять таким гигантам как Walmart и Amazon.Всего за десять лет Джек Ма, бывший преподаватель английского, основал и построил Alibaba Group, в которую сегодня входят: Alibaba.com, Alibaba Pictures, AliExpress.com, Taobao.com, Tmall.com, Alipay и другие.Джек Ма – Рокфеллер XXI века, акции Alibaba в 2014 году побили рекорды, достигнув 25 млрд долларов.Перед вами история компании и самого Джека, иконы частного предпринимательства и привратника миллионов потребителей от китайского Ханчжоу до тверского Торжка.


Как стать успешным влогером

Хочешь стать видеоблогером, но не знаешь, с чего начать? У тебя уже есть канал, но ты не понимаешь, что нужно сделать, чтобы он стал популярным, как у Zoella? Твой канал известен и ты хочешь быть как PewDiePie, который зарабатывает на своем блоге более 1 млн долларов в месяц? В этой книге блогер и журналист Зои Гриффин раскрывает все секреты ведения успешного видеоблога.


UX-стратегия. Чего хотят пользователи и как им это дать

UX-стратегия, или стратегия опыта взаимодействия (UX, User Experience), лежит на стыке UX-дизайна и бизнес-стратегии. Интернет продолжает предлагать потребителям бесконечный ассортимент цифровых решений. Каждый щелчок, жест или наведение мыши становятся решением, которое принимается пользователем. Пользователь постоянно сталкивается с выбором: покупать или не покупать, одобрить или высмеять, рассказать другим или забыть, завершить или отменить. Вы должны знать, какие возможности следует предлагать и как они используются людьми.


Impact mapping: Как повысить эффективность программных продуктов и проектов по их разработке

Impact Mapping – практическое пособие по картам влияния, простому, но очень эффективному методу разработки программного обеспечения. Он помогает еще на стадии стратегического планирования организовать сотрудничество различных специалистов и в результате создавать эффективные программные продукты.