Дедукция по коду

Глава 1: Сбой в системе.
Томас Мюллер смотрел на синий экран смерти уже третий раз за утро. Курсор мигал насмешливо, словно подмигивал ему из цифрового ада. В офисе берлинской IT-компании "DigiSoft Solutions" царила обычная суета пятничного утра, но для Томаса этот день обещал стать последним.
– Мюллер! – рявкнул директор Штефан Вебер, появившись за спиной программиста как кошмарный поп-ап. – Что там с критическим багом в системе клиентской базы?
Томас медленно повернулся в кресле, его очки сползли на кончик носа. Тридцать два года, из них восемь в программировании, и он все еще чувствовал себя самозванцем среди настоящих кодеров.
– Ну технически – начал он, поправляя очки, – проблема не в коде как таковом. Скорее, это особенность архитектуры, которая.
– Мне плевать на твою архитектуру! – Вебер стукнул ладонью по столу. – Из-за этого бага мы потеряли данные трех крупных клиентов. Финансовый отдел насчитал ущерб в полмиллиона евро.
Томас сглотнул. Полмиллиона евро. Эта сумма крутилась в его голове как бесконечный цикл without break.
– Я могу все исправить, – пробормотал он. – Нужно только время для отладки.
– Времени больше нет, – холодно произнес Вебер. – Ты уволен. Кадровик оформит документы к обеду.
Мир вокруг Томаса словно завис. Он видел, как коллеги украдкой поглядывают в его сторону, как секретарша Ингрид сочувственно качает головой, как в углу экрана появляется уведомление о новом письме в корпоративной почте, которую он больше никогда не сможет открыть.
– Но – попытался возразить Томас.
– Никаких "но", – отрезал Вебер. – Охрана проводит тебя к выходу через полчаса. Личные вещи можешь забрать.
Томас посмотрел на свой рабочий стол. Фигурка Дарта Вейдера из "Звездных войн", подаренная коллегами на день рождения. Кружка с надписью "World's Okayest Programmer" – ироничный подарок от бывшей девушки Сабины. Стопка технических книг, которые он так и не дочитал. Маленький кактус в горшке, единственное живое существо, которое не умерло под его присмотром.
Восемь лет жизни помещались в одну картонную коробку.
Охранник Клаус, с которым Томас иногда обсуждал футбол, избегал смотреть ему в глаза, когда провожал к выходу. Автоматические двери офиса захлопнулись за спиной с характерным шипением, словно система наконец-то избавилась от вируса.
На улице моросил типичный берлинский дождь. Томас стоял на тротуаре, держа коробку с личными вещами, и чувствовал, как влага просачивается сквозь тонкую подошву его кроссовок. Прохожие обходили его стороной – высокого худого мужчину в мятой рубашке, который выглядел как символ корпоративного краха.
– Что теперь? – пробормотал он вслух, обращаясь к кактусу в коробке.
Кактус молчал. Он всегда был плохим собеседником.
Томас достал телефон и открыл банковское приложение. Баланс показывал сумму, которой хватило бы на три месяца жизни при строгой экономии. Может быть, на четыре, если питаться одними макаронами быстрого приготовления.
Он зашел в ближайшее кафе "Zur Alten Eiche" – старое место с деревянными столами и запахом кофе, смешанным с ароматом сигарет прошлых десятилетий. Заказал большой латте и сел в угол, поставив коробку на соседний стул.
– Мир программирования больше меня не хочет, – сказал он кактусу и сделал глоток кофе.
За соседним столиком сидела пожилая женщина с вязанием. Она внимательно наблюдала за Томасом уже минут десять.
– Молодой человек, – наконец обратилась она к нему, – вы выглядите так, словно вас только что уволили.
Томас удивленно поднял глаза.
– Откуда вы знаете?
– Коробка с личными вещами, мятая одежда, растерянный взгляд, – перечислила женщина, не отрываясь от вязания. – Плюс вы разговариваете с растением. Классические признаки внезапной потери работы.
Томас рассмеялся впервые за весь день.
– Вы что, детектив?
– Нет, просто наблюдательна. Хотя детективом быть интересно. – Женщина отложила вязание. – Фрау Кляйн. А вы?
– Томас Мюллер. Бывший программист.
– Акцент на "бывший"?
– К сожалению, да.
Фрау Кляйн кивнула сочувственно.
– Знаете, мой внук постоянно смотрит детективные сериалы. "Шерлок", "Коломбо", все эти новомодные штуки на Нетфликсе. Говорит, что настоящие детективы очень редки, а частных и вовсе почти не осталось.
Томас задумался. Детектив. Это звучало интересно. Романтично. Совсем не похоже на отладку кода в четыре утра под проклятия системного администратора.
– А как становятся детективами? – спросил он.
– Понятия не имею, – призналась фрау Кляйн. – Но уверена, что в интернете есть вся необходимая информация. Разве не так работает ваше поколение?
После разговора с фрау Кляйн Томас провел остаток дня дома, в своей однокомнатной квартире в районе Фридрихсхайн. Квартира напоминала гнездо интроверта: множество мониторов, стеллажи с техническими книгами, коллекция фигурок из видеоигр и полное отсутствие каких-либо признаков социальной жизни.
Он открыл ноутбук и начал гуглить информацию о частных детективах в Германии.
Оказалось, что для получения лицензии частного детектива нужно пройти специальные курсы, сдать экзамен и доказать свою надежность. Никакого специального образования не требовалось. Главное – логическое мышление, внимательность и умение работать с людьми.
– Логическое мышление у меня есть, – пробормотал Томас, поглаживая кактус. – Внимательность тоже. А вот с людьми.
Он вспомнил свою последнюю попытку завести отношения. Сабина, дизайнер из соседнего отдела, встречалась с ним три месяца. Их расставание произошло после того, как Томас попытался оптимизировать их график свиданий с помощью Excel-таблицы.
– "Ты относишься ко мне как к базе данных", – сказала она тогда. – "Романтика – это не алгоритм, Томас!"
Может быть, она была права. Но может быть, проблема заключалась в том, что он применял неправильные алгоритмы.
На следующий день Томас записался на онлайн-курс "Основы частного сыска" от Берлинской академии детективных наук. Название звучало солидно, хотя вся "академия" оказалась одним человеком по имени Ганс Крюгер, бывшим полицейским на пенсии, который вел занятия из своей квартиры через Zoom.
– Первое правило детективной работы, – объявил Крюгер на первом занятии, его лысая голова блестела в свете веб-камеры, – наблюдать и анализировать. Второе правило – никому не доверять полностью. Третье – всегда иметь план Б.
Томас усердно записывал все в блокнот, применяя ту же методичность, с которой раньше документировал код.
– Кто-нибудь из вас имел дело с компьютерами? – спросил Крюгер.
Томас поднял руку.
– Отлично! Современный детектив без компьютерной грамотности – как слепой в лабиринте. Интернет, социальные сети, цифровые следы – все это важные инструменты.
После недели занятий Томас почувствовал себя увереннее. Он изучил основы наблюдения, методы сбора информации, правовые аспекты частного сыска. Оказалось, что многие принципы программирования применимы и в детективной работе: разбить большую задачу на маленькие, систематически проверять каждую гипотезу, документировать все процессы.
– Кажется, у меня получается, – сказал он кактусу, рассматривая свой первый сертификат частного детектива.
Кактус, как всегда, молчал, но Томасу показалось, что его колючки направлены вверх в знак одобрения.
Теперь оставалось самое сложное – найти первого клиента.
Томас решил устроить свой "офис" в том же кафе "Zur Alten Eiche", где встретил фрау Кляйн. Это было логично: публичное место, Wi-Fi, кофе и потенциальные клиенты. Он купил небольшую табличку "Частный детектив Томас Мюллер" и поставил ее на свой обычный столик в углу.
Владелец кафе, пожилой турок Мехмет, отнесся к этой идее с пониманием.
– Пока покупаешь кофе и не мешаешь другим клиентам, можешь хоть президентом себя назвать, – сказал он, протирая барную стойку.
Первый день прошел без единого клиента. Второй тоже. На третий день Томас уже начал сомневаться в своей идее, когда в кафе вошла знакомая фигура.
– Фрау Кляйн! – обрадовался он.
Пожилая женщина подошла к его столику и внимательно изучила табличку.
– Так вы действительно стали детективом?
– Можно сказать и так. Правда, клиентов пока нет.
– А вот и неправда, – улыбнулась фрау Кляйн и села напротив. – У меня есть дело для вас.
Сердце Томаса учащенно забилось. Первое дело! Может быть, это будет убийство? Или кража драгоценностей? Шантаж с компроматом?
– Пропал мой кот, – сказала фрау Кляйн.
– Кот? – переспросил Томас, пытаясь скрыть разочарование.
– Да, кот. Зовут Шрёдингер. Рыжий, пушистый, очень умный. Исчез три дня назад. Полиция говорит, что не занимается поиском домашних животных, а частные агентства просят слишком много денег.
Томас открыл новый документ на ноутбуке и начал печатать.
– Расскажите подробнее. Когда вы видели Шрёдингера в последний раз?
– Во вторник утром. Он вышел во двор, как обычно, но домой не вернулся. Это странно – он никогда не уходил далеко от дома.
– Опишите его поведение в последние дни. Что-то необычное?
Фрау Кляйн задумалась.
– Теперь, когда вы спрашиваете Да, он стал более беспокойным. Часто сидел у окна, наблюдал за чем-то на улице. И еще он перестал есть свой любимый корм.
Томас быстро печатал, создавая структурированный отчет. В голове уже формировался алгоритм поиска.
– Какова ваша оценка вероятности того, что кот ушел сам?
– Простите?
– То есть думаете ли вы, что он мог уйти по собственному желанию?
Фрау Кляйн рассмеялась.
– Молодой человек, вы говорите о коте, как о программе с искусственным интеллектом.
– Извините, профессиональная деформация. Я имею в виду: мог ли он найти другой дом, другую семью?
– Исключено. Шрёдингер очень привязан ко мне. Мы вместе уже пять лет.
Томас сохранил файл под названием "Дело №1: Кот Шрёдингер" и посмотрел на клиентку.
– Хорошо. Я берусь за это дело. Мой гонорар – пятьдесят евро в день плюс расходы.
– Договорились, – кивнула фрау Кляйн и протянула ему фотографию кота. – Это Шрёдингер.
На фотографии был действительно красивый рыжий кот с умными зелеными глазами и пушистым хвостом.
– Я найду его, – пообещал Томас.
После ухода фрау Кляйн он остался один со своим первым делом. Поиск пропавшего кота – это же по сути задача оптимизации. Нужно определить наиболее вероятные локации, составить план поиска и систематически проверить каждую гипотезу.
Томас открыл Google Maps и начал изучать окрестности дома фрау Кляйн в районе Пренцлауэр-Берг. Старые пятиэтажки, множество дворов, парк в двух кварталах. Классическая среда обитания городских котов.
Он составил список возможных причин исчезновения:
1. Кот заблудился.
2. Кот застрял где-то (подвал, чердак, дерево).
3. Кота забрал кто-то посторонний.
4. Кот пострадал от несчастного случая.
5. Кот нашел другой дом.
Каждую гипотезу нужно было проверить методично, как отлаживают код – строчка за строчкой.
На следующее утро Томас отправился в Пренцлауэр-Берг с распечатанными листовками, на которых была фотография Шрёдингера и его контактные данные. Он расклеил их на столбах, в подъездах, на досках объявлений в магазинах.
Дом фрау Кляйн оказался типичным берлинским альтбау – красивым старым зданием с высокими потолками и множеством укромных уголков во дворе. Томас методично обошел все возможные места, где мог спрятаться или застрять кот: подвалы, чердаки, технические помещения.
– Шрёдингер! – звал он, чувствуя себя немного глупо.
Никакого ответа.
Он опросил соседей. Большинство помнили рыжего кота, но никто не видел его в последние дни. Пожилой мужчина из соседнего дома сказал, что видел странную женщину во дворе во вторник утром – она кормила бездомных котов.
– Может, ваш котик к ней пристал? – предположил он.
Томас записал эту информацию. Новая гипотеза: кот ушел за едой и заблудился.
Он провел остаток дня, обходя соседние дворы и расспрашивая жителей. К вечеру у него была подробная карта территории с отмеченными местами возможного нахождения кота, список свидетелей и растущее понимание того, что настоящая детективная работа – это в основном ходьба и разговоры с людьми.
В кафе "Zur Alten Eiche" его ждал сюрприз. За его обычным столиком сидел молодой мужчина в дорогом костюме, нервно теребящий телефон.
– Вы Томас Мюллер? Частный детектив? – спросил он, когда Томас подошел.
– Да, это я.
– Лукас Вагнер. Мне нужна помощь. У меня проблемы с деньгами. То есть не у меня, а с моими деньгами. Они исчезают.
Томас сел напротив и достал ноутбук.
– Расскажите подробнее.
Лукас был владельцем небольшого стартапа, разрабатывающего мобильное приложение для доставки еды. Компания только начала приносить прибыль, но в последний месяц со счетов стали пропадать деньги.
– Сначала небольшие суммы – по двести, триста евро. Я думал, ошибки в системе. Но на прошлой неделе исчезло пять тысяч евро.
– Обращались в банк?
– Конечно. Они говорят, что все операции проводились с правильными паролями и цифровыми подписями. Технически кражи нет.
Томас заинтересовался. Это уже было больше похоже на настоящее дело.
– У кого есть доступ к корпоративным счетам?
– У меня, у финансового директора Клауса и у моего партнера Стефана.
– Мне нужно будет изучить финансовые операции. Можете предоставить доступ к банковским выписками?
– Да, без проблем. Только найдите, кто крадет мои деньги.
После разговора с Лукасом Томас понял, что теперь у него два дела. Пропавший кот и исчезающие деньги. Он чувствовал себя настоящим детективом.
Поздно вечером, сидя дома перед компьютером, он анализировал банковские выписки Лукаса. Паттерн операций был интересным: деньги снимались небольшими суммами, всегда в разное время, всегда с разных карт. Но было что-то знакомое в этой схеме.
– Кажется, кто-то пытается замаскировать кражу под естественные расходы, – сказал он кактусу. – Но делает это по алгоритму.
Кактус молчал, но Томас был уверен, что тот его понимает.
Завтра будет интересный день. Нужно продолжить поиск Шрёдингера и глубже вникнуть в финансовые проблемы Лукаса. Жизнь частного детектива оказалась намного сложнее, чем показывали в фильмах, но определенно интереснее программирования.
Томас сохранил все файлы, выключил компьютер и лег спать, мечтая о том, что завтра он, возможно, раскроет свое первое настоящее дело.
За окном шумел ночной Берлин, полный тайн и загадок, которые ждали своего детектива.
Глава 2: Лицензия на глупость.
На следующее утро Томас проснулся с ощущением, что его жизнь наконец-то обрела смысл. Впервые за много лет он не тянул с подъемом, не проклинал будильник и не мечтал остаться в постели еще на пять минут. У него было два дела, два клиента и растущая уверенность в том, что программистская логика может творить чудеса в реальном мире.
Он заварил кофе в своей любимой кружке – той самой, с надписью "World's Okayest Programmer", – и открыл ноутбук. Время приступить к работе.
– Доброе утро, коллега, – обратился он к кактусу. – Сегодня мы раскрываем наши первые дела.
План дня выглядел логично:
1. Продолжить поиск кота Шрёдингер.
2. Углубиться в анализ финансовых операций Лукаса.
3. Составить профили подозреваемых.
4. Найти связь между фактами.
Томас открыл карту Берлина и отметил все места, где вчера искал кота. Сегодня нужно расширить радиус поиска. Он составил маршрут, оптимизированный по времени и расстоянию – в духе алгоритмов доставки.
Первая остановка – ветеринарная клиника доктора Шульца в двух кварталах от дома фрау Кляйн. Если кот пострадал, его могли туда принести.
– Рыжего кота? – переспросила администратор, молодая девушка с множеством пирсинга. – Да, приносили во вторник вечером. Но это был не ваш котик.
– Откуда вы знаете?
– А у вашего есть микрочип?
Томас растерялся. О микрочипах он как-то не подумал.
– Не знаю. А как это проверить?
– Нужно привести кота и просканировать. Но если вы не знаете про чип, значит, его точно нет. Ответственные хозяева всегда в курсе.
Томас почувствовал укол совести. Может быть, он недооценил сложность отношений между людьми и их питомцами. Для фрау Кляйн Шрёдингер был не просто животным – он был членом семьи.
– А того рыжего кота, которого приносили, вы не запомнили?
– Конечно помню. У него была травма лапы, но оказался ничей. Мы передали его в приют.
– Можно адрес приюта?
Приют для бездомных животных "Tierheim Berlin" находился в получасе езды на метро. Томас решил проверить эту версию, хотя интуитивно понимал: если бы Шрёдингер попал в приют, его микрочип быстро выдал бы принадлежность фрау Кляйн.
В приюте ему показали того самого рыжего кота – худого, напуганного, с забинтованной лапой. Определенно не тот ухоженный красавец с фотографии.
– Жалко, – вздохнул Томас. – А часто к вам попадают домашние коты?
– Сплошь и рядом, – ответила сотрудница приюта Марта, пожилая женщина с добрыми глазами. – Особенно после переездов, ремонтов, стрессовых ситуаций. Коты – консерваторы, они не любят перемены.
– А что обычно с ними происходит?
– По-разному. Иногда находят дорогу домой через несколько дней. Иногда приживаются в новом месте. А иногда – она грустно покачала головой.
Томас записал все в свой блокнот. Консерватизм котов, стресс от перемен. Было ли что-то стрессовое в жизни фрау Кляйн в последнее время?
Следующая остановка – дом фрау Кляйн. Нужно было задать более детальные вопросы.
Фрау Кляйн встретила его с надеждой в глазах.
– Есть новости о Шрёдингере?
– Пока нет, но я работаю над несколькими версиями. Можно задать вам еще несколько вопросов?
– Конечно, проходите.
Квартира фрау Кляйн была уютной и немного старомодной. Везде стояли фотографии – семья, друзья, и множество снимков рыжего кота в разных ракурсах и возрастах.
– Происходило ли что-то необычное в вашей жизни в последние недели? Ремонт, гости, изменения в распорядке дня?
Фрау Кляйн задумалась.
– Ничего особенного Хотя, подождите. Три недели назад умер мой сосед герр Мюллер. Очень печальная история. Шрёдингер его любил – тот всегда угощал его колбаской.
– А что случилось с квартирой соседа?
– Наследники продали ее быстро. Новые жильцы въехали на прошлой неделе. Молодая пара с ребенком.
Томас записал эту информацию. Изменения в привычной среде, смерть знакомого человека, новые соседи – для консервативного кота это мог быть серьезный стресс.
– А эти новые соседи вы с ними общались?
– Только поздоровались. Они кажутся милыми. У них маленький мальчик, лет пяти.
– Можно с ними поговорить?
– Конечно. Квартира 12, этажом выше.
Томас поднялся наверх и позвонил в дверь. Открыла молодая женщина с ребенком на руках.
– Гутен таг. Меня зовут Томас Мюллер, я частный детектив. Расследую исчезновение кота из соседней квартиры.
Женщина – представилась Анной Хоффман – пригласила его войти. Квартира была завалена коробками, повсюду валялись детские игрушки.
– Рыжий кот? – переспросила она. – А, да! Лукас его видел!
– Лукас?
– Мой сын. Лукас, иди сюда!
Появился мальчик лет пяти с любопытными глазами.
– Лукас, помнишь рыжего котика, которого ты видел во дворе?
Мальчик кивнул.
– Он приходил к нашему окну! Каждый день! А потом я дал ему молочка.
Томас почувствовал, как в голове загорается лампочка – почти как в IDE, когда находишь решение сложной задачи.
– А что было потом?
– Потом котик ушел с тетей.
– С какой тетей?
– С тетей в синем платье. Она сказала, что котик потерялся, и взяла его.
Анна нахмурилась.
– Лукас, ты мне об этом не рассказывал.
– А ты не спрашивала, – пожал плечами мальчик с неопровержимой детской логикой.
– Когда это было? – спросил Томас.
– Вчера. Или позавчера. Не помню.
– А тетю ты раньше видел?
– Нет. Но она была добрая. Сказала, что отнесет котика домой.
Томас записывал каждое слово. Итак, кота взяла незнакомая женщина в синем платье. Остается выяснить, кто это и зачем она это сделала.
– Можете описать эту женщину? – обратился он к Анне.
– Я ее не видела. Была на работе.
– А соседи? Кто-то мог ее заметить?
– Можно спросить у фрау Петрова из первой квартиры. Она всегда дома и наблюдает за двором.
Фрау Петрова оказалась именно такой, как описала Анна – пожилой женщиной, которая проводила большую часть времени у окна, наблюдая за жизнью двора.
– Женщина в синем платье? – переспросила она. – Да, видела. Странная была.
– В каком смысле странная?
– Ну, она же явно кота крала! Подошла, взяла и ушла. Как будто это нормально.
– А почему вы не вмешались?
– А кто знает, может, это ее кот? Мало ли что бывает.
Томас вздохнул. Свидетели – это не логи системы, которые точно фиксируют каждое действие. Люди видят одно, интерпретируют по-другому, а запоминают третье.
– Можете описать эту женщину?
– Среднего роста, средних лет. Темные волосы. Синее платье, как я уже сказала. Ничего особенного.
– А в какую сторону она ушла?
– К автобусной остановке.
Томас поблагодарил всех свидетелей и вернулся к фрау Кляйн.
– У меня есть зацепка, – сообщил он. – Вашего кота взяла незнакомая женщина. Возможно, она подумала, что он бездомный.
– Но как ее найти?
– Работаю над этим. А пока расклейте объявления в районе автобусной остановки. С просьбой вернуть кота и указанием вознаграждения.
После разговора с фрау Кляйн Томас отправился в кафе "Zur Alten Eiche" анализировать финансовые операции Лукаса. Второе дело требовало совсем другого подхода – не физического поиска, а работы с данными.
Он разложил банковские выписки на столе и открыл Excel. Каждая подозрительная операция была занесена в таблицу с указанием даты, времени, суммы и типа транзакции.
Паттерн стал очевиден после построения графика: суммы списывались в определенные дни недели, преимущественно во второй половине дня. Это не случайные кражи – это системная деятельность.
– Интересно, – пробормотал Томас. – Кто-то работает по расписанию.
Он создал сводную таблицу по дням недели и времени операций. Большинство списаний происходило во вторник и четверг между 15:00 и 17:00. В это время в офисе Лукаса обычно находились все трое: сам Лукас, финансовый директор Клаус и партнер Стефан.
Нужно было больше информации о каждом из них.
Томас открыл LinkedIn и начал изучать профили.
Глава 3: Алгоритм поиска кота.
Томас открыл LinkedIn и начал изучать профили подозреваемых. Лукас Вагнер – двадцать восемь лет, выпускник Технического университета Берлина, предприниматель с амбициями и относительно чистой онлайн-репутацией. Клаус Беккер – тридцать пять лет, финансист с опытом работы в крупных корпорациях, выглядел солидно и консервативно. Стефан Майер – ровесник Лукаса, соучредитель компании, судя по фотографиям, любитель дорогих машин и ночной жизни.
– Интересно, – пробормотал Томас, делая заметки. – У каждого есть мотив и возможности.
Его размышления прервал знакомый голос:
– Молодой человек, как дела с поиском моего кота?
Фрау Кляйн подошла к его столику с выражением надежды и беспокойства на лице.
– Работаю над этим, – ответил Томас, быстро закрывая банковские документы. – У меня есть важная зацепка.
– Какая?
– Вашего Шрёдингера взяла женщина в синем платье. Возможно, она подумала, что он бездомный.
Фрау Кляйн села напротив, на ее лице отразилась смесь облегчения и новой тревоги.
– Значит, он жив?
– Очень вероятно. Но теперь нужно найти эту женщину.
– А как?
Томас задумался. В программировании для поиска элемента в большом массиве данных используются различные алгоритмы. Можно применить тот же принцип к поиску человека в городе.
– Мне нужно создать систему поиска, – сказал он вслух, больше себе, чем клиентке. – Определить наиболее вероятные локации, проанализировать поведенческие паттерны.
– Простите? – переспросила фрау Кляйн.
– Извините, думаю вслух. Скажите, где в вашем районе обычно собираются любители кошек?
– Ну в парке есть группа женщин, которые кормят бездомных животных. Еще есть ветеринарная клиника, зоомагазин.
Томас быстро записывал, составляя список возможных мест.
– А женщина в синем платье – местная жительница или приезжая?
– Откуда мне знать?
– Хороший вопрос. Если местная, то наверняка кто-то ее знает. Если приезжая, то зачем ей брать чужого кота?
Фрау Кляйн растерянно молчала.
– Не волнуйтесь, – успокоил ее Томас. – У меня есть план.
После ухода клиентки он открыл новый документ и начал создавать то, что назвал "Алгоритмом поиска кота Шрёдингера". На первый взгляд это выглядело абсурдно – применять методы программирования к поиску домашнего животного – но логика подсказывала, что система должна работать.
– Объект поиска: рыжий кот, кличка Шрёдингер.
– Последнее местонахождение: двор дома фрау Кляйн.
– Время исчезновения: вторник, утром.
– Субъект, взявший кота: женщина в синем платье, средних лет.
– Направление движения: к автобусной остановке.
– Женщина взяла кота, считая его бездомным.
– Это говорит о заботливости к животным.
– Вероятно, у нее уже есть домашние животные.
– Или она активист по защите прав животных.
– Радиус поиска: 5 км от автобусной остановки.
– Приоритетные зоны: ветклиники, зоомагазины, приюты.
– Вторичные зоны: парки, районы с развитой инфраструктурой для животных.
Томас распечатал карту района и начал отмечать все релевантные точки. Получилась сетка из примерно тридцати локаций, которые нужно проверить.
– Методичность – наше все, – пробормотал он, складывая карту.
Первая остановка – зоомагазин "Alles für Tiere" в двух кварталах от автобусной остановки. Молодой продавец с множеством татуировок внимательно изучил фотографию Шрёдингера.
– Нет, такого не видел. Но подождите – Он вдруг оживился. – А вы случайно не ищете женщину в синем платье?
Сердце Томаса подпрыгнуло.
– Да! Вы ее знаете?
– Она приходила сюда два дня назад. Покупала корм для кота и переноску. Сказала, что подобрала бездомного котика.
– Можете ее описать?
– Лет сорока, темные волосы собраны в хвост. Очень переживала за кота. Спрашивала, какой корм лучше для стрессовых ситуаций.
– Она местная?
– Не думаю. Расплачивалась картой из другого банка. И еще спрашивала дорогу к ветеринару.
– К какому?
– К доктору Штайнеру на Кастаниналлее.
Томас почувствовал азарт охотника. След становился горячее.
Клиника доктора Штайнера была небольшой, но современной. Администратор, полная женщина средних лет, сразу узнала описание.
– Ах да, фрау как же ее звали Мария, кажется. Приводила рыжего кота на осмотр.
– И что с котом?
– Доктор сказал, что он здоров, но сильно стрессовал. Порекомендовал несколько дней покоя и хороший корм.
– А где она живет?
– К сожалению, такую информацию мы не можем предоставить. Врачебная тайна.
Томас попытался еще несколько подходов, но администратор была непреклонна. Тогда он решил применить более творческий подход.
– Хорошо. А можете передать ей сообщение от владельца кота? Он очень переживает.
– Конечно.
Томас написал записку: "Уважаемая фрау Мария! Шрёдингер – не бездомный кот, у него есть любящая хозяйка фрау Кляйн. Она очень переживает за него. Если у вас есть возможность, пожалуйста, свяжитесь со мной. Томас Мюллер, частный детектив." И оставил свой номер телефона.
– Передайте, пожалуйста, когда она придет.
– Обязательно.
На обратном пути в кафе телефон зазвонил. Неизвестный номер.
– Алло? Это Томас Мюллер?
– Да.
– Это Мария Шмидт. Мне передали вашу записку – Голос женщины звучал встревоженно. – Этот кот действительно не бездомный?
– Нет, у него есть хозяйка. Она его очень любит и ищет уже четыре дня.
Пауза.
– Боже мой Я думала, он потерялся. Он выглядел таким голодным и напуганным.
– Где вы сейчас? Можем встретиться?
– Я я живу в Кройцберге. Кот у меня дома.
– Отлично. Можете привезти его к ветеринару, где мы и встретимся?
– Хорошо. Буду через час.
Томас тут же позвонил фрау Кляйн.
– Я нашел Шрёдингера! Он здоров и скоро будет дома.
На другом конце провода раздался радостный всхлип.
– Правда? Где он был?
– Расскажу при встрече. Приезжайте к клинике доктора Штайнера на Кастаниналлее.
Встреча в ветклинике напоминала сцену из мелодрамы. Мария Шмидт оказалась именно такой, как ее описывали – женщиной средних лет в том самом синем платье, с добрыми, но виноватыми глазами. Шрёдингер сидел в переноске и жалобно мяукал.
– Простите меня, пожалуйста, – сказала Мария, передавая переноску фрау Кляйн. – Я действительно думала, что он бездомный. Он сидел во дворе, выглядел потерянным.
– Все в порядке, – успокоила ее фрау Кляйн, доставая кота из переноски. – Главное, что он цел.
Шрёдингер мурлыкал и терся о руки хозяйки.
– Как вы его нашли? – спросила Мария у Томаса.
– Применил программистский подход к поиску. Составил алгоритм, проанализировал вероятности, проследил маршрут.
– Как в компьютерной игре?
– Скорее как отладка программы. Нужно проверить каждую строчку кода, пока не найдешь ошибку.
Фрау Кляйн расплатилась с Томасом – пятьдесят евро за два дня работы плюс расходы – и еще раз поблагодарила. Мария извинялась и обещала впредь быть внимательнее с чужими животными.
– Мой первый раскрытый случай, – довольно сказал Томас кактусу, вернувшись домой. – Алгоритмический подход работает и в реальном мире.
Но радоваться было рано. На столе лежали банковские документы Лукаса, и второе дело требовало внимания.
Томас снова сел за анализ финансовых операций. Паттерн стал еще более очевидным после дополнительных данных, которые прислал Лукас. Кто-то систематически снимал деньги, используя корпоративные карты, но делал это умно – небольшими суммами, в разное время, создавая видимость случайных трат.
Он построил график активности по дням недели и часам. Получилась интересная картина: большинство операций приходилось на время, когда в офисе находились все трое подозреваемых, но некоторые транзакции происходили поздно вечером или рано утром.
– Кто-то работает сверхурочно, – пробормотал Томас.
Он создал отдельную таблицу для операций вне рабочего времени. Их было немного, но они показывали интересный паттерн: кто-то регулярно использовал корпоративную карту в одном и том же месте – заправочной станции рядом с офисом.
Томас открыл Google Maps и изучил расположение заправки. Оттуда было два основных маршрута – один к дому Лукаса, другой к дому Стефана. Клаус жил в противоположном направлении.
– Интересно, – пробормотал он. – Либо Лукас тратит деньги собственной компании, либо Стефан.
Нужно было больше информации о личной жизни обоих подозреваемых. Томас снова обратился к социальным сетям.
Профиль Лукаса в Instagram показывал умеренный образ жизни – редкие фотографии с друзьями, несколько снимков с корпоративных мероприятий, ничего кричащего о больших тратах.
Стефан был полной противоположностью. Его лента пестрела фотографиями дорогих ресторанов, ночных клубов, новой BMW, отпуска в Швейцарии. Для совладельца стартапа, который только начал приносить прибыль, образ жизни выглядел слишком роскошным.
– Либо у него есть другие источники дохода, либо он тратит деньги компании, – рассуждал Томас.
Он составил план проверки. Завтра нужно поехать на ту самую заправку и поговорить с персоналом. Возможно, они помнят постоянного клиента с корпоративной картой.
Вечером Томас решил прогуляться по Берлину, чтобы очистить голову после насыщенного дня. Поиск кота оказался проще, чем ожидалось – простая логистическая задача с четкими параметрами поиска. А вот финансовое расследование требовало более тонкого подхода.
Он шел по Унтер-ден-Линден, наблюдая за вечерней суетой города. Туристы фотографировались у Бранденбургских ворот, офисные работники спешили домой, уличные музыканты играли для редких прохожих.
У одного из музыкантов – молодого парня с гитарой – собралась небольшая толпа. Он играл что-то мелодичное и грустное, а в открытом футляре лежали монеты и несколько банкнот.
Томас остановился послушать. Музыка помогала думать.
– Хорошо играете, – сказал он, бросив в футляр пару евро.
– Спасибо. – Музыкант был примерно его ровесником, с добрыми глазами и небрежно заплетенными дредами. – Вы выглядите задумчивым.
– Сложный день на работе.
– А кем работаете?
– Частный детектив.
Музыкант засмеялся.
– Серьезно? Как в фильмах?
– Скорее как в IT, только вместо багов ищу людей и разгадываю их мотивы.
– Звучит интересно. Меня, кстати, Олаф зовут.
– Томас.
Они разговорились. Олаф оказался философом по образованию, который выбрал жизнь уличного музыканта как форму свободы от корпоративного мира. Он много наблюдал за людьми и удивительно точно их понимал.
– Знаете, в чем ваша проблема? – сказал Олаф после того, как Томас рассказал ему о финансовом расследовании. – Вы ищете логику там, где ее может не быть.
– То есть?
– Люди не всегда действуют рационально. Иногда они крадут не из-за денег, а из-за обиды, ревности, желания доказать что-то себе или другим.
Томас задумался. В программировании все подчиняется логике – каждая команда выполняется в строгом порядке. Но человеческое поведение может быть непредсказуемым.
– А как понять мотив, если логика не помогает?
– Поговорить с людьми. Настоящий разговор, не допрос. Узнать, что их волнует, чего они боятся, о чем мечтают.
– Звучит сложно.
– Все сложно, пока не научишься. Как игра на гитаре.
Томас поблагодарил Олафа за беседу и отправился домой. Слова уличного музыканта заставили его пересмотреть подход к расследованию. Может быть, стоит меньше времени тратить на анализ данных и больше – на общение с людьми.
Дома он еще раз просмотрел материалы дела. Завтра планировал встретиться с каждым из подозреваемых не как детектив, а как заинтересованный консультант. Посмотреть на их реакции, послушать, как они говорят о деньгах и компании.
– Человеческий фактор, – пробормотал он кактусу. – Самая сложная переменная в любом уравнении.
Кактус молчал, но Томасу показалось, что его колючки наклонены одобрительно.
За окном шумел вечерний Берлин, полный тайн и загадок. Но теперь Томас знал: любую загадку можно решить, если правильно подойти к ее анализу. Нужно только понять, что иногда самые абсурдные методы приводят к самым точным результатам.
Первое дело было раскрыто, второе в процессе. Жизнь частного детектива оказалась интереснее, чем он мог представить.
Глава 4: Баг в матрице.
Томас проснулся с ощущением, что его мозг всю ночь продолжал работать над финансовым делом Лукаса. Во сне он видел бесконечные таблицы Excel, которые трансформировались в лабиринты из цифр, а в центре лабиринта сидел кот Шрёдингер и подмигивал ему, словно знал ответ на все вопросы.
– Доброе утро, коллега, – обратился он к кактусу, наливая кофе. – Сегодня ловим финансового вора.
План дня был четким:
1. Поехать на заправку, где совершались подозрительные операции.
2. Встретиться с каждым подозреваемым отдельно.
3. Провести более глубокий анализ финансовых данных.
4. Найти связь между фактами.
Заправочная станция "Shell" на Фридрихштрассе работала круглосуточно. Томас приехал туда к восьми утра, когда начиналась смена персонала. Утренний кассир, молодая девушка по имени Петра, оказалась на удивление наблюдательной.
– Корпоративная карта "FoodDelivery Solutions"? – переспросила она, изучив распечатку операций. – Конечно помню! Этот клиент приезжает регулярно.
– Можете его описать?
– Молодой парень, лет тридцати. Всегда на BMW, серебристой. Обычно заправляется поздно вечером или рано утром. Покупает премиальный бензин и всегда берет кофе и сэндвич.
– А как часто он приезжает?
– Раза два в неделю. Иногда чаще. Очень вежливый, всегда оставляет чаевые.
Томас показал ей фотографии Лукаса и Стефана из соцсетей.
– Вот он! – Петра сразу указала на Стефана. – Точно помню эту улыбку.
Первая зацепка. Стефан регулярно заправляется за счет компании, причем делает это в нерабочее время. Либо у него есть на это право, либо он скрывает эти траты от партнера.
– А вы случайно не помните, платил ли он за бензин для других машин?
– Как это?
– Ну, заправлял не только свою BMW, но и другие автомобили.
Петра задумалась.
– Вы знаете да! Пару раз он приезжал с девушкой на красном Mini Cooper. Заправлял обе машины одной картой.
Интересно. Томас записал эту информацию. Стефан не только тратит корпоративные деньги на себя, но и на свою девушку.
Следующая остановка – офис "FoodDelivery Solutions" в районе Митте. Лукас встретил его с надеждой.
– Есть новости?
– Работаю над этим. Мне нужно поговорить с вашими партнерами. Можете организовать встречи?
– Конечно. Клаус сейчас в офисе, Стефан приедет после обеда.
Офис стартапа располагался в бывшем промышленном здании, переделанном под IT-центр. Открытое пространство, стеклянные перегородки, несколько рабочих мест с мониторами – типичная атмосфера молодой технологической компании.
Клаус Беккер работал за угловым столом, окруженный распечатками финансовых отчетов. Мужчина выглядел усталым и напряженным.
– Вы частный детектив? – удивился он, когда Лукас представил Томаса. – Серьезно? Я думал, такие остались только в кино.
– Современные детективы больше работают с данными, чем с увеличительными стеклами, – улыбнулся Томас. – Можно задать вам несколько вопросов о финансах компании?
– Конечно, но я не понимаю, зачем нужен детектив. Обычная ошибка в банковских операциях.
– Лукас считает, что деньги исчезают слишком системно для обычной ошибки.
Клаус пожал плечами.
– Могу показать все документы. У нас полная прозрачность.
Следующие полчаса Томас изучал документооборот компании. Клаус действительно ведел учет очень аккуратно – каждая операция документирована, каждый расход обоснован. Но именно эта педантичность заставила Томаса насторожиться.
– А кто имеет доступ к корпоративным картам? – спросил он.
– Официально – все трое. Но я использую только одну, для офисных расходов. Лукас – свою, для деловых встреч. Стефан – свою, для – Клаус замялся.
– Для чего?
– Ну, Стефан отвечает за PR и маркетинг. Иногда нужно развлекать потенциальных инвесторов, клиентов.
– Понятно. А вы знаете, что он заправляется за счет компании почти каждый день?
Лицо Клауса изменилось.
– Каждый день? Но это же сколько это стоит?
Томас показал ему распечатку операций на заправке.
– За последний месяц около восьмисот евро только на бензин.
– Восемьсот евро? – Клаус побледнел. – Но наш бюджет на транспортные расходы всего триста евро в месяц!
– Получается, Стефан превышает бюджет без согласования?
– Если эти цифры верны, то да.
Томас увидел, как в глазах Клауса появляется подозрение. Финансовый директор явно не знал о масштабах трат своего коллеги.
– А в ресторанах и клубах он тоже бывает за счет компании?
Клаус молча кивнул, изучая документы.
– Боже мой Вот откуда берутся наши убытки.
После разговора с Клаусом Томас решил прогуляться по городу, чтобы обдумать полученную информацию. Картина становилась яснее: Стефан систематически тратит корпоративные деньги на личные нужды, а Клаус и Лукас об этом не знают.
Но что-то в этой схеме казалось слишком простым. Неужели совладелец компании настолько наивен, что думает, будто его траты останутся незамеченными? Или он рассчитывает на что-то еще?
Размышления прервал телефонный звонок. Незнакомый номер.
– Томас Мюллер слушает.
– Здравствуйте! Это Анна Хоффман, мы вчера встречались по поводу кота. Помните?
– Конечно. Что-то случилось?
– Нет, все хорошо. Просто мой сын все время спрашивает про детектива. Можно встретиться? Он хочет узнать, как работают настоящие сыщики.
Томас улыбнулся. Детское любопытство было именно тем, что ему сейчас не хватало в работе.
– Конечно. Я как раз неподалеку от вас.
Они встретились в том же кафе "Zur Alten Eiche", где теперь находился неофициальный офис Томаса. Маленький Лукас Хоффман смотрел на него широко раскрытыми глазами.
– А вы настоящий детектив? – спросил мальчик.
– Настоящий.
– А у вас есть пистолет?
– Нет, – засмеялся Томас. – Я использую более мощное оружие.
– Какое?
– Логику.
Мальчик выглядел разочарованным.
– А как ловить преступников без пистолета?
– Смотри, – Томас открыл ноутбук. – Допустим, кто-то крадет деньги из банка. Как думаешь, что важнее – бегать за вором с пистолетом или понять, как он совершает кражи?
– Понять как, – неуверенно ответил мальчик.
– Правильно! Если ты понимаешь, как работает вор, ты можешь его поймать. А если просто бегаешь с пистолетом, он убежит и будет красть дальше.
Анна внимательно слушала их разговор.
– А у вас сейчас есть дело? – спросила она.
– Да. Кто-то крадет деньги из компании.
– И вы уже знаете кто?
– Подозреваю. Но нужны доказательства.
– А как их найти?
Томас задумался. Хороший вопрос. В программировании ты можешь поставить точку останова и посмотреть, что происходит с данными в каждый момент времени. Но в реальной жизни такой возможности нет.
– Нужно создать ситуацию, в которой вор проявит себя, – сказал он.
– Как ловушку?
– Именно.
После встречи с Анной и маленьким Лукасом Томас вернулся в офис "FoodDelivery Solutions". Стефан уже был на месте – высокий блондин в дорогой рубашке, с идеальной улыбкой и уверенными манерами.
– Вы детектив? – удивился он, пожимая руку Томасу. – Круто! Как в «Шерлоке»!
– Скорее как в IT-поддержке, – ответил Томас. – Ищу баги в системе.
– А какие баги у нас могут быть? – засмеялся Стефан.
– Финансовые. Деньги исчезают, и никто не знает почему.
– Ах да, Лукас упоминал. Наверное, проблемы с банковской системой. У меня недавно карта глючила.
Томас внимательно наблюдал за реакцией Стефана. Никаких признаков нервозности, полная открытость. Либо он действительно ни при чем, либо очень хорошо умеет скрывать эмоции.
– А можете рассказать о ваших тратах за последний месяц?
– Конечно! У меня все честно. Деловые встречи, презентации, иногда нужно инвесторов в ресторан сводить.
– А заправки каждый день?
– Ну да, я много езжу. Встречи с клиентами, поставщиками.
– На BMW?
– Конечно. Имидж важен в нашем бизнесе.
– А красный Mini Cooper – тоже для деловых встреч?
Впервые за разговор Стефан замялся.
– Простите?
– Вы заправляли красный Mini Cooper корпоративной картой. Это тоже деловые расходы?
– А это – Стефан потер затылок. – Это машина моей девушки. Иногда мы ездим на встречи вместе.
– Понятно. А она работает в компании?
– Нет, но ну, вы же понимаете.
Томас кивнул, делая заметки. Первая трещина в безупречном фасаде.
– А в каких ресторанах проходят ваши деловые встречи?
– По-разному. "Berliner Republik", "Hackescher Hof"
Томас узнал названия – это дорогие заведения в центре Берлина.
– И с кем встречались, например, на прошлой неделе?
– Эм С представителем инвестиционного фонда. Хансом Хансом Мюллером.
– Можете дать его контакты? Для подтверждения расходов.
– Конечно, но у меня их сейчас нет под рукой. Пришлю позже.
Томас был почти уверен, что никаких контактов он не получит. Ганс Мюллер – слишком распространенное имя, чтобы быть правдой.
После разговора со Стефаном он остался в офисе еще на час, анализируя полученную информацию. Картина становилась яснее:
1. Стефан систематически тратит корпоративные деньги на личные нужды.
2. Он пытается выдать это за деловые расходы.
3. Клаус и Лукас не контролируют его траты.
4. Стефан не ожидал, что кто-то будет детально анализировать финансы.
Но все еще оставался главный вопрос: почему Стефан думал, что это сойдет ему с рук?
Вечером Томас сидел дома, составляя подробный отчет по делу. На столе лежали распечатки банковских операций, фотографии чеков, записи разговоров со свидетелями. Все указывало на вину Стефана, но что-то не давало покоя.
– В чем проблема? – спросил он кактуса.
Кактус молчал, но Томас вдруг понял, что именно его беспокоило. Слишком просто. Слишком очевидно. Как будто кто-то хотел, чтобы подозрения пали именно на Стефана.
Он снова открыл банковские выписки и начал анализировать их с другой стороны. А что, если кто-то использует карту Стефана без его ведома? Что, если настоящий вор намеренно создает след, ведущий к партнеру?
Томас построил новый график – не по времени операций, а по их типу. Получилась интересная картина: крупные траты в ресторанах и заправки действительно могли быть работой Стефана. Но мелкие регулярные списания, те самые, с которых все началось, имели другой характер.
Они были слишком маленькими, слишком регулярными, слишком незаметными. Как будто кто-то тестировал систему, проверял, заметит ли кто-нибудь исчезновение небольших сумм.
– Два разных паттерна, – пробормотал Томас. – Два разных вора.
Он открыл календарь и сопоставил даты мелких списаний с рабочим графиком офиса. Большинство операций происходило в те дни, когда в офисе находился только один человек – Клаус.
Томас почувствовал, как в голове загорается лампочка. Клаус. Педантичный, аккуратный Клаус, который ведет безупречную отчетность и возмущается тратами коллег. А что, если именно эта безупречность – прикрытие?
Он вспомнил реакцию Клауса на информацию о тратах Стефана. Слишком театрально. Слишком эмоционально для человека, который должен был знать о всех финансовых операциях компании.
– Классическая схема, – сказал Томас кактусу. – Отвлечь внимание от себя, переключив его на коллегу.
Но это была только теория. Нужны были доказательства.
Томас создал новую таблицу, отделив крупные траты Стефана от мелких систематических списаний. Паттерн стал очевиден: мелкие кражи происходили только в присутствии Клауса, а крупные траты – только когда в офисе был Стефан.
– Два преступления, два преступника, – пробормотал он.
Стефан действительно тратил корпоративные деньги на личные нужды, но в рамках своих полномочий совладельца. Неэтично, но не криминально.
А Клаус совершал настоящие кражи – небольшие, но систематические. И когда Лукас начал подозревать неладное, Клаус решил переключить внимание на более очевидного подозреваемого.
Теперь оставалось это доказать.
Томас подумал о словах уличного музыканта Олафа: иногда люди действуют не из логических побуждений, а из эмоциональных. Что могло заставить респектабельного финансиста красть у собственной компании?
Он снова изучил профиль Клауса в социальных сетях. Ничего подозрительного – редкие фотографии, консервативные посты, никаких признаков роскошной жизни.
Но может быть, дело не в роскоши?
Томас решил покопаться глубже. Поиск по имени и фамилии в новостных сводках дал неожиданный результат: три месяца назад Клаус Беккер подавал заявление о разводе. Развод часто означает раздел имущества, алименты, юридические расходы.
– Вот оно, – прошептал Томас.
Он нашел несколько публичных документов судебного процесса. Жена Клауса требовала алименты в размере 2000 евро в месяц плюс половину совместно нажитого имущества. Для человека с зарплатой финансового директора стартапа это были серьезные деньги.
Мотив найден. Клаус крал небольшие суммы, чтобы покрыть расходы на развод, а когда кражи стали заметны, решил подставить Стефана.
Но доказать это будет непросто. Нужна была ловушка.
Томас вспомнил совет маленького Лукаса Хоффмана: создать ситуацию, в которой вор проявит себя.
Он открыл новый документ и начал составлять план операции под кодовым названием "Отладка системы".
За окном наступила ночь, но Томас продолжал работать. Завтра предстояло поймать не одного, а двух воров. И сделать это нужно было так, чтобы никто не смог отрицать очевидное.
– Завтра будет интересный день, – сказал он кактусу.
Глава 5: Человеческий фактор.
Томас проснулся с ощущением, что его план "Отладка системы" может сработать, но для этого нужно действовать очень осторожно. В программировании одна неточность может обрушить всю систему, а в детективной работе одна ошибка может предупредить преступников и лишить его всех доказательств.
За завтраком он еще раз проработал детали плана. Нужно было заставить и Стефана, и Клауса проявить себя в контролируемых условиях, чтобы получить неопровержимые доказательства их вины.
– Сегодня ловим сразу двух рыбок, – сказал он кактусу, допивая кофе.
Первым делом Томас позвонил Лукасу.
– Мне нужна ваша помощь, – сказал он. – Я почти раскрыл дело, но для окончательных доказательств нужно провести небольшую операцию.
– Какую операцию?
– Нужно создать ситуацию, которая заставит воров действовать. Можете сегодня около полудня объявить в офисе, что завтра на счет компании поступит крупная сумма от инвестора? Скажите, что это временный платеж, который нужно будет вернуть через неделю.
– А зачем?
– Если кто-то систематически крадет деньги, он не сможет устоять перед возможностью взять крупную сумму. Особенно если думает, что это временно и никто не заметит.
– Но что, если он действительно украдет деньги?
– Денег на счету не будет. Это просто объявление. Но реакция покажет нам, кто именно планирует кражу.
Лукас согласился, хотя и с некоторыми сомнениями. Томас понимал его беспокойство – доверить судьбу своего бизнеса частному детективу, который еще неделю назад был безработным программистом, требовало немалой веры.
После разговора с клиентом Томас отправился в офис "FoodDelivery Solutions". Ему нужно было подготовить техническую часть ловушки.
– Можете дать мне доступ к системе видеонаблюдения? – спросил он у Лукаса.
– У нас есть только одна камера в общем зале. Качество не очень хорошее.
– Этого достаточно. А доступ к серверу?
– К какому серверу?
– К тому, где хранятся логи доступа к корпоративным системам. Каждый раз, когда кто-то заходит в банковский кабинет компании, это записывается.
Лукас выглядел удивленным.
– Я не знал, что у нас есть такие логи.
– Они есть всегда, просто обычно на них не обращают внимания. В IT это называется аудитом безопасности.
Томас провел следующие два часа, изучая логи доступа к корпоративным системам. Картина подтверждала его подозрения: Клаус регулярно заходил в банковский кабинет в нерабочее время, особенно по вечерам, когда офис был пуст.
В половине двенадцатого Лукас объявил своим партнерам "хорошую новость":
– Ребята, у меня отличные новости! Фонд "Berlin Ventures" решил инвестировать в нас сто тысяч евро. Правда, это пока временный платеж – они хотят посмотреть на нашу работу в течение недели, а потом уже оформить все официально. Деньги поступят завтра утром.
Томас внимательно наблюдал за реакцией. Стефан выглядел искренне радостным – улыбался, поздравлял партнера, строил планы развития компании. А вот Клаус отреагировал более сдержанно. Он задавал много вопросов: на какой именно счет поступят деньги, кто будет иметь к ним доступ, как долго они пробудут на счету.
– Это стандартная процедура, – объяснял Лукас. – Деньги поступят на основной корпоративный счет, доступ у всех троих, как обычно. Главное – не трогать их без согласования, это же инвестиционные деньги.
Клаус кивал, но Томас заметил, как тот нервно теребит ручку и избегает прямого взгляда.
После объявления Томас остался в офисе под предлогом завершения расследования. Он установил дополнительное программное обеспечение для мониторинга доступа к банковским системам и настроил уведомления на свой телефон.
– Теперь остается только ждать, – пробормотал он.
Ждать пришлось недолго. Уже в семь вечера, когда офис опустел, на телефон Томаса пришло уведомление: кто-то зашел в банковскую систему компании.
Томас тихо поднялся по лестнице к офису. Свет горел только в одном помещении – там, где обычно работал Клаус.
Через стеклянную перегородку было видно, как финансовый директор сидит за компьютером и изучает банковские счета. На экране была открыта страница с корпоративными картами.
Томас включил камеру телефона и начал записывать. Клаус открыл страницу управления картами, выбрал одну из них и начал что-то вводить. По всей видимости, он пытался настроить автоматический перевод или изменить лимиты.
Этого было достаточно для доказательства попытки несанкционированного доступа к корпоративным финансам.
Томас тихо постучал в дверь офиса.
– Клаус? Вы здесь?
Финансовый директор вздрогнул и быстро закрыл все окна браузера.
– Томас! Вы меня напугали. Я думал, все уже ушли домой.
– Задерживаюсь, дорабатываю отчет. А вы что делаете так поздно?
– Готовлю документы для завтрашнего поступления инвестиций. Нужно все проверить, чтобы не было проблем.
– Понятно. А что именно проверяете?
– Ну лимиты карт, настройки безопасности.
– Клаус, – тихо сказал Томас, – мне нужно с вами поговорить.
– О чем?
– О том, что никаких инвестиций завтра не будет. Это была проверка.
Лицо Клауса побледнело.
– Какая проверка?
– Я знаю про мелкие кражи. Знаю про ваш развод и алименты. И знаю, что вы планировали украсть часть мнимых инвестиций, а потом свалить вину на Стефана.
Клаус молчал несколько секунд, потом тяжело опустился в кресло.
– Откуда вы знаете?
– Банковские логи не врут. Каждый ваш вход в систему записан. Каждая операция имеет цифровой след.
– Но я же не украл крупные суммы! Только небольшие.
– Кража есть кража, независимо от размера суммы.
Клаус закрыл лицо руками.
– Вы не понимаете Развод разорил меня. Алименты, юристы, раздел имущества Я не мог справиться с зарплатой стартапа.
– А почему не попросили у партнеров аванс или помощь?
– Как я мог? Лукас доверил мне финансы компании, а я – Голос Клауса дрогнул. – Я думал, что смогу вернуть все, когда дела пойдут лучше.
Томас сел напротив.
– Клаус, вы понимаете, что пытались подставить Стефана? Переключить на него подозрения?
– Стефан и так тратит корпоративные деньги на себя! Я просто хотел, чтобы все обратили внимание на это.
– Но Стефан – совладелец компании. Он имеет право на представительские расходы. А вы – наемный работник, который крадет у собственного работодателя.
Клаус молчал, осознавая весь масштаб своих действий.
– Что теперь будет? – тихо спросил он.
– Это решать Лукасу. Но сначала вам нужно рассказать ему все самому. Честно и полностью.
На следующее утро в офисе "FoodDelivery Solutions" состоялся самый тяжелый разговор в истории компании. Томас представил свои доказательства, Клаус признался во всем, а Лукас попытался понять, как его доверенное лицо могло его предать.
– Я не понимаю, – говорил Лукас, расхаживая по офису. – Мы же друзья! Мы вместе начинали этот бизнес! Почему ты не обратился ко мне за помощью?
– Я стеснялся, – тихо ответил Клаус. – Ты доверил мне финансы, а я не мог справиться даже со своими личными проблемами.
– Но ведь кража – это не решение! Ты же понимал, что рано или поздно все выяснится?
– Я думал я надеялся, что смогу все исправить до того, как кто-то заметит.
Стефан, который до этого молчал, вдруг заговорил:
– А что со мной? Получается, Клаус хотел свалить на меня вину за свои кражи?
– Не совсем так, – вмешался Томас. – Клаус действительно пытался переключить внимание на ваши траты, но ваши траты – это отдельная проблема.
– Какая проблема? Я трачу деньги компании на развитие бизнеса!
– Стефан, – терпеливо объяснил Томас, – вы потратили за месяц больше двух тысяч евро на личные нужды. Заправки для машины девушки, дорогие рестораны без деловой цели, развлечения Это не развитие бизнеса.
– Но я же совладелец!
– Совладелец не означает, что можно тратить деньги компании как личные. У любого бизнеса должны быть правила и ограничения.
Лукас посмотрел на своих партнеров – одного, который его обворовывал, и другого, который злоупотреблял доверием – и понял, что его представления о дружбе и бизнесе оказались слишком наивными.
– Что нам теперь делать? – спросил он у Томаса.
– Это ваше решение. Юридически Клаус совершил кражу, но сумма небольшая, и он готов все вернуть. Стефан злоупотреблял полномочиями, но формально не нарушал закон.
– А что бы вы сделали на моем месте?
Томас задумался. В программировании, когда система дает сбой, можно откатиться к предыдущей версии или исправить баги и продолжить работу. Но человеческие отношения не имеют функции "отката".
– Я бы попытался понять, почему это произошло, – сказал он. – Клаус воровал не из жадности, а от отчаяния. Стефан тратил лишнее не из злого умысла, а от безответственности. Оба совершили ошибки, но не из желания навредить вам лично.
– И что это меняет?
– То, что ошибки можно исправить, если есть желание. Как в программировании – важно не наличие багов, а готовность их исправлять.