Содержание
- Что такое фича простыми словами
- Что такое баг простыми словами
- Откуда взялось слово «баг»
- Чем фича отличается от бага
- Какие бывают баги
- Известные баги, которые дорого обошлись
- Как разработчики находят и исправляют баги
- Заключение
«Это не баг, это фича» — фраза, которую слышал, пожалуй, каждый, кто хоть раз общался с программистами или играл в видеоигры. Оба слова давно вышли за пределы ИТ и звучат в разговорах о смартфонах, приложениях и даже бытовой технике. Объясняем, что они означают, откуда взялись и чем одно отличается от другого.
Что такое фича простыми словами
Фича (от английского feature — особенность, характеристика) — это функция или возможность приложения, сайта или устройства, которую разработчики добавили намеренно.
Несколько примеров:
- темная тема в приложении;
- возможность редактировать уже отправленное сообщение в мессенджере;
- разблокировка смартфона по лицу;
- кнопка «Купить в один клик» в интернет-магазине;
- автосохранение документа каждые несколько минут.
Главное в понятии «фича» — замысел. Кто-то решил, что эта функция нужна пользователям, описал, как она должна работать, а программисты её реализовали.
В разговорной речи слово употребляют шире. «Фишкой» или «фичей» могут назвать любую интересную особенность: «Фича этого кафе — завтраки в течение всего дня». Но в ИТ-среде это именно запланированная функциональность продукта.
Что такое баг простыми словами
Баг (от английского bug — жук, насекомое) — это ошибка в программе, из-за которой она работает не так, как задумано.
Баги бывают самые разные:
- приложение закрывается, когда вы нажимаете определённую кнопку;
- в корзине интернет-магазина неправильно рассчитывается сумма;
- текст на сайте накладывается на картинку на экране телефона;
- персонаж в игре проваливается сквозь стену;
- сообщение приходит дважды.
Баг возникает не потому, что программа «сломалась» сама по себе. Почти всегда причина — человеческая ошибка: разработчик что-то не учел, неправильно написал код, не предусмотрел необычную ситуацию или две части программы плохо взаимодействуют между собой.
Откуда взялось слово «баг»
Технические неисправности называли «жуками» еще в XIX веке. Например, изобретатель Томас Эдисон в письмах 1870-х годов так описывал мелкие проблемы в своих устройствах.
Но самая известная история связана с компьютером Harvard Mark II. В сентябре 1947 года операторы нашли причину сбоя в работе машины — в реле застряла настоящая моль. Насекомое вклеили в рабочий журнал с шутливой подписью о первом реальном случае, когда нашли «жука». Эту историю часто связывают с именем Грейс Хоппер — программистки, которая работала с этим компьютером и охотно её рассказывала. Страница журнала с той самой молью хранится в Смитсоновском национальном музее американской истории.
Отсюда же происходит и слово «дебаггинг» (debugging) — поиск и исправление ошибок в программе.

Чем фича отличается от бага
Разница проста: фичу сделали намеренно, баг появился случайно.
| Фича | Баг | |
|---|---|---|
| Происхождение | Задумана разработчиками | Возникла из-за ошибки |
| Цель | Сделать продукт более полезным | Цели нет, это недостаток |
| Что с ней делают | Развивают, улучшают | Ищут и исправляют |
| Пример | Тёмная тема в приложении | Тёмная тема включается сама посреди дня |
Интересно, что одна и та же функция может быть и фичей, и источником багов. Скажем, автосохранение — это фича. А вот если оно время от времени стирает последние изменения, то это уже баг внутри фичи.
«Это не баг, это фича»: откуда взялась шутка
Фраза «It’s not a bug, it’s a feature» — одна из самых известных шуток в ИТ-сфере. Так иронично говорят, когда ошибку выдают за задуманный эффект, чтобы не исправлять её.
Но иногда в шутке есть доля правды. Бывает, что случайная ошибка нравится пользователям, и разработчики оставляют её намеренно. Чаще всего такое случается в играх. В файтинге Street Fighter II, по распространенному рассказу, комбо-удары появились благодаря недоработке в обработке нажатий. Разработчики заметили это и сделали комбо полноценной механикой, которая впоследствии стала стандартом для всего жанра.
Какие бывают баги
Тестировщики обычно делят ошибки по степени серьезности:
- Критические (блокирующие). Программа не запускается, невозможно оплатить заказ, теряются данные. Такие баги исправляют немедленно.
- Серьёзные. Важная функция работает некорректно, но есть способ её обойти.
- Незначительные. Ошибка заметна, но почти не мешает: кнопка расположена криво, в тексте опечатка.
- Косметические. Мелочи в дизайне, которые замечают разве что самые внимательные пользователи.
Отдельно выделяют баги безопасности — уязвимости. Из-за них злоумышленники могут получить доступ к чужим данным или аккаунтам. Крупные компании даже платят вознаграждения людям, которые находят такие ошибки и сообщают о них. Эти программы называют bug bounty.
Известные баги, которые дорого обошлись
Иногда одна ошибка в коде обходится в миллионы.
- Ракета Ariane 5 (1996). Через 40 секунд после первого запуска европейская ракета сошла с курса и самоуничтожилась. Причиной стала ошибка при преобразовании числа из одного формата данных в другой, который не смог вместить слишком большое значение.
- Зонд Mars Climate Orbiter (1999). NASA потеряла марсианский аппарат, потому что одна часть программного обеспечения производила расчёты в фунтах-силах, а другая ожидала метрические единицы. Зонд приблизился к Марсу на неправильной высоте.
- Проблема 2000 года (Y2K). Многие старые программы хранили год в виде двух цифр, поэтому 2000 год мог восприниматься как 1900-й. Мир потратил огромные средства, чтобы заранее исправить код, и удалось избежать серьёзных массовых сбоев.

Как разработчики находят и исправляют баги
Над качеством программ работает целая команда, а поиск ошибок состоит из нескольких этапов:
- Тестирование. Тестировщики (QA-инженеры) проверяют программу вручную и с помощью автоматических тестов, пытаясь «сломать» её во всех возможных сценариях.
- Баг-репорт. Обнаруженную ошибку описывают: что именно произошло, как её воспроизвести, что должно было произойти вместо этого, на каком устройстве и в какой версии программы.
- Отладка. Разработчик ищет в коде причину ошибки и исправляет её.
- Повторная проверка. Тестировщик убеждается, что баг исчез и исправление не сломало ничего другого.
- Обновление. Исправление доходит до пользователей вместе с новой версией приложения. Именно поэтому в описаниях обновлений так часто пишут «Bug fixes and performance improvements».
Вывод
Фича — это то, что разработчики сделали намеренно, чтобы продукт стал удобнее и полезнее. Баг — случайная ошибка, из-за которой что-то работает не так, как задумано. Первые развивают, вторые ищут и исправляют. А когда в следующий раз услышите «это не баг, это фича», знайте: чаще всего это шутка, но иногда случайная ошибка действительно становится любимой функцией.
Читайте также: Прототип и прототипирование — что это? Простыми словами