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

Точность начинается с правил
Когда в банке появляется новое требование, первый вопрос — не:
«Как это закодировать?»
Сначала нужно понять:
- Что именно меняет эта операция?
- Из какого состояния система переходит в какое?
- Кто имеет право выполнить эту операцию?
- Что нельзя изменить?
- Как система должна вести себя в случае ошибки?
Потому что если правило сформулировано неясно, даже самый аккуратный код не гарантирует корректного результата.
Сейчас я начинаю с этого же и в проектах за пределами банковской сферы:
Сначала проясняю процесс и его границы. Потом пишу код.
«Работает» — это слишком низкий стандарт
В tutorial или на демо система может работать.
Но в реальной среде одного этого недостаточно.
Например:
- Что произойдёт, если одна и та же операция придёт дважды?
- Как система поведёт себя при неполном ответе?
- Что произойдёт, если старые данные не соответствуют новым правилам?
- Совпадает ли цифра в отчёте с той, которая была сохранена в операции?
Эти вопросы не замедляют меня.
Наоборот, они помогают избежать гораздо более серьёзных проблем в будущем.

Тихая ошибка — самая опасная
Некоторые ошибки сразу заметны.
Экран становится красным, возникает exception, процесс останавливается.
Но гораздо опаснее другая ситуация:
Система не показывает никакой ошибки, но записывает неправильные данные.
Неверный статус.
Неверная сумма.
Неверная связь.
А потом все начинают считать эти данные правильными.
Банковская среда особенно хорошо показывает этот риск.
Но то же самое может произойти с бронированием, платежами, складом или обработкой заказов.
Поэтому я спрашиваю не только:
«Код работает?»
Я также спрашиваю:
«После этой операции информация, которой располагает система, всё ещё соответствует действительности?»
Изменить работающий процесс — это отдельная задача
Написать новую систему — одно дело.
Изменить процесс, которому люди доверяют каждый день, — совсем другое.
В банке это особенно хорошо ощущается.
Изменение должно не только реализовать новое требование.
Оно также не должно нарушить уже существующее корректное поведение системы.
Поэтому перед изменением я смотрю на несколько вещей:
- Как процесс работает сейчас?
- На какие другие процессы повлияет это изменение?
- Что произойдёт с существующими данными?
- Есть ли возможность отката или rollback?
Это не страх.
Это ответственность.

Этот навык нужен не только в банке
Иногда банковский опыт воспринимают как что-то очень специфичное.
Для меня же главный навык, который я оттуда вынес, относится ко всей software engineering:
- Сначала прояснить правило.
- Учитывать граничные случаи.
- Особенно внимательно относиться к тихим ошибкам.
- Осторожно менять работающие процессы.
- Не говорить «готово», пока не убедился, что результат действительно корректен.
То же самое нужно и в бизнес-приложениях.
Потому что там, где есть клиент, деньги, статусы, история операций и отчётность, «примерно» может оказаться очень дорогим.
Что для меня означает точность?
Точность для меня не означает стремление сделать всё идеально.
Она означает, что:
- Понятно, что делает система.
- Понятно, что она должна сохранять.
- При ошибке система её не скрывает.
- Если завтра в проект придёт другой разработчик, он всё ещё сможет понять правила.
То есть точность — это не только отсутствие багов.
Точность — это возможность доверять системе.

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