Автор начинает с философского: качество — это переживание процесса, а хорошее качество означает пройти путь с достоинством и оставить мир чуть лучше. Программные продукты — штука особая. В отличие от железа, это чистая концепция, бесконечно податливая и мутирующая. Есть примеры «завершённого» софта — многие Unix-утилиты, ZeroMQ или мой Emacs, в котором я пишу этот текст и который эволюционирует почти полвека. Но большинство продуктов обречены на бесконечные изменения, ведь мир вокруг них меняется без остановки, а софт ещё и разгоняет эти изменения. Мы дошли до того, что вручную писать и править код недостаточно быстро — приходится изобретать алгоритмы, которые сами генерируют и правят другие алгоритмы.
Кто отвечает за качество? Только ли выделенная команда QA? Посмотрите на обычные сценарии: фича работает, но люди не могут ей воспользоваться; компания в рекордные сроки вкрутила второй продукт, который никому не нужен; критический релиз ломает прод и не откатывается; утекают данные, а CEO вешает вину на DevOps-инженера. Вывод прост: за качество отвечает каждая функция, причастная к жизни продукта.
Традиционный линейный процесс — от анализа и требований до разработки, QA и продакшена — выглядит безобидно, но риск в нём сосредоточен в самом начале. Обратная связь приходит слишком поздно, цена исправления ошибок экспоненциально растёт, а слабые сигналы гибнут под давлением сроков. Даже если разрезать работу на мелкие партии, задержки обратной связи никуда не денутся и будут бить по процессу с удвоенной силой.
Каждый хотфикс, жалоба, падение приложения или отказ сервиса — это порез. Порезы накапливаются, медленно превращая продукт в бандаж из пластырей, а затем в гангрену. Как разрушить качество? Легко: назвать тестирование «обеспечением качества», свалить QA на самых неопытных, поощрять фразы вроде «починим, если клиенты пожалуются», искать виноватых, натравливать отделы друг на друга, нанять CEO в стиле Vogon или Дарта Вейдера и потихоньку нормализовать любые отклонения. Автор советует за вдохновением заглянуть в рассекреченное «Simple Sabotage Field Manual» ЦРУ, особенно в раздел о вмешательстве в работу организаций.
Создавать качество трудно. Для начала — не делать перечисленного выше и пробовать обратное. Но главное — нет волшебной формулы. Путь приходится выращивать совместно: всем причастным, в уникальном контексте организации, вместе с клиентами и партнёрами. Алан Кей однажды сказал: «Perspective is worth 80 IQ points». Умение страдать конструктивно и намеренно искать неудобные, расшатывающие статус-кво точки зрения — первый шаг к лучшему качеству. Мы живём в удачное время: индустрия накопила огромный массив исследований и отчётов, оплаченных слезами и кровью. Автор упоминает подкаст Джина Кима The Idealcast и признаёт, что его собственный текст — слепок текущей интуиции, выросшей из двадцати лет ошибок, редких побед и непрерывных циклов eval/apply.