будни

Похвастаюсь классным клиентом.

Сервис upmarket размещает товары производителей на интернет-рынках вроде озона и вайлдберрис. Ребята делают полный цикл, от написания карточек товаров и работы с отзывами до логистики.

Звучит довольно просто, но оборот у парней больше полумиллиарда рублей в год.

Нас позвали по двум причинам: 1) придумать, как автоматизировать те вещи, которые сложно поручить машине из-за слабого API торговых площадок и как сделать из «самодельных скриптов» надежную и масштабируемую систему; 2) вторая причина даже интереснее — мы соберем команду разработки, которая будет развивать IT в бизнесе после нашего ухода.

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

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

Дальше мы эти данные будем выгружать клиентам в виде интерактивных отчетов и даже позволим машине самой принимать решения на их основе — например, менять цены.

Сейчас сделаем ещё пару задач сами, а дальше наймем классных программистов и выстроим внутреннюю команду разработки.

Обращайтесь @samatg, мы берем ещё клиентов.

Пентест — это «испытание на проникновение», когда вы платите хакерам деньги и они пытаются вас взломать.

Технически вы можете быть бронебойны, но «социалка» —социальная инженерия, то, через что взломали твиттер, почти всегда срабатывает.

Эта оплошность твиттера — отличный повод заказать внешний аудит информационной безопасности, если вы этого давно не делали.

Я заказываю такие аудиты у Омара Ганиева. Кстати, один из первых эпизодов нашего подкаста был как раз про безопасность, с Омаром и с Каримом Валиевым, руководителем безопасности mail.ru; — хороший повод послушать классных русских хакеров.

Я отсмотрел 5000 фотографий профилей в Pure за 3 часа и нашёл среди них несколько пенисов и вульв.

Важное различие магазинов мобильных приложений Apple AppStore и Google Play в том, что каждое обновление всех приложений в AppStore проходит ручную проверку модераторами Apple. Правила достаточно подробные и написаны понятным языком, но при этом напирают на здравый смысл, а не на следование букве текста. Например, про порно они раньше приводили знаменитую цитату судьи конституционного суда США «узнаю, когда увижу» (сейчас цитируют определение из словаря). При этом то, к чему придерется один модератор, может пропустить другой. Гуглу всё фиолетово.

Новую версию нашего приложения недавно задержали в ревью AppStore из-за голого тела в ленте, так что держать ленту чистой от органов — важная задача.

Книжная цензура в царской России и СССР была в режиме премодерации, цензоры читали каждую книгу до печати; Роскомнадзор работает по схеме постмодерации, блокирует уже публичный контент. У нас гибридная модель: при загрузке фото его рассматривает наш алгоритм и при необходимости сервис машинного зрения Amazon Rekognition. Если они не находят голого тела, то картинка становится публичной и её с большой вероятностью посмотрит наш модератор и может удалить постфактум.

Наши модераторы работают в стандартной джанго-админке, из-за чего часть фотографий оставалась непросмотренной. Я провел в ней три часа. За эти три часа я успел просмотреть 5 тысяч фоток и хорошенько обдумать, что главное в новой админке — возможность одним кликом отмечать плохие фотки и мгновенно переходить к следующей пачке фотографий для просмотра. Очевидно хочется, чтобы все дубликаты однажды забаненной фотки банились автоматически. Главная метрика качества системы — сколько времени голая фотка провисит в ленте до удаления (хочется как можно меньше).

Наткнулся после этого экспириенса на разговор Марка Цукерберга и техдира фейсбука и удивился, что они там говорят про то же самое «улучшение детекта дубликатов в модерации». Правда у них другая большая проблема — всякая рачлененка и прочая жесть, от просмотра которой полный рабочий день 30 тысячам модераторов фейсбука очень плохо, а некоторые даже кончают жизнь самоубийством. Для борьбы с этим они собираются машинно блюрить части «жестких» картинок или переводить их в чб, чтобы смысл оставался понятен, а урон психике модераторов был поменьше. Слава богу у нас такого нет.

