Position: Senior Software Developer (Python)
Company: Orderry
Category: Python
Experience: 3y

Ми використовуємо продуктово-інженерний підхід у вирішенні завдань. Оскільки ми продуктова компанія, нам важливо, щоб розробники не лише виконували завдання, а й розуміли проблеми бізнесу, які вони закривають. Працюючи в невеликих командах, ви зможете впливати на дизайн системи та вносити великий внесок у зростання компанії.

Прагнемо створити середовище, яке забезпечує необхідну підтримку та наставництво для довготривалого розвитку наших співробітників.

Наш стек технологій
Python 3.8, Django 3, Celery, Protobuf
PostgreSQL, Redis
asyncio / aiohttp
Docker, Kubernetes

Технічно, проект являє собою Django-додаток і кілька, порівняно невеликих, окремих сервісів на asyncio / aiohttp які реалізують інтеграції зі сторонніми системами (телефонія, SMS-шлюзи).

Сервіси між собою спілкуються через RabbitMQ. Також є один маленький сервіс на Erlang, який використовується як websocket сервер. Всього близько 100 тисяч рядків backend-коду.

Зберігаємо дані в Postgres. Обсяги інформації в окремих таблицях — порядку десятків мільйонів рядків, тому потрібно грамотно думати про швидкодію. Для кешування використовуємо Redis.

Фронтенд — односторінкове додаток на React / Redux. Проект повністю мігрувати на Python 3 і останню версію Django. Ми завжди намагаємося підтримувати всі залежності проекту в останніх стабільних версіях.

Для цієї позіції важливі:
— Досвід розробки на Python 4+ років.
— Відмінне знання реляційних баз даних і SQL.
— Досвід в профілюванні та оптимізації SQL і Python.
— Відмінне розуміння принципів побудови веб-додатку.
— Досвід роботи з інструментами тестування (unit test/pytest), бажання писати тести.
— Уміння будувати складні інтеграційні системи.
— Суттєві знання алгоритмів та структур даних.
— Досвід роботи з RabbitMQ або Kafka

Буде плюсом:
— Досвід роботи з NATS, RabbitMQ або будь-яким Message Broker.

Що вас чекає в роботі:
— Розробка нової функціональності з нуля, розвиток та підтримка існуючої функціональності.
— Робота над архітектурою додатку.
— Уніфікація і стандартизація рішень.
— Комунікація з іншими командами в пошуку оптимальних рішень.
— Допомагати нам робити наші практики кращими, втілювати на практиці твої ідеї.
— Розробка нових методів нашого PRC.
— Написання тестів.