Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
книги хакеры / Питер_Гудлиф_Ремесло_программиста_Практика_написания_хорошего_кода.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

 

 

 

426m

 

 

 

 

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

 

 

 

 

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

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

В итоге вместо команды остается куча переломанных костей у подно% жия 20%метровой скалы. Игра закончена.

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

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

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

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

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

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

Личное мастерство и качества, необходимые для работы в команде

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

Роберт Йейтс

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

 

 

 

 

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

 

 

 

 

 

427Click

 

 

 

 

 

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

 

 

 

428m

 

 

 

 

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

 

 

 

 

 

429Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

ся с рождения. Вновь созданная команда должна учиться работать вместе, ее участники должны изучить характер друг друга, сильные и слабые стороны коллег и возможности применения их на общее благо (подробнее см. в разделе «Рост команды» на стр. 437).

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

Потеря связи

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

Телефон

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

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

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

Электронная почта

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

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