Цель-3. Необходимо, но не достаточно | страница 20



— Это приводит к целому ряду серьезных последствий. Ленни начинает их перечислять:

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

— Неудивительно, — продолжает он, — что для реакции на многие вопросы требуется столько времени. Я должен был это предвидеть. Несколько лет назад мы могли легко отследить источник ошибки и устранить его. Теперь же программа настолько сложна, что сбой можно объяснить целым множеством возможных причин. При этом даже опыт лучших программистов не позволяет свести это множество к какому-то разумному количеству. Поэтому им приходится проверять все подряд, а на это уходит много времени. Слишком много.

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

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

— Как и мои люди, — вставляет Мэгги. — Кстати, ты прав — для обучения новых работников требуется все больше и больше времени.

— Совершенно верно. «КейПиАй Солюшнз» дает своим людям отличную базовую подготовку. Поэтому, если они звонят нам, это означает, что вопрос требует знаний, не содержащихся в стандартных инструкциях. Он требует знаний, которые могут быть только у разработчиков. Даже если проблема описана достаточно четко, определить, где именно в программе скрыта ошибка, не так-то просто. А когда найден сам проблемный блок программы, для выявления и устранения самой ошибки все равно нужно много времени.

— Этим объясняется жутко долгое время реакции на срочные проблемы, — констатирует Скотт. — Ленни, как ты считаешь, мы не ошиблись, добавив столько модулей?

— Нет, — уверенно отвечает Ленни. — Если мы хотим оставаться конкурентоспособными, мы должны расширять возможности нашей системы. Мы должны добавлять новые модули. Проблема не в их количестве. Оно вполне управляемо, а связи между модулями хорошо отлажены. Я за этим лично слежу. Проблема заключается в большом количестве функций, входящих в каждый модуль. Количество функций уже стало чудовищным. Функции нас просто убивают, — решительно добавляет он.