Шрифт:
— Вот и неправильно.
— Что неправильно? Что мы не замечаем отдельные ошибки?
— Нет, неправильно, что вы пытаетесь исправлять ошибки на стадии проектирования.
— Я не могу понять — о чем это вы?
— Я знаю это, потому что уже многие годы наблюдаю за тем, как проектируются программы — никто даже близко не подошел к точности, позволяющей видеть за дизайном системы программный код.
— Но мы всегда проектируем, прежде чем писать код, — все так делают.
— Разумеется. Только вот все занимаются этим не в то время, которое было отведено на проектирование. Скажем, в начале проекта команда создает некий документ. В этом документе есть немного философии, немного размахивания руками и надувания щек, может быть, общая структура будущей системы — вот, в общем, и все. И все это создается с одной-единственной целью: обезопасить себя от руководства, которому обязательно нужно видеть этот самый документ. Наконец начальство говорит: «Поехали». И теперь начинается самая интересная часть работы. Вся команда радостно запихивает никому не нужный документ на полку, где он пылится до окончания проекта. А вот когда они приступают к написанию кода, тут-то и начинается настоящее проектирование. Именно тогда, когда они пишут код! Вот когда принимаются решения о конкретных модулях, их поведении и интерфейсах. И вот эти решения вы уже никак не проверите.
Мистер Томпкинс только дух перевел. Ему страшно не нравилось то, к чему клонил Аристотель.
— Разумеется, низкоуровневый дизайн воплотить в жизнь куда как проще.
— Разумеется.
— Но только низкоуровневый.
— То, что вы называете высокоуровневым дизайном, на самом деле — философия и размахивание руками.
— Не знаю, не знаю… Что-то подсказывает мне, что вы почти во всем правы, и тем не менее…
— Конечно же, я прав. Низкоуровневое проектирование — единственная реальная вещь во всем проекте. А то, что столь напыщенно называют «концептуальным дизайном», на самом деле — одна показуха.
— Ну, допустим, вы правы. А если нет? Уж меня-то это точно должно беспокоить, правда? Допустим, я сделаю то, что вы советуете, а потом окажется, что вы ошиблись?
— Тогда вам хана, — весело улыбнулся Аристотель Кенорос.
— Вот это-то меня и беспокоит.
Господи, какая же выдержка ему понадобится, если он все-таки решится на этот эксперимент. Придется откладывать, и откладывать, и откладывать написание кода, копить все до самого конца проекта. А если дело не выгорит, то там еще образуется куча ошибок…
— Аристотель, скажите честно — чья это сумасшедшая идея? Кто это все придумал?
— Один парень.
— Вы сами?
— Нет, не я. Какой-то другой парень. Я даже не знаю его имени. Я сам практикую эту технику уже много лет, но выдумал ее не я.
— Вы даже не знаете, как его зовут?
— Нет, мы с ним общаемся через Интернет. Просто обмениваемся сообщениями. Это оракул, гуру, но имени своего он не называет. Могу дать вам его ID, если хотите. Спросите его сами, — Аристотель нацарапал несколько цифр на листке бумаги и протянул его мистеру Томпкинсу.
Мистер Томпкинс взял листок и отправился восвояси.
Делать работу по-другому
1. Есть только один способ сократить время на разработку, когда его и без того мало — уменьшить сроки отладки программы.
2. Проекты с высокой производительностью требуют гораздо меньше времени на отладку и исправление ошибок.
3. Проекты с высокой производительностью требуют гораздо больше времени на проектирование.
Мистер Томпкинс отложил ручку. Да, похоже, все так и есть. Раз на отладку и исправление ошибок уходит около половины всего времени и ресурсов, то если вы хотите добиться выдающихся результатов, вы можете только сократить время, отведенное на отладку. Таким образом останется больше времени на проектирование. Да, с этим нельзя не согласиться.
Однако это не доказывало обратного: что в результате более тщательной работы над дизайном в программе останется меньше ошибок и недоделок. Дело в том, что он уже приготовился записать следующий пункт: «Чем больше времени мы расходуем на проектирование, тем больше времени экономим на отладке», но ему не хватило уверенности. Так ли это? Проверить сейчас он это не мог, значит, надо было просто поверить Аристотелю Кеноросу или же вообще забыть об этом. И, честно говоря, он еще не решил, какой путь будет более правильным.
Если он согласится последовать совету Аристотеля, то наверняка не обойдется без бунта на корабле. Программисты привыкли тратить много времени на отладку программ и исправление ошибок. И едва ли им понравится такая вот радикально новая схема работы.
И ему, мистеру Томпкинсу, придется регулярно выслушивать жалобы, сомнения, уговаривать, требовать и настаивать. Ну, по крайней мере, с этим-то он может справиться. В чем-чем, а в этой области у него есть и опыт, и талант.
Мистер Томпкинс вспомнил о разговоре с генералом Марковым сегодня утром. Даже теперь, когда он вспоминал искренние и теплые слова Габриели, ему становилось хорошо и легко на душе: «Именно поэтому мы и идем за тобой, Вебстер. В этом твоя сила». Мистер Томпкинс снова взял карандаш и продолжил сегодняшний список.
4. Нельзя заставить людей делать что-то по-другому, если ты о них не заботишься, если ты ими не интересуешься. Чтобы они изменились, ты должен понимать (и ценить) их самих, что они делают и к чему стремятся.
Он закрыл записную книжку и взял в руки письмо, которое написал Кенорос. В нем говорилось именно то, чего он и требовал, слово в слово. Теперь хоть министр Бэллок угомонится. Завтра утром он отправит это письмо с первым курьером.
Глава 15
Думать быстрее!