Стратегия минимизации ошибок

В своё время мне довелось слышать такую классификацию что разработчики деляться на группы:

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

Классификация спорная, наверняка, её можно переформулировать и расширить, но главное в ней другое — понимание что чем сложнее разработка и конечный продукт тем его большую роль играют его недостатки и возможности их устранения. Это как если бы выбирать автомобиль — можно по фактуре и скорости, а можно по простоте и стоимости ремонта. Если автомобиль «для шика», то возможно что ремонт не так важен, а вот если он для бизнеса, то его роль выходит чуть ли не на первое место. Далее я затрону именно тему ошибок применительно к бизнесу.

Лично мне приходилось сталкиваться с этим не единожды. Вы когда нибудь видели приложения которые бы годами работали несмотря на то что внутренние компоненты сыпали исключениями, падали в Segmentation Fault и воскресали сразу же или по истечении короткого времени? Мне доводилось и не один раз. Причём эти приложения писали отнюдь не неопытные разработчики незнающие как ловить переполнение буферов, а как раз те кто понимал что они неизбежны и если не они так менее опытные разработчики вслед за ними обязательно такие ошибки наделают, а приложение должно жить в любом случае.

Простейший и наиболее очевидный пример — это веб сервера. В том же Apache уже сколько лет есть директива MaxRequestsPerChild, казалось бы, какой идиотизм, пусть все пишут правильный-чистый код, но нет, там есть опция при которой процесс принудительно умирает по принятию определённого числа запросов и причина банальна — минимизация ущерба от ошибок.

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

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

Люди ошибаются, случайно, из любопытства, вынужденно, под влиянием эмоций или обстоятельств, но это факт.

Поэтому идеального кода не существует, это фантастика. Если в нём нет хоть одной ошибки, он весь одна большая ошибка.

About This Author

  • iobit

    Полностью согласен. Со временем принимаешь это как факт.

Яндекс.Метрика