Software Engineers League 2021
By Volodymyr Obrizan on Октябрь 1, 2021

Software Engineers League
Чемпионат по надежному программированию "Software Engineers League": лучший в Лиге — лучший в профессии!
Цели
- Популяризации знаний в области проектирования надежного программного обеспечения
- Выявление лучших талантливых инженеров в сообществе
- Стимулирование программистов к самообразованию и решению сложных инженерных задач
- Создание привлекательного имиджа работодателей для членов оргкомитета, спонсоров и партнеров Чемпионата
- Расширения партнерских программ и связей
Правила соревнования
- Призовой фонд в эквиваленте $600 распределяется: первое место — экв. $300, второе место — экв. $200, третье — экв. $100.
- Цель — решить инженерную задачу.
- Последняя дата подачи решения: 31.10.2021.
- Дата оглашения результатов и победителей: 15.11.2021.
- Язык программирования: Python.
- Язык документации к решению на выбор участника: английский, русский, украинский.
- Решения принимаются в виде zip-архива с исходным кодом.
- Участник соревнования соглашается с тем, что его решение может быть опубликовано с указанием авторства организаторами соревнования в образовательных и демонстрационных целях.
- Авторские и коммерческие права остаются за участником-автором решения.
- Участник соглашается с тем, что разработка решения задачи им выполнена самостоятельно, и что он является единственным автором решения.
- Соревнование состоится при наличии хотя бы трех решений, удовлетворяющих критериям соревнования.
Официальные источники информации
- Официальная страница соревнования: https://first.institute/ru/blog/software-engineers-league-2021/
- Официальный YouTube канал соревнования: https://www.youtube.com/channel/UCwfzc8O-2OLYSaIqYdxnqrw
- Официальный телеграм-канал соревнования: https://t.me/reliable_software
- Официальный телеграм-канал обсуждения соревнования: https://t.me/reliable_python
Организатор
Жюри, оргкоммитет

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

Сергей Зайченко
Кандидат технических наук, ведущий программист и архитектор.

Виктория Копейкина
HR-менеджер Design and Test Lab.
Спонсор соревнования
Design and Test Lab — Mature Reliability Standard. Design and Test Lab разрабатывает надежные мобильные приложения, а также проектирует и тестирует интеграцию с облачными сервисами.

Python Software Engineer (Backend)
Мы приглашаем Python Software Engineer (Backend) в свою команду для разработки полезных проектов! — Социальная сеть для архитекторов, дизайнеров, ландшафтных дизайнеров; — Социальная сеть для лечения редких болезней со всего мира;

Junior Python Software Engineer (Backend)
Мы приглашаем Python Software Engineer (Backend) в свою команду для разработки полезных проектов! — Социальная сеть для архитекторов, дизайнеров, ландшафтных дизайнеров; — Социальная сеть для лечения редких болезней со всего мира;
Информационные партнеры
GoIT — это образовательная международная EdTech-компания, уникальное IT-сообщество
Beetroot Academy — Інтенсивні ІТ-курси
Задача
В социальных сетях принято указывать геолокацию пользователя. Потому что в социальных сетях интересно посмотреть своих соседей, кто еще в сети из моего города, района, улицы уже зарегистрирован в сети. Тем не менее, указывать свой домашний адрес может быть опасно: злоумышленники могут найти пользователя в реальном мире. Поэтому применяются специальные алгоритмы загрубления, которые показывают не точную географическую координату, а с погрешностью в несколько километров, что делает невозможным определить точный адрес пользователя.
Задача участника — реализовать функцию, которая загрубляет координаты пользователя: показывает их с погрешностью N километров в радиусе от географической координаты, указанной при сохранении профиля пользователя.
Решение должно быть выполнено в виде веб-сервиса, который реализует две операции:
POST /user
— сохранение или создание профиля пользователя (объект User);GET /user/<user_id>
— получение профиля пользователя (объект User).
При сохранении или создании профиля пользователя он всегда передает свои точные географические координаты.
При получении профиля пользователя другим пользователем всегда возвращается загрубленная координата. Загрубленная координата должна быть стабильной: при каждом запросе она должна быть одна и та же.
При получении профиля пользователя администратором системы всегда возвращается точная координата пользователя.
Объект User, схема данных:
{
"full_name": string,
"user_id": string,
"location": {
"lat": float,
"lon": float
}
}
Объект User, пример:
{
"full_name": "Vasiya Poupline",
"user_id": "123",
"location": {
"lat": 123.2,
"lon": 34.5
}
}
Язык: Python.
СУБД: любая на выбор участника: Postgres, MySQL, MongoDB, SQLite, и т. п.
Фреймворк: любой на выбор участника: Flask, Django, Tornado, и т. п.
Критерии оценивания
- Корректность алгоритма.
- Наличие автоматических тестов.
- Наличие документации в коде.
- Применение паттернов проектирования.
- Чистота кода.
- Другие.
Регистрация участника
Зарегистрируйтесь, чтобы получить информацию о ходе соревнований, оглашении победителей, приглашения на новые соревнования.
Загрузить решение
Напомним правила:
- Email и имя участника должны совпадать с указанными при регистрации.
- Последняя дата подачи решения: 31.10.2021.
- Язык программирования: Python.
- Решения принимаются в виде zip-архива с исходным кодом.
- Участник соревнования соглашается с тем, что его решение может быть опубликовано с указанием авторства организаторами соревнования в образовательных и демонстрационных целях.
- Авторские и коммерческие права остаются за участником-автором решения.
- Участник соглашается с тем, что разработка решения задачи им выполнена самостоятельно, и что он является единственным автором решения.