Выбрать главу

Он на секунду задумался и продолжил:

— Ещё я бы сразу разделил статусы. ' Принято сервером' — это одно. «Доставлено на устройство » — совсем другое. А если когда-нибудь захочешь, можно добавить и «прочитано ». Тогда и пользователи не будут путаться, и протокол потом не придётся переделывать.

Я молча слушал.

— Только очередь нельзя хранить бесконечно. Нужен срок жизни сообщений, ограничение на размер очереди и нормальная индексация. Иначе, когда пользователей станет много, база превратится в бутылочное горлышко. Лучше сразу заложить архитектуру с запасом, чем потом латать её на ходу.

Я откинулся на спинку кресла и посмотрел на него уже совсем другим взглядом. Заинтригованно.,. Не заученные ответы с собеседований. Он действительно видел систему целиком.

Вот оно. Человек отвечает на вопрос профессионально и тут же видит подводные камни, говорит уточнения. Для эпохи, где половина «программистов » умела только Windows переставлять за тысячу рублей, это дорогого стоило.

Мы просидели ещё час. Я подкидывал задачки, он их разгрызал. Лишь изредка буксовал, но честно говорил «тут не знаю, надо разбираться, не за пять секунд », и это подкупало сильнее любого хвастовства. К концу разговора я уже решил.

— Оклад… — я назвал сумму, и Павел моргнул.

Цифра была ощутимо выше того, что ему платили в его серой дыре. И выше рынка для такой должности процентов на пятнадцать-двадцать. Я это делал сознательно, как всегда в вопросе финансового подхода к своим сотрудникам. Неизменно. В той жизни, в этой — в любой бы так делал. И на должности министра труда тоже бы следовал этой позиции в своих решениях. Дешёвый сотрудник обходится дороже. Скупой платит дважды. Хороший спец за нормальные деньги окупается многократно, а сэкономленная на зарплате копейка потом вылезает боком, потерянными клиентами, бессонными ночами, потерей деловой репутации, стрессами, дополнительными походами по больницам — анализы, медикаменты.

— Это… серьёзно? — уточнил он.

— Абсолютно серьёзно, Павел. Но и спрос будет серьёзный. Мессенджер теперь во многом на тебе. Техническая часть, частично концептуальная. Я задаю направление, ты его тянешь и предлагаешь своё. Живая работа с мозгами, где твоё мнение весит. Дресс-кода у нас нет — носи хоть свои красные кеды, хоть сланцы, хоть в шортах и «гавайке» гоняй. Главное, чтобы делал свою работу должным образом. По рукам?

Он согласился! По глазам было видно — деньгами тут дело не исчерпывалось. Впервые за долгое время кто-то отнёсся к нему как к специалисту, разглядел за ним мозги, и это грело его сильнее любой цифры в договоре. Я эту породу знаю. Такие за нормальное отношение горы свернут.

— И важное условие — подписание договора о неразглашении.

— Да, конечно… Я прекрасно понимаю это.

— Всё. Выходишь в понедельник, — сказал я, пожимая ему руку. — И, Паш. У нас в конторе правило простое. Уважение к своим коллегам и к клиентам. Работаем головой, глотку бережём. Никто на тебя орать не будет, но и ты держи планку.

Он кивнул, и я понял, что не ошибся.

В понедельник Павел вышел, и я лично устроил ему место. Хороший стол у окна, свежий системник, два монитора — роскошь для две тысячи шестого, но человеку, который целыми днями пялится в код, второй экран экономит уйму нервов. Кит показал ему «кухню », познакомил с ребятами. Лена оформила бумаги, завела карточку, провела экскурсию ; объяснила, где чай, где микроволновка, куда бежать, если приспичит.

Я наблюдал за новичком краем глаза. Первые полдня он держался напряжённо, поглядывал по сторонам, будто ждал подвоха. Оно и понятно — на прошлой работе его, видать, гоняли так, что человек разучился спокойно дышать. Но к обеду вроде как отпустило. Кто-то из парней позвал его в столовку через дорогу, вернулись они уже переговариваясь об игре GTA да о процессорах, и Павел заметно оттаял, начал осваиваться в новой роли, в новой компании.

К вечеру я подсел к нему, глянул, что он там делает. Парень уже успел разобраться в структуре проекта, раскопал основные модули мессенджера, поднял локальную сборку и теперь сидел над сетевой частью. На листке рядом лежали несколько коротких заметок.

— Почему здесь сокет держится открытым постоянно? Почему не переподключаться при простое? А авторизация почему отдельно от установки соединения?

Хорошие вопросы. Не из серии «что делает эта функция», а про архитектуру. Я объяснил, почему в своё время принял именно такие решения, он молча кивнул и что-то дописал в блокнот.