Выбрать главу

Другое дело, что «прогресс» такого рода многие и за прогресс-то не считают. Достаточно вспомнить последнюю (в смысле — самую свежую) крупную и громкую платформу, сделанную с нуля, — Microsoft .Net, которую задолго до, во время и еще долго после выхода в свет (да и до сих пор) окружали недоуменные статьи на тему «что-же-здесь-нового-и-зачем-об-этом-так-кричать» [Одну из наиболее характерных статей такого рода, к тому же неплохо написанную и сносно переведенную на русский, можно найти у Джоэля Спольски:russian.joelonsoftware.com/articles/MicrosoftGoesBonkers.html]. Действительно, ни один из компонентов .Net, будучи рассмотрен сам по себе, не был чем-то «новым и особенным»; инновацией была целеустремленность и последовательность, с которой Microsoft охватил весь процесс разработки ПО — для любых условий, на любом языке, с интеграцией (и дифференциацией) всего и вся. Набор не самых передовых технологий, объединенных не самым изящным образом, за несколько прошедших лет изменил индустрию весьма существенно — и кто скажет, что это не прогресс, тот прогресса не видел.

Что это мы такое накреативили?

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

Пользователю (заказчику, потребителю результата) по-прежнему предлагается либо довериться репутации производителя («фирма веников не вяжет уже сорок лет»), либо опробовать его перед покупкой/оплатой — и при «опробовании» приходится ориентироваться в основном на собственный опыт, интуицию, вкус и тому подобные неформализуемые способности. В любом случае, предполагается, что корректность произведенного уже обеспечена производителем (внутри его головы или его фирмы) и является полностью его болью и заботой.

У самого производителя сегодня не намного больше средств обеспечения этой корректности, чем 10-20-30 лет назад, — автоматически проверить что можно (например, орфографию), тестировать автоматически или вручную [Разницу между проверкой и тестированием можно сформулировать так: проверка напрямую сверяет результат с «правильным» (что возможно далеко не всегда), а тестирование рассматривает его как «черный ящик»: на вход подали А — на выходе должно получиться Б] и опять же — полагаться на свой опыт-вкус-интуицию. Прогресс в стане производителей идет в основном не технологический, а методологический: скажем, все в той же разработке ПО — от когдатошнего максимально-формального процесса (определяем требования до начала работы, пишем кучу документации до начала кодирования, ни на йоту не отклоняемся от плана) — к сегодняшним гибким (agile) методологиям (требования могут меняться в процессе разработки, вся функциональность охвачена тестами, код, спецификации, требования непрерывно перерабатываются).

Впрочем, один из аспектов сегодняшнего прогресса софтверных технологий связан с вопросом «корректности результата» достаточно сильно: при использовании гибких методологий разработки софта одним из важных требований является то, что заказчик должен видеть «полуготовый, но уже полезный» результат разработки; в идеале представитель заказчика постоянно присутствует при процессе разработки: это дает команде разработчиков жизненно необходимый своевременный ответ на вопрос «а то ли мы вообще делаем?». Такие «тепличные» условия легко обеспечить, когда есть конкретный, единичный заказчик — но не в условиях массовой разработки, где по-прежнему приходится действовать по принципу «сделать нечто, послушать отклики пользователей, выпустить следующую версию и так ad infinitum».

В качестве альтернативы, приобретающей все большую популярность, можно ткнуть пальцем в веб-приложения (те, которые установлены на единственном сайте — а весь Интернет пользуется) как идеальную среду для получения отклика от пользователей — здесь и новую версию можно «выпускать» хоть каждый день безболезненно для пользователей; и пользователи «на виду» (можно собрать детальную статистику, кто из них как использует приложение); и пользователи эти больше расположены к общению с командой разработчиков (нет ощущения «программа у меня на компьютере, а разработчики где-то далеко»). Тот же Google Spreadsheet, на сегодня имеющий смешные по сравнению с Excel возможности, опережает последнюю только в одном: новая функция может появиться ПРЯМО СЕЙЧАС, а не «через пару лет, когда наконец-то будет выпущена следующая версия».

То есть, возвращаясь к нашим пулям, результат, возможно, и не станет заведомо корректным, но всегда может быть оперативно скорректирован — и все благодаря магическим словам «веб» и «онлайн».

Не нужно думать, что все эти рассуждения применимы только к разработке ПО. Например, в деле написания текста (которым и я сейчас занимаюсь) блоги как квази-СМИ опережают традиционные СМИ ровно постольку, поскольку последние продолжают работать по «офлайновой» модели «текст опубликован, а там хоть трава не расти», — тогда как в блоге автор статьи обычно активно участвует в обсуждении и зачастую пишет по его результатам новые статьи (или корректирует старые) [Здесь, кстати, можно бы попенять «Компьютерре» за «старообрядческую» модель ее интернет-образа: к статьям хоть и «цепляются» обсуждения в форуме, но никакой связи ни с авторами, ни с последующими статьями форум не имеет]. Сюда же можно записать и Википедию, которая методом непрерывной и всеобщей коррекции накопила объем человеческого знания, несравнимый ни с одной когда-либо созданной людьми энциклопедией.