Возвращаюсь в комнату и с головой погружаюсь в поиски исходного кода программы. Перерываю весь интернет, все закоулки даркнета. И, к своему удивлению, таки нахожу заветные файлы! Похоже, утечка произошла стараниями одного из незадачливых интеграторов.
Но тут же возникает другая проблема — а на чём, собственно, кодить? Нет у меня с собой никакого компа. Конечно, можно смотаться в магазин, приглядеть что-нибудь. Но это сколько времени уйдет — выбрать, купить, настроить. Так и выходной пройдёт.
Взгляд падает на чехол от ноутбука, небрежно торчащий из сумки Ли Миньюэ. Недолго думая, строчу ей сообщение в WeChat, и вскоре получаю добро на использование девайса.
Годится. Подключаюсь к вайфаю общаги, скачиваю исходники CRM-ки, открываю. Передо мной разворачивается полотно из сотен строк кода. Посмотрим.
Работу прерывает звонок телефона, на экран номер Ли Джинг.
— Лян Вэй, твое присутствие на сегодняшнем показе критически необходимо, — голос стилиста звучит нервно и суетливо. — Только скажи сразу — сможешь или искать кого-нибудь другого?
— Смогу.
С одной стороны, выходной накрывается медным тазом. С другой, работа равно деньги, а мне ещё скорее всего комп покупать.
— Замечательно! — облегченно выдыхает Ли Джинг. — Жду тебя в шесть вечера. Не опаздывай!
Бросаю взгляд на часы, в запасе десять часов. Вновь погружаюсь в код.
— Вот ты где… — бормочу, находя нужный фрагмент, отвечающий за обработку клиентских данных.
Внимательно изучаю функцию. Неэффективная работа с базой, куча повторяющихся запросов, жуткие костыли в самом коде. Тут работы на добрый месяц, не меньше.
У китайцев и индусов зачастую очень «грязный» код. Простую команду, которую девелопер из наших краёв записывает в одну строчку, они растягивают на двадцать — формально заказчик получает рабочую программу, но позже выясняется, что она глючная и неэффективная.
Тянусь за кофе и решаю начать с малого — с улучшения интерфейса.
Пара часов пролетает незаметно. Удалось изменить внешний вид приложения, получается даже сделать его более интуитивно понятным. Упростил главную панель управления: вместо большого количества мелких кнопок разместил несколько крупных, отвечающих за ключевые функции.
Не без внимания остались формы для ввода данных — настроено автозаполнение, чтоб ускорить процесс.
Напоследок тщательно прохожусь по всем формам, проверяю логику полей, улучшаю контрастность цветов. Глаз должен радоваться, а не слезиться от кислотных расцветок при любом освещении. Мелочь, а приятно.
Тестируя обновленную CRM-ку, замечаю странную штуку. Каждые несколько минут система втихаря сливает какие-то данные на левые сервера, не имеющие к функционалу никакого отношения. Причем инфа чувствительная: списки клиентов, время их брони, финансовые показатели.
Нехило. Голословно обвинять кого-то рано, но интересные мысли уже возникли. Надо глубже покопаться. Даже интересно, сколько ещё сюрпризов обнаружу.
Раздаётся стук в дверь. Открываю, чтоб столкнуться лицом к лицу с Ли Миньюэ и администратором.
— Лян Вэй, бегом за мной! — командует Чэнь.
— Куда? Зачем?
— Ты же хотел навести неформальные мосты? Вот для неформала сейчас самое время.
— Ты про управляющего? — быстро соображаю. — Ты что договорилась? Так быстро?
Она кивает.
— Спасибо большое.
Перевожу взгляд на ноут. Кроме изменённого интерфейса, мне и продемонстрировать ему пока что нечего. Хотя очень нужно.
— Можно, возьму для презентации? — обращаюсь к Ли Миньюэ, кивая на лэптоп.
— Бери, — пожимает плечами она.
— Господин Минь наведывается от силы раз в неделю, — уже в лифте поясняет Айлинь. — Лучшего момента, чем сегодня, боюсь, долго не будет — он редко бывает в хорошем настроении. Считай, тебе повезло: бухгалтерия такое пропихнула, у меня волосы дыбом встали. Иди рассказывай.
С ноутом подмышкой захожу в ресторан. Айлинь тычет пальцем в угол зала, где за столиком восседает мужик в пиджаке.
— Здравствуйте, господин Минь. Вам про меня рассказывала Чэнь Айлинь, я с предложением касательного улучшения вашего CRM.
Не отрываясь от бумаг, управляющий молча кивает и жестом предлагает присесть:
— Цель беседы?
— Небольшая самопрезентация, — признаюсь честно. — Потом — вопрос, возможно, переходящий в предложение.
Пристраиваю ноут на краю стола, разворачиваю экраном:
— Я переделал интерфейс. — По глазам вижу, собеседник предупреждён о моей работе с программой. — Теперь ключевые функции собраны на одной странице, без лишних иконок и сложных меню, — показываю обновленную главную панель. — Также, добавлены автозаполнение и всплывающие подсказки. Сотрудники будут меньше тыкаться, больше делать. На этот рефакторинг у меня ушло часов шесть от силы. — Если он в теме смыслит, должен оценить.
Минь Бо смотрит на экран, временами кивая:
— Ещё?
— Есть нюанс — шифровка, я бы над ней хорошо поработал. Прежний кодер не уделил особого внимания безопасности данных. Чревато.
— Соглашусь, внешняя оболочка выглядит лучше оригинала. В чём суть предложения?
— Я исправил лишь малую часть ошибок, самое лёгкое и быстрое. Задача была — при минимуме времени и сил произвести на вас максимальное впечатление. К сожалению, кроме производственной части здорово влияет ваше настроение: вы здесь и бываете нечасто, и подходить к вам, говорят, нужно вовремя.
— Это не предложение, а прелюдия. К чему?
— Будь у меня больше времени, я бы смог сделать больше. Не знаю, насколько она вам актуальна, но программа может работать значительно плавнее, без тормозов и глюков.
— Допустим. Ты же понимаешь, что сейчас должен меня чем-то заинтересовать? Чем-то более существенным, чем то, что продемонстрировал? Да, приятно, когда твои сотрудники умны и неравнодушны, но ты сейчас отнимаешь моё время, а я пока не вижу, зачем это мне, — он по-свойски перегибается через стол. — Говоря цинично, удобство сотрудников меня волнует не в первой строке приоритетов.
— Позвольте взглянуть на договор с разработчиком. Он же не секрет?
— Что ты там рассчитываешь обнаружить?
— Не хотел бы заранее.
— Я здесь ещё четверть часа, попроси администратора. — Собеседник явно утрачивает интерес к разговору, впрочем, жестом просит Айлинь заняться мной.
— Посмотрел? Нашёл что-нибудь интересное? — управляющий явно думает о чём-то своём и неформальный стиль изображает исключительно из вежливости.
— Есть вопрос, переходящий в предложение. Я могу сделать то же самое, что прописано в договоре в целях и задачах, но в три с половиной раза дешевле.
— Для нас расход — сущий пустяк. Бюджет позволяет. Перескакивать с кого-то на тебя — это большой риск. Оно мне надо? Предложение неинтересное, копеечная выгода за огромный риск.
— Дело не только в деньгах, но и в качестве. Сейчас ваша CRM-ка имеет целое множество дыр, которые разработчик не особо спешит исправить.
Достаю из кармана исписанный лист.
— Вот примерный список уязвимостей, вот риски. Не моё дело, но…
— Риски? Ты о чем?
— Хотя бы об этом, — тычу пальцем в одну из строчек. — Личные данные клиентов утекают. Куда и зачем — пока не ясно, но вашей компании оно и неинтересно. Если это нормально — просто скажите, не буду лезть не в своё дело.
Минь Бо надолго замолкает. По лицу вижу — задумался всерьез.
Наконец кивает:
— Это неформально обозначалось на старте и тогда мы были не против. Тебе кто-то помогал советом?
— Нет. Просто добросовестно поколупался сам. Так вы знали об этом?
— Скажем, раньше у нас было меньше возражений, без подробностей… Ты удачно попал, — менеджер поднимает глаза. — Не буду в деталях, это был совместный пилотный проект. Возможно, сейчас время чуть разойтись краями.
— Внимательно слежу за ходом вашей мысли.
— Для нашей сети деньги и даже риски — мелочь, — он щёлкает ногтем по экрану. — Но за тебя просила Айлинь, а у меня к ней своё отношение. Поэтому я готов исключительно ради неё посмотреть на результат твоей работы, но не сходу и не в воду.
Интересно. Представить чужую и более качественную работу как нечто, нужное самому работнику — это надо уметь.
Впрочем, наверное, в бизнесе другие и не выживают.
— Давай так, в течении месяца программа будет обслуживаться прежним разработчиком и тобой. Параллельно. Я установлю на свой компьютер две версии, буду сравнивать. М-м-м?
— Согласен, — принимаю предложение.
— Особенно буду признателен, если победишь проблему с подвисаниями, — продолжает управляющий. — Сервис не самый нагруженный, а виснет как не в себя. Прежние кодеры ничего с этим поделать не могут.
— Скорее, не хотят. Там надо рефакторить на корню, таким обычно никто не любит заниматься.
— Ну, тебе видней, — пожимает плечами босс. — Я в этом ничего не смыслю. Дерзай, кредит доверия выдан.
Вернувшись в комнату, кладу чужой ноутбук на стол и начинаю собираться в модельное агентство. Мыслями нахожусь в коде — предвкушаю, как засяду за рефакторинг кривой поделки. Первое время придется попотеть, столько всего предстоит переписать, оптимизировать, причесать. Зато когда разгребу завалы, работы станет в разы меньше.
Путь к стратегическому успеху и большим деньгам начинается с маленьких шагов.
Предварительный план стандартен — нужно опережать прежних кодеров по всем фронтам. Сдавать работу раньше дедлайна процентов на двадцать, перевыполнять по функционалу где-то на столько же. Главное — не гнаться за количеством, а делать упор на качество.
Судя по тому, что я вижу перед собой, именно этот акцент должен быть моей фишкой и конкурентным преимуществом.
Перед показом ношусь, надевая на девушек украшения. В какой-то момент ловлю себя на мысли, что делаю всё на автомате, пока в голове прокручиваю университетский параграф. Пальцы привычно застегивают замки, надевают серьги с цепочками, пока мозг занят совсем другим.
Подходя к стенду со шкатулками, благодарю всех богов за собственную аккуратность — у меня есть привычка проверять номенклатуры сразу по приходу в агентство.
Если мне не изменяет память, синяя коробочка стояла не здесь. Я специально расставлял в идеальном порядке — удобно для работы.
Странно. Кроме меня украшения никто не трогает…
Открываю шкатулку — мои догадки подтверждаются. Во-первых, изделие не то (цепь с крупными звеньями вместо обычной золотой цепочки), во-вторых, судя по коэффициенту светоотражения, (его ещё называют цветом), это вообще латунь.
Металлургия сегодня находится на таком уровне, что золото в той же пятьсот восемьдесят пятой пробе может быть какого угодно оттенка — лигатуры позволяют. Хоть белое, под платину. Получая изделия, я всегда запоминаю, что мне выдали, привычка — здесь свет не бьётся.
Чёрт. Как такое вообще возможно? Я же проверял, даже десяти минут не прошло. И до показа всего ничего, надо срочно что-то решать.
Я не ожидал, что на этой работе за собственной нужно приглядывать.
— Внимание, одну секунду! — сначала громко объявляю по-китайски, затем повторяю по-английски. — Кто-то взял золотую цепочку вот отсюда, — поднимаю вверх коробок. — Это сделано явно не для того, чтобы помочь мне с работой.
Воцаряется тишина. Девочки, включая персонал, уставились на меня, округлив глаза. Кто-то нервно теребит подол платья, кто-то судорожно поправляет идеальную укладку.
Только рыжеволосая Кэрол как ни в чём не бывало сидит на стуле у зеркала и вроде как ожидает развития событий.
Шанс в этой ситуации — только поймать на живца, надавить на нервы. Не думаю, что кто-то решился украсть насовсем, всё же, не тот коллектив. А вот взять на время, чтобы сорвать выход сопернице — более чем вероятно в конкретным коллективе.
— Я не знаю, кто взял вещь, за которую отвечаю я! Но тот, кто это сделал, точнее, та, должна понимать последствия своих действий, — продолжаю, фиксируя мимику каждой из присутствующих. — Я за себя буду бороться, с хозяйкой агентства у меня свои отношения. Я не думаю, что в итоге проиграю, даже если придется оплатить пропажу из своего кармана. Семь минут назадвсё было на месте, так что пропажа — дело рук кого-то присутствующих.
Кэрол с абсолютно невыразительным лицом ставит свой неизменный бокал на столик, поднимается с места и цокает шпильками, приближаясь ко мне:
— Семь минут, говоришь? Те, кто сейчас здесь, всё время стояли в очереди на показ, — она указывает на выход на подиум. — Ещё парочка сидела с визажистами, я своими глазами видела. Это и это. За последние именно семь минут сюда входили трое, учитывая персонал. Эта пришла в стрингах, в них же и ушла, не думаю, что спрятала в задницу, — рыжая с серьёзным видом тычет пальцем в одной из девиц.
Одна из моделей переводит на китайский, чтоб понимали остальные.
— Другие две? — уточняю, стараясь не отвлекаться на нарастающее перешёптывание.
— Эта вторая. Она вошла, спросила что-то у парикмахера и сразу же вышла, — ещё один вытянутый палец. — Наедине с твоими коробками не оставалось, взять не могла. Но вот она торчала здесь дольше всех и крутилась именно возле твоей стойки, — неожиданная союзница указывает на европейскую модель.
Все взгляды в комнате скрещиваются на девушке.
— Лян Вэй, у тебя не только с Ли Джинг свои отношения, — неожиданно врезается Бай Лу в разговор, который прямо её не касается. — Если пропажу повесят на тебя, я вписываюсь. За деньги не переживай, твоя вчерашняя услуга стоила большего. Лично я по финансам перекашляю.
— Она взяла, — американка равнодушно указывает на блондинку.
— Вы будете верить этой алкоголичке⁈ — не выдерживает европейка. — Она постоянно под мухой! Что можно разглядеть в таком состоянии⁈ Эй ты!.. — обвиняемая с лицом, не предвещающим ничего доброго, решительно направляется сюда.
В этот момент разбитная кубинка с отсутствующим лицом делает шаг и плавным движением переворачивает чужую миниатюрную сумочку. Затем встряхивает, чтобы внутри ничего не осталось.
На пол летят какие-то причиндалы, латиноамериканка с интересом смотрит на водопад из предметов.
— Эй, ты что творишь⁈ А ну верни, тварь! Не имеешь права! — девушка, на которую указала Кэрол, пытается выхватить аксессуар, но не преуспевает.
Кубинка делает пару сложных танцевальных пар, уворачивается от чужих пальцев, не даёт схватить сумку и окончательно опустошает её на пол.
Кэрол, подошедшая ко мне вплотную, без затей опирается локтем на плечо.
Сервисный персонал нервно переглядывается и хватается за головы — до показа считанные минуты, а тут такой скандал!
Кубинка продолжает «танцевать»: распластывается на мгновение на одной ноге над полом, отбрасывает чужую сумку и среди косметики, документов, смятых купюр и прочей дамской мелочевки подхватывает блестящий золотом предмет — злополучная цепочка, точнее, точнее, претензия на колье.
Нетонкое, но ажурное плетение, россыпь мелких бриллиантов (так называемая крошка по одному миллиметру) — пропажа нашлась
Приняв изделие, благодарно кивнув, тут же убираю в шкатулку, а когда поворачиваюсь, латиноамериканка с целеустремленным лицом от отвешивает блондинке звонкую оплеуху.
Голова европейки дёргается, сама она отлетает на шаг.
— Скажи спасибо, что я, а не он, — поясняет кубинка коллеге. — Я не мужик, у меня удар послабее. В этом мире можно что угодно, но не воровать у своих.
Несмотря на яркий драматизм случившегося, остаток вечера приходится работать с провинившейся моделью в прежнем режиме, будто ничего не случилось. Работа есть работа. Из-за такого пустяка нельзя срывать показ — на кону слишком многое. Отпечаток пощечины визажисты мастерски маскируют тональным кремом, щедро припудривая; девица тоже ведёт себя, будто ничего не случилось. Хорошо иметь крепкие нервы.
Уже после показа, скидывая с себя наряды и переодеваясь в обычную одежду, Кэрол окликает меня:
— Вэй… Лянь…короче. Планы на вечер какие?
— Ничего конкретного, а что?
— Мы по барам, хочешь с нами? — предлагает американка. — Приглашаю лично, от своего имени.
— С кем? — уточняю. — Кто ещё будет?
— Я, Viva la Revolution и Бай Лу, — перечисляет опять нетрезвая к концу показа рыжая. — Может, ещё кого-нибудь захватим. Но это не точно. Хочешь?
— Конечно. — Было бы глупо отказаться. — Только не злоупотребляй, а то наш босс не одобрит. — Последнее вырывается на автомате.
Хотя-я, если человек любит алкоголь, ещё не одна мораль не помогла ему разлюбить. Особенно от такого как я.
— Плевать, что она там одобрит, а что нет, — равнодушно отмахивается Кэрол, ловко выскакивая из узкой юбки и оставаясь в, к-хм, ну пусть будет белье, которое особо ничего не прикрывает. — Мы тоже имеем право на отдых! Да, знаю, что я — алкоголик, — говорит она другим тоном и тихо, пока переодевается. — Но скоро возьмусь за проблему и быстро исправлюсь.
— Как?
— Пойду к врачу, выполню предписания. Не парься, если вдруг реально переживаешь: у меня и у маман зависимость была, и у бабки. С хорошим наркологом бросить реально, — по секрету сообщают мне на ухо.
В общагу возвращаясь только к двум ночи. Дверь стараюсь открывать тихо, чтобы не разбудить Ли Миньюэ.
Войдя в комнату, вижу её силуэт у окна. Гостья на ногах, несмотря на поздний час, её плечи подрагивают. При звуке моих шагов она мажет рукавом по лицу и шмыгает носом, не оборачиваясь.
Впадая в неожиданный раздрай, иду к ней, при этом замечаю на краю кровати чужой телефон — лежит экраном вверх. На дисплее какие-то красные рожи, все диалоги на корейском и я ничего не понимаю.
— Что случилось?
Ли Миньюэ разворачивается, хватает меня за плечи и сопит в темя, поскольку ростом тело предшественника не вышло, в отличие от неё:
— Проблемы в Корее.
— Какие? Если секрет — не говори, пойму.
— Обычно о таком не кричу (хнык)… я всегда считала, что я — обеспеченная невеста (хнык), а сейчас (шмыг носом)…
— Что сейчас?
Она переводит взгляд на телефон:
— Я не знаю, нищая я уже или еще нет. Это если коротко и почти откровенно. Но то, что должно было обеспечить будущее вплоть до моих внуков — и почему я всегда считала себя богатой — в данный момент на глазах аккуратно превращается в!.. — подруга начальницы осекается. — Пока не могу понять, во что, отсюда не видно. Какой-то кошмар наяву!.. Ещё и долбанный рейс задержали! Лян Вэй, я не знаю, что мне делать, извини, сегодня без массажа. Не до того…