Очень интересно, как устроена система модерации во Вконтакте и у Одноклассников. Это ведь целый мир, гиганская сложная машина. Мне рассказывали, что у фейсбука есть отдельная система модерации приватных групп, в которых никто ни на что не жалуется. В этих группах сидят педофилы и довольные обмениваются детским порно, пока их не засекает сам ФБ и не сдает правоохранителям. Хочется похожие кулстори от ВК и Одноклассников послушать. Сколько платят модераторам? Какой рабочий день? На что странное жалуются пользователи? Интересно!

А админкой новой похвастаюсь как запустим, уже скоро.

P.S. После длительного просмотра фоток на самом деле больше ничего не хочется. Жаль, что приходится людям это делать.

Когда делаете email-рассылки в первый раз — имейте в виду, что платформа может не отправить письмо, а заблокировать аккаунт для ручной проверки (что вы не спамер). Специально подобранное время кампании может сильно съехать (особенно, если сервис живет по другому часовому поясу).

Mailchimp блокировал таким макаром Медузу на самом запуске, так что с RAWG я подстраховался и написал им письмо в поддержку заранее.

На этот раз их роботы никакого криминала не увидели. Ненавижу, когда нашу судьбу решают машины.

Я ищу опытного бэкендера для наведения порядка в PURE.

Pure это приложение для анонимного общения и знакомств. Профиль, лента, чаты, платежи. Мобильные клиенты под iOS и Android, веб версия.

Бэкенд сейчас в плачевном состоянии. Django python2 и немного python3, не DRF. Писался 4 года назад с планами, что это будет «платформа» для запуска разных приложений знакомств — был введен слой абстракций, который усложняет разработку и поддержку (на самом деле приложений два и они мало отличаются). Части вроде аналитики, которые стоит вынести в отдельные проекты, всё ещё внутри основного приложения. Нужно привести всё это в порядок. Задача не для слабых духом и не для тех, кого пугает слово legacy.

Из хорошего: 1) несколько сотен тысяч MAU, пользователи радуются и платят деньги; 2) интересные продуктовые планы — хотим быть лучшим приложением для анонимного общения; 3) мы готовы выделять 40-60% времени на улучшения и рефакторинг — хочется сделать конфетку не только снаружи, но и изнутри; 4) работа удаленная и щедро оплачивается; 5) я ищу человека готового включать голову и брать ответственность — не «просто кодера».

В команде: ещё один бэкенд-разработчик (толковый!), по два мобильных разработчика на iOS и Android, три фронтендера, два дизайнера, инженер ops и два тестировщика. Основатель и владелец проекта — продакт, я — технический директор. Вся команда распределенная.

Идеальный кандидат: разработчик с опытом создания и поддержки больших python приложений в продакшене, которому хочется сделать большое и сложное дело. Работал с платежами и с мобильной разработкой: писал структуру взаимодействия клиентов с сервером, документацию и моки, занимался траблшутингом клиент-серверных ошибок. Понимает про базы данных, деплои, нагрузку и масштабирование, интересуется дейтингом и анонимными мессенджерами, ответственен и самостоятелен. Я сам далеко не идеальный техдир, так что готов к неидеальным кандидатам.

Пишите в личку или на [email protected]

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

Вы не поверите, специалист техподдержки спокойно рассказал, как устроена работа компании. Вся команда разработки живет в одном и том же продуктовом цикле. Если на момент написания статьи это были 3-4 команды по 2-3 человека, то теперь это могут быть 7 команд или больше. Да, документ описывающий цикл стал больше, но принципиальная схема осталась прежней.

Я по работе общался с сотнями техподдержек (о, сколько часов музыки я прослушал по PSTN) и эта впечатлила меня больше всего. На втором месте G Suite от Google (бывший Google Apps) — реально разбираются в этом монстре и технологиях, на которых он построен. Третье место занимает поддержка Apple Developer Program. Эти чуваки супер дружелюбные и если правильно пропитчить нужду могут сделать множество исключений из правил. Прямо как в России, закон строг, но можно договориться.

Две недели назад я нанял в Пьюр ведущего бэкенд разработчика — Антона. За это время Антон вник в проект, сделал так, чтобы серверы не умирали при повторных запросах от клиентов, почти доделал несколько важных задач для борьбы с мошенниками (выпустим большое обновление приложений ещё до Нового года) и наметил план по дальнейшему наведению порядка.

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

