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

 

 

 

 

hang

e

 

 

 

 

 

 

C

 

E

 

 

 

X

 

 

 

 

 

-

 

 

 

 

 

d

 

F

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

to

 

 

 

 

w Click

 

 

 

398m

 

 

 

 

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

 

 

 

 

 

399Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

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

Легендарный Идеальный Программист – это:

Политик

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

Коммуникатор

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

Художник

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

Технический гений

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

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

И что из этого следует?

Не меняются только мудрецы и глупцы.

Конфуций

Занятно было поглядеть на клетки, в которых сидят эти «code mon% keys», и посмеяться над ними. Но какой из этого всего вывод? Если не сделать его, значит, все было лишь развлечением, и после всего прочи% танного вы и дальше станете совершать те же глупости, что и раньше.

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

Поразмыслите над вопросами, приведенными ниже. Полезно будет за% писать свои ответы в форму «План действий», помещенную в конце этой главы.

 

 

 

 

hang

e

 

 

 

 

 

 

C

 

E

 

 

 

X

 

 

 

 

 

-

 

 

 

 

 

d

 

F

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

to

 

 

 

 

w Click

 

 

 

400m

 

 

 

 

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.К какому типу программистов вы себя относите? Если быть чест% ным, то любой из нас найдет в себе какую%то часть каждого из них. Укажите один%два типа, которые лучше всего вас описывают.

2.Какие конкретные достоинства и недостатки у вас есть?

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

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

Для глупцов

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

Умение работать в команде

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

Честность и скромность

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

Постоянное самосовершенствование

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

Внимательность

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

 

 

 

 

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

 

 

 

 

 

401Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Увлеченность

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

Если вы станете степенным и скучным, ваша социальная позиция ослабнет, а качество кода снизится.

Резюме

Darwinian Man, though well#behaved,

At best is only a monkey shaved!

(Дарвиновский человек, со всем его благонравием – всего лишь побрившаяся обезьяна!)

У. Гильберт

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

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

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

Хорошие программисты…

Являются политиками, ком% муникаторами, художника% ми и специалистами

Работают в команде, честны и скромны, постоянно совер% шенствуются и увлеченно ра% ботают

Плохие программисты…

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

Плохо работают в команде

Пытаются выглядеть лучше, чем они есть на самом деле

Стагнируют – не стремятся к само% совершенствованию

См. также

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

Более глубоко исследуется динамика команды.