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

 

 

 

392m

 

 

 

 

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

 

 

 

 

 

Глава 16. Кодеры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

 

 

 

 

 

393Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

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

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

Как быть, если вы один из них

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

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

Как работать с такими людьми

Заранее установите для Плановика все контрольные точки и окон% чательные сроки. Добавьте контрольную точку «проект завер# шен». Плановик будет рад, что его задача признана важной, и это поощрит его вовремя завершить свое проектирование. Обычно это% го достаточно, чтобы побудить Плановика действовать.

Избегайте совещаний с Плановиком. Вы убьете час на обсуждение с ним повестки дня.

Ветеран

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

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

ковке). Изучать новые языки у него нет желания: «C++ мне не ну% жен. Спасибо, мне вполне хватает ассемблера».

Ветеран не любит дураков. Он несколько сварлив, и его легко при% вести в раздражение.

Достоинства

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

 

 

 

 

hang

e

 

 

 

 

 

 

C

 

E

 

 

 

X

 

 

 

 

 

-

 

 

 

 

 

d

 

F

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

to

 

 

 

 

w Click

 

 

 

394m

 

 

 

 

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

 

 

 

 

 

Глава 16. КодерыClick

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Недостатки

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

Годы работы под неумелым руководством ослабили его упорство в работе. Он был свидетелем бесчисленных жестких сроков и нера% зумных администраторов.

Как быть, если вы один из них

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

Как работать с такими людьми

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

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

Фанатик

Фанатик – это новообращенный, которому промыли мозги, слепо верящий в то, что все создаваемое в Большой Компании превосходно. Девочки%подростки поклоняются рок%звездам; у программистов – свои идолы. В своем энтузиазме фанатик берет на себя роль бесплатного технологического евангелиста. Он будет пытаться включить изделия Большой Компании во все полученные задания.

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

Достоинства

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

1Среди фанатов могут быть не только «слепые» приверженцы продавцов программного обеспечения. Фанатик может быть сторонником open source

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

 

 

 

 

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

 

 

 

 

 

395Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Недостатки

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

Как быть, если вы один из них

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

Как работать с такими людьми

Не вступайте с Фанатиком в философские споры. Не пытайтесь рас% сказывать ему о достоинствах вашей любимой технологии – он не станет вас слушать. Будьте настороже: один разговор с этим челове% ком, и вы превратитесь в Фанатика. Его болезнь заразна.

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

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

Монокультурный программист

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

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

Достоинства

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

Недостатки

Он рассчитывает, что все должны быть такими же одержимыми и целеустремленными, как он сам, и может неодобрительно отно% ситься к тем, кто не проявляет таких качеств. Главная его опасность