Часть 1: Принц и спам
Письмо упало в почтовый ящик Алексея Фильтрова точно в тот момент, когда его система машинного обучения в сто двадцать восьмой раз не смогла отличить рецепт борща от спама про увеличение различных частей тела. Антиспам-движок, над которым он работал последние три года, снова впал в глубокую депрессию.
— Дорогой друг! — сообщало письмо голосом Моргана Фримена в голове Алексея. — Я принц Олувафанкунми Адебайо из славного города Лагос. К несчастью, мой отец, король нигерийского спама…
Алексей машинально потянулся к кнопке “спам”, но его рука замерла на полпути. Что-то в этом письме было не так. Во-первых, оно было написано безупречным русским языком. Во-вторых, содержало корректные гиперссылки на Wikipedia об истории Нигерии. А в-третьих, и это окончательно выбило Алексея из колеи, письмо включало подробный код на Python, иллюстрирующий схему денежных переводов.
— Вот те на, — пробормотал себе под нос Алексей, — да это же паттерн “Строитель” в действии!
Следующие два часа он провел в увлекательной переписке с нигерийским принцем, который неожиданно оказался большим фанатом Clean Code и даже цитировал Мартина Фаулера. Они обсудили плюсы и минусы различных паттернов проектирования, поспорили о преимуществах функционального программирования и даже обменялись парой шуток про JavaScript.
— А вы знаете, — написал в какой-то момент принц, — что RegExp для валидации email может быть длиннее, чем конституция небольшой африканской страны?
Алексей хрюкнул от смеха, случайно опрокинув на клавиатуру свой любимый кофе с названием “Error 404: Coffee not found”. В этот момент его антиспам-система неожиданно ожила и выдала первый за день осмысленный результат: “Вероятность спама: 146%. Письмо слишком хорошо написано, чтобы быть настоящим”.
Часть 2: Собеседование с судьбой
Офис компании “КодЧистых” располагался на тринадцатом этаже бизнес-центра “Вавилонская Башня”. Охранник на входе, увидев высокого темнокожего мужчину в национальном нигерийском наряде и с ноутбуком под мышкой, только молча отсалютовал банкой энергетика.
— Я к Алексею Фильтрову на собеседование, — произнес посетитель с легким акцентом. — Меня зовут Олу… можно просто Олег.
В переговорной комнате Алексей теребил свой бейджик с надписью “Я не баг, я фича”. Перед ним лежало резюме, в котором среди прочего значилось: “Опыт работы: 5 лет разработки высоконагруженных систем рассылки персонализированных предложений (спам-технологии)”.
— Значит, решили сменить сферу деятельности? — спросил Алексей, разглядывая кандидата поверх очков.
— Да, знаете, — улыбнулся Олувафанкунми, — в какой-то момент я понял, что создавать защиту от спама намного интереснее, чем сам спам. Это как в шахматах — играть за белых или за черных. Суть одна, а подход разный.
— А как же наследные миллионы? — не удержался Алексей.
— Ах, это, — махнул рукой принц. — Я их вложил в биткоины. В 2009 году. — Он достал из портфеля потрепанный ноутбук с наклейкой “Keep calm and catch exceptions”. — Кстати, я тут набросал пару идей по улучшению вашего антиспам-движка. Как насчет использования трансформеров для анализа контекста?
Через час они все еще сидели в переговорной, увлеченно обсуждая архитектуру новой системы. На доске красовалась схема, больше похожая на карту метро в час пик, а в углу сиротливо остывал третий по счету кофе.
— Ну что ж, — подвел итог Алексей, — думаю, мы нашли нашего джуниор-разработчика. Добро пожаловать в команду!
— Кстати, — Олувафанкунми хитро прищурился, доставая из портфеля потрёпанную флешку, — я тут набросал эвристику для рецептов. Знаете, в чём главная проблема с борщом? У него же энтропия как у спама зашкаливает: свекла с чесноком, капуста с перцем… Идеальная маскировка для спам-рассылки выглядела бы точно так же.
Алексей уставился на строчки кода, где комментарии к функциям были написаны в виде кулинарного рецепта. Антиспам-система тихонько пискнула и выдала на экран: “Warning: слишком много капусты в исходном коде”.
А через месяц команда выпустила обновление, которое наконец-то научилось отличать нигерийских принцев от настоящих разработчиков. Впрочем, одного конкретного принца система упорно пропускала, видимо, решив, что некоторые исключения только подтверждают правила.