Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
книги хакеры / Питер_Гудлиф_Ремесло_программиста_Практика_написания_хорошего_кода.pdf
Скачиваний:
16
Добавлен:
19.04.2024
Размер:
9.23 Mб
Скачать

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

Болезни,m

которым подвержены команды

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

421Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Выход из ситуации

Команду%сателлит не следует считать обреченной – просто ее нали% чие требует более тщательного наблюдения и управления. Пробле% мы не являются непреодолимыми, но они неприятны – по возмож% ности избегайте их возникновения.

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

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

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

Программное обеспечение для автоматизации групповой работы становится важным инструментом обеспечения эффективной связи с командой%сателлитом. Полезно воспользоваться средствами мгно% венной передачи сообщений. И не стоит бояться пользоваться теле% фоном!

Стратегия успеха

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

Выясните точно, кто именно работает на отдельной площадке. За% помните их имена, кто чем занимается и как с ними связаться. Со% вершенствуйте свои коммуникативные навыки. Не стесняйтесь связаться с кем%то, если это необходимо: задумайтесь, стали бы вы с ними разговаривать, если бы они находились рядом.

Большой Каньон

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

 

 

 

 

hang

e

 

 

 

 

 

 

C

 

E

 

 

 

X

 

 

 

 

 

-

 

 

 

 

 

d

 

F

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

to

 

 

 

 

w Click

 

 

 

422m

 

 

 

 

w

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

.

 

 

 

 

 

.c

 

 

p

 

 

 

 

g

 

 

 

 

df

 

 

n

e

 

 

 

 

-xcha

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

Глава 17. Вместе мы – силаClick

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

фракции. Почти в каждой коман% де типа «Большой Каньон» это яв% ление носит как технический, так и общественный характер. Ни% чуть не лучше, если старшие раз% работчики сидят в одном анклаве, а младшие – в отдельном гетто.

Причины возникновения культу% ры Большого Каньона часто кро% ются в истории: проект начинают несколько классных разработчи% ков, которые должны быстро опре%

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

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

Младшие программисты хотят изучать свою профессию, обладают эн% тузиазмом юности и страстью к программированию. У старших про% граммистов совсем другое (более пресыщенное?) мировоззрение с наде% ждами получить административные или более высокие технические должности. Различие в мотивациях движет фракции в разных направ% лениях.

Признаки опасности

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

Выход из ситуации

Проблема Большого Каньона в разнородности команды; выделяют% ся фракции, которые не смешиваются между собой. Рецепт прост: разработайте планы, способствующие перемешиванию людей. На% пример:

Рассадите людей так, чтобы фракции перемежались. Конечно, это отнимет время от разработки, но день, потраченный на пере%

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

Болезни,m

которым подвержены команды

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

423Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

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

Устраивайте совещания, способствующие распространению ин% формации.

Организуйте программирование парами, сведя вместе опытных

имолодых программистов. Пусть младший сядет за руль, а стар% ший будет штурманом. Это будет дисциплинировать старшего

ирасширять знания младшего.

Составьте план обучения молодых разработчиков. Это подчерк% нет разницу в мастерстве, но будет способствовать сближению фракций.

Пересмотрите названия должностей всех разработчиков – не по% ощряют ли они опасную и вредную иерархичность?

Стратегия успеха

Относитесь ко всем как к равноправным коллегам.

Если вы старший программист, согласитесь с тем, что молодым необходимо учиться. Вы и сами когда%то были новичком и мало понимали в жизни. Не гребите под себя все интересные задачи. Старайтесь, чтобы другие тоже могли брать на себя ответствен% ность.

Если вы младший программист, просите, чтобы вам давали бо% лее сложные задачи. Старайтесь учиться. Выполняйте свои зада% ния как можно лучше; это будет свидетельствовать о вашей го% товности к большей ответственности.

Зыбучие пески

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

Попасть в зыбучие пески можно по ряду причин:

В команде появился технически некомпетентный программист (возможно, это Ковбой, описанный на стр. 391). Его не так просто

сразу выявить, и никто не заметит, что он пишет плохой код. Но мина

 

 

 

 

hang

e

 

 

 

 

 

 

C

 

E

 

 

 

X

 

 

 

 

 

-

 

 

 

 

 

d

 

F

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

to

 

 

 

 

w Click

 

 

 

424m

 

 

 

 

w

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

.

 

 

 

 

 

.c

 

 

p

 

 

 

 

g

 

 

 

 

df

 

 

n

e

 

 

 

 

-xcha

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

Глава 17. Вместе мы – силаClick

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

замедленного действия заложена, и позже проект застопорится, по% ка его безобразие не будет вычищено и заменено.

Какой%то моральный урод потихоньку разрушает боевой дух всей команды, вытягивая из нее энтузиазм и бодрость. Через несколько недель никто не может собраться с силами, чтобы написать хоть ка% кой%то код, и хочется броситься вниз с ближайшего моста.

Горе#менеджер делает все прямо противоположное тому, что дол% жен делать хороший менеджер: постоянно меняет свои решения, меняет приоритеты задач, сдвигает сроки и обещает клиентам не% возможное. Члены команды не чувствуют под собой почвы, потому что она постоянно уходит у них из%под ног.

Некий программист умудряется вопреки теории относительности искажать время, так что идущие около него процессы замедляют% ся. Все, с чем он сталкивается, требует невероятно долгого времени. Решения стопорятся в ожидании его ответа, его код никогда не го% тов, и совещания вечно открываются с опозданием по его вине. Ува% жительная причина всегда найдется – он, скорее всего, был занят другими, очень важными делами, – но он накапливает множество невыполненных вовремя задач и у него никогда не доходят до них руки. В конце концов, другим программистам это надоедает и они обходятся без него.

В команде Зыбучих песков недостатки одного участника могут быстро подорвать общую продуктивность. Особенно это опасно, когда винов%

ГореNменеджер в деле

Разработчики образовали хорошую команду. Они работали с удо% вольствием. И работали напряженно. К несчастью, их руковод% ство оказалось посредственным (если не хуже).

Однажды утром руководитель (у которого, судя по его виду, пло% хо начался день) созвал совещание и стал выражать недовольст% во тем, что разработчики не понимают «реалий окружающего мира», бездельничают и никогда не соблюдают установленных им (безумных) сроков (он уже продал продукт, которого нет в приро% де). Он отметил, что иногда люди отсутствуют на работе в поло% женные часы и что отныне все должны быть на местах. Иначе бу% дут последствия.

Результат был замечательным.

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