понедельник, 13 сентября 2010 г.

12/97: Код - это дизайн

Это перевод Code Is Design. Автор: Ryan Brush.

Из "97-ми вещей, которые должен знать каждый программист".

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

Вы можете представить себе, какой эффект произвело бы такое открытие на строительную индустрию, но что случится с людьми? Как изменится поведение архитекторов и дизайнеров, если стоимость сооружения здания будет почти нулевой? Сегодня они строят компьютерные и физические модели, которые тщательно тестируются, прежде чем воплощаются в физической конструкции. Стали ли мы тратить на этот процесс своё время, если бы стройка была бы бесплатной? Если здание рушится, в чём проблема - просто найди, в чём была ошибка и отстрой заново. Есть и другие последствия. Без моделей, незаконченные дизайны зданий будут эволюционировать постоянной перестройкой и улучшения первого приближения, пока не будет достигнут желаемый результат. Обычный сторонний наблюдатель не сможет сказать, закончено ли вот это здание или нет.

Исчезнет способность предсказывать время готовности проекта. Затраты на строительство всегда проще подсчитать, чем затраты на дизайн — мы знаем приблизительную стоимость установки сваи и точно знаем, сколько свай нам понадобится. Когда предсказуемые задачи начнут исчезать, пустое пространство начнёт заполнять слабо-предсказуемый дизайн. Первые результаты будут получаться быстро, но время конечного результата будет всё время ускользать.

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

Конечно, некоторые критичные проекты будут выполняться ответственнее, но многим клиентам придётся страдать от незаконченного дизайна. Компании всегда могут выслать их волшебных роботов исправить (patch) подкосившееся здание, которое они продали. Все говорит о том, что (как бы это не выглядело нелогичным) серьезное снижение стоимости строительства повлечет за собой столь же серьезное снижение качества.

Ну, вы, наверное уже догадались, что история выше говорит о программном обеспечении. Если мы примем, что код - это дизайн, творческий процесс, а не механический, то это хорошо объяснит кризис в нашей отрасли. У нас сейчас кризис дизайна: наши потребности в качественных, проверенных дизайнах превышает нашу способность их производить. Давление для использования незаконченных дизайнов слишком велико.

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

Комментариев нет:

Отправить комментарий

Можно использовать некоторые HTML-теги, например:

<b>Жирный</b>
<i>Курсив</i>
<a href="http://www.example.com/">Ссылка</a>

Вам необязательно регистрироваться для комментирования - для этого просто выберите из списка "Анонимный" (для анонимного комментария) или "Имя/URL" (для указания вашего имени и ссылки на сайт). Все прочие варианты потребуют от вас входа в вашу учётку (поддерживается OpenID).

Пожалуйста, по возможности используйте "Имя/URL" вместо "Анонимный". URL можно просто не указывать.

Ваше сообщение может быть помечено как спам спам-фильтром - не волнуйтесь, оно появится после проверки администратором.