В программном обеспечении есть ошибки. Это нормально.

Разочарование возникает, когда ожидания не соответствуют действительности. И наши ожидания в отношении качества программного обеспечения совершенно нереалистичны. Таким образом, многие люди постоянно разочаровываются - даже приходят в ярость - из-за ошибок программного обеспечения. Не должно быть.

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

Как вы думаете, как рынок получит iPhone 7, если его заголовок будет сокращать 1/3 функций, чтобы уменьшить кодовую базу, чтобы в нем было меньше ошибок? Да, я так и думал. Хотя люди могут прийти в восторг от идеи директивы «Остановите поезд, нам нужно починить рельсы» для разработки программного обеспечения, это не то, что они купили бы.

Что ж, но есть аргумент: Apple настолько богата, не могут ли они просто нанять больше разработчиков и тестировщиков, чтобы исправить все ошибки? Перефразируя Фредерика Брукса: Нет. Разработка программного обеспечения так не работает. Когда на решение задач берутся все большие команды, обычно проблемы только усугубляются.

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

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

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

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

Учитывая, что существует так много факторов, более важных для будущих перспектив программного пакета и его создателей, действительно ли удивительно, что не каждая ошибка получает приоритет «все бросай, мы должны исправить это»? Конечно, нет. Но мы, как пользователи, обнаружившие ошибку, по-прежнему постоянно делаем вид, что это так.

Это действительно вершина близорукости, когда мы, как пользователи, требуем и унижаем производителей программного обеспечения, чтобы они исправили нашу домашнюю ошибку только потому, что мы ее обнаружили, и просто потому, что она могла вызвать что угодно - от легкого раздражения до потери времени.

Ценность любой данной ошибки может быть оценена по количеству затронутых пользователей, умноженному на критичность проблемы. Многие пользователи теряют все свои данные из-за этой ошибки? Ладно, чертовски важно! Почини это немедленно! Многих пользователей это немного раздражает или смущает? Наверное, скоро надо это исправить. Некоторым пользователям нужно потратить еще 30 секунд на работу? Вряд ли это будет исправлено в ближайшее время!

Софтверные организации, которые остаются в бизнесе, сортируют накопившееся количество подобных ошибок. Они не бросают все, чтобы разобраться с какой-нибудь чертовой ошибкой. По мере того, как начинает действовать эффект масштаба, возрастают и масштабы последствий такой сортировки. Крупные программные пакеты и организации будут иметь сотни, если не тысячи, если не ДЕСЯТИ ТЫСЯЧ открытых ошибок различной критичности. ЭТО НОРМАЛЬНО. ЭТО ОЖИДАЕТСЯ.

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

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

Хочу сказать, что Basecamp 3 не содержит ошибок. Но это так. Мне жаль! Надеюсь, это принесет больше пользы, чем раздражение. Попробуйте.