62
Часть II . Инвестируя в свой продукт
этой поговорки Лао-цзы не учел, что бывают люди, не желающие
учиться ловить рыбу. Такой человек предпочтет на следующий день
попросить еще одну рыбу. В процессе
обучения задействованы как
учитель, так и ученик. Но многие из нас зачастую не испытывают
желания учиться.
Что в индустрии ПО считать
рыбой
? Процесс работы с инструментом,
некий аспект технологии или некую информацию из бизнес-отрасли,
в которой ты работаешь. Умение проверить определенную часть си-
стемы управления исходным кодом,
с которой работает твоя команда,
или настроить сервер приложения.
Многие из нас считают все эти мелочи
само
собой разумеющимися и счита-
ют, что
с ними обязательно справится ктото другой
. В системе
управления версиями разбирается парень, отвечающий за сборку
проекта. Достаточно попросить его все настроить, когда возникнет
такая необходимость. Группа, отвечающая за поддержку инфраструк-
туры, умеет настраивать брандмауэры между вами и заказчиками. По-
этому, если появится такая нужда, достаточно отправить им письмо
по электронной почте, и они обо всем позаботятся.
Кто хочет зависеть от милостей другого человека? Или поставим
вопрос более жестко: ты бы согласился нанять на работу человека,
зависящего от
целой группы специалистов
? Лично я отвечаю на этот
вопрос отрицательно.
И предпочитаю сотрудников, способных к са-
мостоятельным действиям.
Очевидно, что первым делом следует изучить инструменты, необхо-
димые для выполнения непосредственных обязанностей. Например,
такой мощный инструмент, как система управления версиями. Он по-
зволяет разработчикам повысить продуктивность своего труда. Это
не просто место для кода, с которым ты закончил работать, ни
в коем
случае не следует воспринимать эту систему подобным образом. Она
является неотъемлемой частью разработки. И столь важная вещь —
надежное хранилище твоей работы — не должна быть для тебя за-
гадкой. Самодостаточный разработчик легко обнаружит разницу
между той версией проекта, над которой он работает, и последней
корректной версией из хранилища. А представь, что тебе нужно взять
Не жди, пока тебе
расскажут . Спрашивай сам!
63
Совет 11 . Учимся
ловить рыбу
последний выпущенный код и исправить там ошибку. Обнаружив
существенную ошибку посреди ночи, ты вряд ли захочешь кому-то
звонить и просить дать тебе корректную версию, чтобы приступить
к устранению неполадок. Все то же самое можно сказать о средах раз-
работки, операционных системах и практически каждом фрагменте
инфраструктуры, на которой базируется твой код.
Не менее важной является используемая тобой технологическая
платформа. Например, ты можешь разрабатывать
приложения с по-
мощью J2EE. Тебе приходится создавать различные классы, интер-
фейсы и дескрипторы развертывания. Можешь ответить на вопрос:
зачем
? Знаешь, как применяются все эти вещи? Что происходит при
запуске J2EE-контейнера? Даже если ты не являешься разработчиком
сервера приложений, знание всех этих вещей позволит тебе писать
надежный код для этой платформы и устранять неисправности, когда
что-то идет не так.
Особенно располагают к лени различные модули, генерирующие за
тебя код. Они весьма распространены
среди Windows-разработчиков,
так как
Microsoft
создала множество инструментов, предельно упро-
щающих решение многих задач. Оборотной стороной этого удобства
стало появление множества разработчиков, не имеющих понятия
о принципах работы своего кода. Происходящее внутри того или
иного модуля остается для них мистической тайной. Не пойми меня
неправильно — генерация кода может быть весьма полезной. Ведь
именно она позволяет перевести высокоуровневый код C# в байтовый
код, запускаемый в среде исполнения .NET. Не
думаю, что тебе понра-
вилось бы писать такой код вручную. Но применение высокоуровне-
вых мастеров и модулей не способствует углублению твоих знаний.
В итоге твои навыки ограничиваются умением работать с имеющимся
инструментарием.
В бизнесе, с которым связана наша деятельность, также можно легко
проглядеть рыбу. Например, сотрудник ипотечной компании может
попросить специалиста рассчитать процентную ставку для всех
необходимых при тестировании сценариев, а может рассчитать ее
самостоятельно. Хотя взаимодействие с клиентом приветствуется,
как и согласование с ним бизнес-требований (в
противовес недопо-
ниманию и самостоятельным попыткам нарисовать полную картину),