16 лет пишу код. Последние годы собираю системы, где сходятся сайт, склад, CRM и телефония. Что обычно обнаруживается, когда приходишь в такую систему. 790 товаров, которые полгода не показывались на сайте, хотя лежали на складе. Обмен с учётной системой ходил по фильтру «изменено после этой даты», а по такому фильтру архивные позиции не приходят вовсе: значит архивация и удаление для обмена невидимы в принципе. Ни один журнал ошибку не показывал, обмен считался успешным. Там же нашлись 353 позиции с неверным остатком. 31% звонков отдела продаж не попадал ни в один отчёт. Менеджер определялся по имени оператора в телефонии, имена там меняли, и регулярное выражение молча перестало совпадать. Перевёл определение на внутренние номера линий, а в каждый отчёт встроил строку сверки: сколько разговоров не разнесено и кто именно выпал. Отчёт, который не умеет сказать, чего в нём нет, выглядит достоверным при любой потере данных. Обрывы синхронизации после переезда сервера в Москву оказались ограничением канала: запрос на 17 КБ проходил за 0,2 секунды, на 42 КБ рвался ровно через 15 секунд, три раза из трёх. Нашлось бинарным поиском по размеру пакета. Лечится разбиением записи по объёму в килобайтах. По числу строк резать бесполезно: пятьсот строк могут весить и двадцать килобайт, и сто. Такие вещи не находятся чтением кода. Они находятся, когда сверяешь две системы цифрами и смотришь, где расходится. Работаю удалённо: проекты, абонентское обслуживание или роль технического директора на стороне компании.