#django

4 постов
пост №1063Работа и карьера

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

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

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

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

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

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

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

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

пост №1028Работа и карьера

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

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

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

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

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

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

Пишите в личку или на samat@pure.app

пост №1018Продукты и дизайн

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

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

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

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

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

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

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

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

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

пост №699Работа и карьера

Rawg.io ищет второго бэкенд-разработчика. Нас 3 программиста и мы делаем лучший сайт про видеоигры (всего 14 человек в компании).

TL;DR Работа, Python, Django, DRF, микрокоманда, Remote.

Под капотом у нас Python 3.6, Django 2, Django Rest Framework, Postgres, Celery, Docker на бэке и React на фронтенде. У нас есть стандартный CRUD (сейчас около 20 тысяч пользователей в месяц) и нестандартные задачи скрепинга/импорта/мержа игровых данных из XBox Live, PSN и Steam с последующим миксом видео и фото из Youtube, Twitch и Imgur. Редакторы активно используют Django Admin для редактирования базы игр (52 тысячи, будет расти до 200 тысяч).

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

Мы работаем по модели Basecamp, когда в начале 2-4 недельного «цикла» микро-команда — фронт + бэк и дизайнер получают хорошо сформулированную бизнес-задачу с примерными макетами, а дальше мы минимально дергаем команду разработки, чтобы не отвлекать и не мешать. Коммуникация происходит в Basecamp и немного в Slack, все Remote.

Из важного — codebase свежий (первый коммит год назад) и написан одним человеком (Антоном, который сейчас единственный бэкендер), жесткого легаси или костылей там (пока) нет. Мы используем стандартные тузлы, такие как github, docker, ci (есть даже blue green). Рабочее окружение разворачивается парой команд (используется docker). Мы пишем unit-тесты, но не маниакально, а для удобного тестирования и контроля работоспособности.

Мы ищем человека с опытом программирования на Python и Django (опыт работы с DRF и Celery будет большим плюсом), чтобы не терять время на изучение азов. При этом мы готовы рассмотреть как опытных, так и начинающих кандидатов. Нам важно желание приносить пользу пользователям и бизнесу, а не «придумывать красивый код ради кода»

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

Пишите на python@rawg.io или мне в личку.