Начнем мы с самых основ — с построения удобной среды разработки: настройка рабочего окружения бэкенд-разработчика должна занимать несколько минут, а не дней (docker, клон продакшен базы с вычищенными персональными данными, etc.)

Далее, заменим старую и неподдерживаемую систему фоновых задач gearman на celery и переедем на python3.

А вот дальше начинается круть: полный аудит текущих мобильных приложений и новая версия API, свободная от легаси. Самый сок: сейчас большая часть данных о пользователе хранится в json-ах внутри одной таблицы «users» — мы её распилим на кусочки. Меняем систему доставки обновлений на клиенты с long-polling на вебсокеты (заодно выпиливаем mongo с сотней гигабайт мусора).

Если всё это звучит для вас не как шум, а как интересные задачи и вызов — пишите мне в личку или на [email protected]. Обязательный список: django, celery, aiohttp (можно хотеть изучить, нужен для бэкенда чатов), postgres. Приложите код, который вы считаете лучшим в своей жизни.

Минусы:
- задачи часто меняются
- процесс ещё не устаканен
- нужно много прогать

Плюсы:
- можно участвовать в формулировке задач
- есть тестировщики и хороший сисадмин (devops)
- удаленка
- вы будете работать с АНТОНОМ ШУРАШОВЫМ.

На прошлой неделе было удивительное:

1. Федя признался, что понял кайф вайб-кодинга (до этого он всё время говорил, что понимает, что это такое, но я бы описал его прошлую позицию как просвещённый луддизм); надеюсь, сделаем про это с Федей отдельный эпизод подкаста.

2. Настя, наш операционный директор (не программист), завайбкодила прототип для клиента в lovable. Раньше бы мы назначили встречу с продуктовым дизайнером, он бы нарисовал макеты, мы бы сделали пару встреч и итераций, дальше бы мы его, может быть, сделали кликабельным, дальше бы посадили фронтендеров его заверстать. А тут Настя сделала всё сама за пару часов. И отправила клиенту не просто макеты, а полноценный прототип. Клиент — стартап, в котором нужна возможность связать врачей и пациентов, так эта шайтан-машина нашла бесплатное решение для видеосвязи и прикрутила его к прототипу.

Настя выглядела поражённой и даже встревоженной: «Самат, с помощью этого можно перестроить работу с клиентами». И спросила: «А нужны ли будут программисты?» и вообще: «Какое наше место в этом новом мире?»

Я спокоен: сложные, большие программы эта система всё ещё не может сделать нормально, и наше умение придумать гибкую, масштабируемую архитектуру, задавать и выдерживать требования к качеству при меняющихся требованиях — это технические навыки, которые делают нас (и наших программистов) ценными. Плюс мы думаем над задачей клиента, не просто бездумно исполняем приказ.

То есть программист сможет заниматься чуть более сложными вещами и ускорит свою работу.

Вспомнил, что на днях общался со знакомым, который делает сервис по созданию кастомных приложений обычными людьми. То есть ты говоришь, какое приложение хочешь, начинаешь им пользоваться и можешь прямо на лету что-то в нём поменять, с сохранением уже введённых данных, вообще не имея дела с кодом. Подобные инструменты, скорее всего, съедят нижнюю часть рынка, «простую разработку». Как мы сегодня не ищем дизайнера и верстальщика, чтобы написать объявление в ворде или сделать простую страницу на тильде, но обращаемся в издательский дом, если хотим опубликовать книгу, или нанимаем команду, чтобы запустить большой маркетплейс.

Ну и наконец, если в каком-то будущем мы сможем делать крутые программные продукты «совсем без программистов» — то:

1. долгосрочно, у нас будут гораздо большие проблемы, потому что перестроится вообще весь рынок интеллектуального (а с развитием физических роботов — вообще всего) труда, мир изменится;

2. краткосрочно, мы сами сможем гораздо смелее тестировать свои продуктовые гипотезы для своих продуктов (а мы хотим развиваться именно в сторону продуктовой разработки).

То есть я настроен оптимистично, но то, что два этих события произошли почти одновременно, не идёт у меня из головы. Кажется, что мы незаметно преодолели очередной барьер развития ИИ.