74
Часть II . Инвестируя в свой продукт
лись самые отвратительные звуки, которые только можно себе вооб-
разить. И дело не в том, что в моей школе учились плохие музыканты.
Совсем наоборот. Просто они упражнялись.
Музыкальные упражнения и
не должны
звучать хорошо.
Если во вре-
мя занятий ты всегда играешь хорошо, это означает, что ты не пыта-
ешься выйти за пределы своих возможностей. Но ведь упражнения
предназначены именно для этого. В спорте происходит то же самое.
Спортсмены до предела напрягаются во время тренировок,
расширяя
пределы возможного для реальных выступлений. Все некрасивые
моменты происходят за закрытыми дверьми,
а не когда начинается
настоящая работа.
В отрасли, связанной с компьютерами, часто встречаются разработ-
чики, действующие на пределе своих умений. К сожалению, как пра-
вило, это означает, что их квалификация недостаточна для решения
поставленных задач. Но при этом существует тенденция практико-
ваться непосредственно на рабочем месте. Представь себе музы-
канта, который, выйдя на сцену, воспроизводит ту же какофонию,
что и в классе. Кто будет терпеть подобное?
Музыканты получают
деньги за
выступления
перед публикой, а не за отработку навыков.
Аналогичным образом мастер боевых искусств или боксер, трени-
рующийся до изнеможения во время подготовки к соревнованиям,
далеко в спорте не уйдет.
Как отрасль мы должны выделить время для практики. Мы на Западе
часто приводим доводы в пользу отечественных программистов, ба-
зируясь на относительно высоком качестве производимого ими кода.
В сравнении с тем, что пишут их зарубежные коллеги. Но чтобы стать
конкурентоспособными по качеству, нужно перестать относиться
к работе как к месту практики. Следует
инвестировать время
в свое
ремесло.
Несколько лет назад я начал экспериментировать с упражнениями
по
программированию, которые я смоделировал после практических
занятий музыкой. Первое правило состояло в том, что разрабатывае-
мые мной программы не предназначались для последующего исполь-
зования. Я не хотел халтурить, чтобы быстрее добраться до цели, но
у меня получались неработоспособные в реальной жизни программы.
75
Совет 15 . Практика, практика и еще раз практика
Я не работал спустя рукава, но был страшно разочарован тем, что
многие из приходящих мне в голову идей оказались неэффективны.
Хотя я старался сделать свою работу как можно более качественно,
проектное решение и код то и дело получались совсем не такими
элегантными, как мне хотелось.
Сейчас, оглядываясь назад, я
понимаю, что испытываемое мной во
время этих упражнений чувство неловкости было
хорошим призна
ком
. Продуцируемый мной код порой содержал выдающиеся фраг-
менты. Но я продолжал напрягать свои ментальные мускулы и вы-
рабатывать собственные стандарты.
Все как в случае с игрой на саксофоне.
Если бы я, начав упражняться, стал
играть только приятную для слуха му-
зыку, это означало бы, что тренировки
не происходит. Точно так же во
всех моментах элегантный код, вы-
ходящий из-под моего пера, указывает, что я уселся где-то в центре
своих текущих способностей, а вовсе не на их границе, где происходит
реальная тренировка.
Но как понять, что именно следует отрабатывать? Что расширяет
твои границы? Тема наработки навыков,
необходимых разработчику
программного обеспечения, потянет на отдельную книгу. Я первым
делом прибегаю к моему опыту джазового музыканта. Тренировки
имеет смысл поделить на три категории (я специально упрощаю для
читателей, не имеющих отношения к музыке):
физические упражнения/координация;
игра с листа;
импровизация.
Этот список может послужить основой
одного из вариантов
трени-
ровки для разработчиков программного обеспечения.
Физические упражнения/координация
. Музыканты должны нарабаты-
вать технику обращения с инструментом: генерация звука, координа-
ция движений (например, легкость перемещения пальцев), скорость
и точность — все это крайне важно наработать.
Тренируйся на пределе
своих способностей .