JetBrains logo

Опрос Django-разработчиков 2022

В сотрудничестве с Django Software Foundation в сентябре-октябре 2022 года мы провели второй ежегодный опрос Django-разработчиков. 4900 пользователей и поклонников Django из 248 стран и регионов приняли участие в исследовании и помогли нам определить текущее состояние фреймворка и связанной с ним экосистемы.

Свежие данные можно найти в исследовании 2023 года, а результаты первого опроса, проведенного в 2021 году — здесь.

Для чего вы используете Django?

Какие версии Django вы используете?>100%

55%

0%

4.1

34%

0%

4.0

47%

75%

3.2

10%

30%

3.1

13%

39%

3.0 или более ранняя

Большинство пользователей перешли на самую свежую версию 4.1, но почти половина Django-разработчиков по-прежнему пользуются LTS-версией 3.2.

Более старыми версиями (до 3.1) пользуются опытные Python-разработчики, а новички предпочитают самые новые версии.

Какую версию Django вы используете для новых проектов?

70%

Последний стабильный релиз

28%

Последняя LTS-версия

3%

Другое

Как часто вы обновляете версию Django в проекте?

44%

Каждый стабильный релиз

14%

Каждый ежемесячный технический релиз

30%

Только LTS-версии

5%

Неподдерживаемая версия Django

7%

Другое

Django-разработчики обычно обновляют Django либо после выхода каждого стабильного релиза (44%), либо после появления новой LTS-версии (32%).

Технологии и фреймворки

Какими бэкендами баз данных вы пользуетесь?> 100%

79%

PostgreSQL

40%

SQLite

28%

MySQL

10%

MariaDB

2%

Oracle

2%

Нет / Не знаю

6%

Другое

Django официально поддерживает следующие базы данных: PostgreSQL, SQLite, MySQL, MariaDB и Oracle. По сравнению с прошлым годом PostgreSQL стала еще популярнее: ее доля увеличилась на 2 процентных пункта.

Только 6% разработчиков используют базы данных, которые не поддерживаются Django. Чаще всего такие респонденты называли MongoDB.

Какими бэкендами кэша вы пользуетесь?> 100%

54%

Redis

17%

Локальная память

16%

База данных

16%

Memcached

8%

Файловая система

1%

Другое

27%

Нет

Больше половины Django-разработчиков для кэширования выбирают Redis — это самое популярное решение.
Те, кто пользуется Redis в качестве кэш-бэкенда, используют TypeScript чаще, чем те, кто предпочитает другие способы кэширования.

Пользователи PostgreSQL предпочитают Redis и Memcached.

Среди пользователей SQLite самая большая доля у файловой системы, второе место занимает локальная память.

Какими бэкендами GeoDjango вы пользуетесь?>100%

72%

Нет / Не знаю

22%

PostGIS

6%

MySQL

2%

SpatiaLite

1%

Oracle

1%

Другое

Использование бэкенда GeoDjango в значительной степени коррелирует с выбором бэкенда БД.

Какие contrib-приложения Django вы считаете самыми полезными?> 100%

85%

admin

80%

auth

50%

postgres

50%

sessions

48%

staticfiles

33%

messages

26%

contenttypes

25%

redirects

17%

humanize

16%

sites

11%

GeoDjango

10%

sitemap

3%

flatpages

3%

syndication

1%

Другое

5%

Нет / Не знаю

Более 80% респондентов выбирают admin или auth — эти contrib-приложения становятся самыми популярными второй год подряд.

Назовите 3 любимых основных компонента> 100%

76%

Модели

50%

Администрирование

33%

Аутентификация

31%

Миграции

25%

Представления

14%

Команды управления Django

13%

Формы

13%

Шаблоны

10%

Сторонняя экосистема

8%

URL-адреса

5%

Сигналы

5%

Тестирование

4%

Кэширование

2%

Не знаю

1%

Другое

Самый распространенный компонент у наших респондентов — модели. Его назвали 76% пользователей Django — на 4 процентных пункта больше, чем в прошлом году.

Какие шаблонизаторы вы используете?> 100%

81%

Шаблоны Django

14%

Jinja2

2%

Другое

13%

Нет

Какие тестовые фреймворки вы используете?> 100%

41%

pytest

36%

unittest

31%

pytest-django

21%

coverage

10%

Selenium

6%

tox

5%

Cypress

3%

Playwright

3%

django-test-plus

2%

nose

1%

TestCafe

1%

Другое

26%

Нет

Какие JavaScript-фреймворки вы используете?>100%

36%

37%

React

32%

37%

jQuery

25%

28%

Vue

16%

5%

htmx

8%

10%

Angular

Набирает популярность htmx, выпущенный в 2020 году. По сравнению с результатами опроса, проводившегося в августе 2021 года, число пользователей этого JavaScript-фреймворка выросло втрое. Кроме того, вдвое увеличилась доля Alpine.js, хотя она по-прежнему слишком мала, чтобы можно было делать какие-то выводы.

Популярность jQuery за год уменьшилась на 5 процентных пунктов.

Любопытно, что лидировавшие фреймворки начинают сдавать позиции вновь появившимся.

Какие CSS-фреймворки вы используете?>100%

62%

68%

Bootstrap

22%

15%

Tailwind CSS

13%

14%

Pure CSS

9%

12%

Material Design/Lite

6%

6%

Bulma

С прошлого года доля Tailwind CSS выросла на 7 процентных пунктов: с 15% до 22%. Те, кто использует Tailwind CSS, чаще, чем пользователи Bootstrap, выбирают фреймворки JavaScript, например Alpine.js, htmx, React и Vue. Пользователи Bootstrap почти вдвое чаще используют jQuery.

Назовите 5 любимых сторонних пакетов Django.> 100%

60%

djangorestframework

28%

django-celery

28%

django-debug-toolbar

18%

django-cors-headers

17%

django-filter

17%

django-allauth

16%

pytest-django

16%

django-redis

16%

django-extensions

15%

django-crispyforms

Какие асинхронные технологии вы используете?> 100%

25%

ASGI

23%

asyncio

18%

FastAPI

15%

Каналы

15%

Uvicorn

11%

Асинхронные представления Django

9%

Daphne

5%

asgiref

4%

Starlette

1%

Hypercorn

1%

Anyio

4%

Другое

47%

Нет

Половина Django-разработчиков пишут асинхронные представления. Однако использование асинхронных технологий никак не связано с опытом респондентов.

Подробнее о поддержке асинхронных технологий в Django

Синтаксис и документация

Используете ли вы сейчас подсказки типов в Django-коде?

Более опытные разработчики пользуются подсказками типов намного чаще, чем менее опытные. В общей сложности подсказки типов используют 46% опрошенных.

Каким инструментом проверки типов вы пользуетесь?>100%

35%

Mypy

23%

Pyright / Pylance

4%

Pytype

5%

Другое

40%

Нет

Насколько активно вы участвуете в составлении документации к разрабатываемому вами ПО?

22%

Активно или часто

28%

Средне, время от времени

26%

Немного, почти не участвую

25%

Не участвую

Какие инструменты вы используете для размещения и публикации документации к разрабатываемому вами ПО?>100%

43%

Readme

29%

Собственные инструменты

21%

Read the Docs

19%

GitHub Pages

3%

GitBook

8%

Другое

23%

Мы не публикуем документацию

Большие команды чаще пишут документацию к своему ПО, например, с помощью Github Pages — этот инструмент чаще всего используется большими командами.

Команды поменьше реже публикуют документацию.

Какими системами и языками вы пользуетесь при создании документации?>100%

64%

Markdown

37%

Swagger

24%

Sphinx

17%

rST

14%

Postman

13%

wiki

8%

Другое

19%

Нет

Каких принципов вы придерживаетесь при подготовке документации к разрабатываемому вами ПО?>100%

81%

Нет явно принятой информационной архитектуры

27%

Формальная проверка документации

14%

Структурирование по темам

13%

Без соответствующей документации слияние кода не выполняется

12%

Четкое руководство по стилю для участников проекта

10%

Инклюзивный язык

3%

Diátaxis

1%

DITA

4%

Другое

Языки и другие веб-фреймворки

Python — ваш основной язык программирования?

90%

Основной

10%

Второстепенный

Какие языки программирования вы используете помимо Python?> 100%

75%

JavaScript

67%

HTML / CSS

49%

SQL

39%

Bash/Shell

25%

TypeScript

15%

C / C++

13%

Java

12%

PHP

12%

Go

9%

C#

8%

Rust

3%

Ruby

3%

R

7%

Другое

3%

Нет

Каков ваш основной язык программирования?> 100%

23%

JavaScript

12%

Java

11%

TypeScript

10%

PHP

9%

C / C++

7%

C#

5%

Go

3%

HTML / CSS

2%

Rust

2%

SQL

2%

Ruby

1%

Bash/Shell

1%

R

11%

Другое

На этот вопрос отвечали только те, кто не назвал основным языком Python.

Какие веб-фреймворки вы используете помимо Django?> 100%

33%

React.js

29%

Flask

25%

JQuery

25%

FastAPI

24%

Vue.js

8%

Express

8%

Angular

4%

Spring

4%

Laravel

3%

ASP.NET Core

Какой веб-фреймворк вы используете чаще всего?> 100%

83%

Django

5%

React.js

2%

Vue.js

2%

FastAPI

1%

Flask

1%

Angular

1%

Spring

5%

Другое

Ресурсы

Из каких источников вы получаете новости о Django?> 100%

59%

djangoproject.com

26%

Stack Overflow

20%

Reddit

20%

Twitter

18%

YouTube

15%

Новостная рассылка Django News

11%

Hacker News

11%

Друзья

10%

Форум Django

9%

Подкасты

7%

RSS

6%

Google Groups

4%

Discord

1%

IRC

3%

Другое

16%

Я не слежу за развитием Django

YouTube и Stack Overflow чаще всего используют разработчики с опытом работы менее 2 лет.

А те, у кого опыт превышает 5 лет, почти никогда не смотрят YouTube для изучения Django. Они обычно читают djangoproject.com и Django News.

Какие источники информации вы используете при изучении Django?> 100%

80%

djangoproject.com

45%

Блоги

40%

YouTube

31%

Книги

18%

Друзья или коллеги

9%

Платные видео

5%

Подкасты

5%

Другое

3%

Нет

Назовите веб-ресурсы, помимо официальных каналов информации о Django, где вы читаете новости о Django> 100%

50%

YouTube-каналы

33%

Блоги

33%

Подкасты

16%

Twitter-аккаунты

12%

Форумы

19%

Другое

На каких интернет-ресурсах, помимо официальных каналов информации о Django, вы читаете новости о Django?

Версии Python

Какую версию Python вы используете?> 100%

58%

13%

3.10

51%

60%

3.9

36%

53%

3.8

17%

31%

3,7

8%

21%

3.6–3.0

По данным официального опроса Python-разработчиков, Django-разработчики чаще используют новые версии Python, чем Python-разработчики в целом. Это особенно очевидно на примере версии 3.9: ее доля у Django-разработчиков (51%) на 29 процентных пунктов больше, чем среди Python-разработчиков в целом (22%).

С помощью каких инструментов вы обычно обновляете версию Python?>100

39%

Пакеты Python, предоставляемые системой

37%

Python.org

32%

Контейнеры Docker

28%

pyenv

6%

Anaconda

4%

Сборка из исходного кода

3%

Автоматическое обновление через поставщика облачных сервисов

2%

Обновлением Python занимается другой человек

3%

Другое

2%

Не обновляю

Читатели python.org, чаще обновляют Python с выходом каждой новой стабильной версии, чем те, кто пользуется пакетами Python, предоставляемыми ОС.

Разработчики из Азии вдвое чаще используют ресурсы python.org, чем респонденты в целом (27% и 13% соответственно), а среди разработчиков из Европы доля использования пакетов Python, предоставляемых ОС, на 22 процентных пункта больше (55% и 33%).

Какие из следующих инструментов вы используете для изоляции окружений Python?> 100%

55%

44%

venv

43%

55%

Virtualenv

42%

40%

Docker

21%

23%

Pipenv

19%

13%

Poetry

На 6 процентных пунктов увеличилась доля Poetry: с 13% в 2021 году до 19% к концу 2022-го.

Какие инструменты форматирования кода вы используете?> 100%

51%

35%

Black

28%

18%

isort

23%

30%

autopep8

19%

0%

pre-commit

1%

2%

YAPF

По сравнению с результатами прошлогоднего опроса значительно выросла доля форматера Black — на 16 процентных пунктов.

Какие линтеры вы используете?> 100%

43%

40%

Flake8

41%

26%

Black

33%

37%

pylint

18%

14%

mypy

3%

4%

Другое

Какие 5 пакетов Python вы в первую очередь используете?> 100%

55%

Psycopg2

51%

Requests

40%

Gunicorn

36%

Celery

35%

Pillow

32%

pytest

31%

Black

19%

Boto3

14%

uWSGI

14%

sentry-sdk

14%

WhiteNoise

12%

factory-boy

11%

Coverage

11%

Jinja2

5%

HTTPX

2%

Bleach

2%

Model Bakery

2%

Python Slugify

2%

sorl-thumbnail

6%

Другое

5%

Нет

Чаще всего пользователи Django используют пакеты Psycopg2 и Requests — каждый назвали по 54% респондентов.

Платформа Requests пользуется популярностью у всех Python-разработчиков, а использование Psycopg2, видимо, характерно именно для тех, кто работает с Django.

Pillow — модуль работы с образами — популярен среди не очень опытных разработчиков.

В облаке

Какую платформу облачного хостинга вы используете?> 100%

44%

AWS

23%

DigitalOcean

21%

Heroku

12%

Google Cloud Platform

10%

PythonAnywhere

8%

Microsoft Azure

7%

Linode

3%

Fly.io

1%

OpenShift

1%

OpenStack

13%

Другое

20%

Нет

Наибольшей популярностью AWS пользуется у разработчиков из Северной и Центральной Америки: там ее доля составляет 56%.

В Африке лидирует Heroku (39%), а AWS с небольшим отставанием занимает второе место (37%).

PythonAnywhere более востребована в Африке и на Ближнем Востоке (20%), а также в Азии (19%). В других регионах доля этой платформы не превышает 10%.

Как вы разрабатываете локально облачные приложения?> 100%

63%

Локально с помощью virtualenv

44%

В контейнерах Docker

8%

В виртуальных машинах

7%

С помощью интерпретатора локальной системы

7%

В удаленных средах разработки

2%

Непосредственно в производственной среде

2%

Другое

10%

Нет

Как у вас реализовано выполнение рабочего кода в облаке?>100

54%

В контейнерах

33%

В виртуальных машинах

23%

Используя платформу как услугу

9%

Внесерверная обработка

2%

Другое

15%

Нет

Инструменты

Каков ваш основной текстовый редактор или IDE?> 100%

42%

VS Code

38%

PyCharm

7%

Vim

5%

Sublime Text

2%

Atom

2%

Emacs

1%

Notepad++

3%

Другое

Какова ваша основная локальная операционная система?> 100%

41%

Linux

33%

macOS

16%

Windows без WSL

10%

Windows без WSL

1%

Другое

Какие системы непрерывной интеграции (CI) вы используете?> 100%

42%

35%

GitHub Actions

28%

27%

GitLab CI

10%

12%

Jenkins/Hudson

8%

8%

CircleCI

2%

6%

TravisCI

По сравнению с прошлым годом доля GitHub Actions немного увеличилась (на 7 процентных пунктов), а Jenkins и Travis CI потеряли соответственно 2 и 4 процентных пункта.

Какие инструменты управления конфигурацией вы используете?> 100%

19%

Ansible

8%

Пользовательские решения

6%

Fabric

2%

Puppet

2%

Salt

1%

Chef

5%

Другое

65%

Нет

Контейнеры

Используете ли вы контейнеры Docker или их аналоги?>100

47%

Я использую контейнеры во время разработки

45%

Мое приложение работает в контейнерах в производственной среде

44%

Контейнеры используются в CI/CD-процессе

31%

Нет / Не знаю

2%

Я использую контейнеры для других целей

Что вы запускаете в контейнерах Docker?>100

91%

Код приложения, которое разрабатываю я или моя команда

61%

Вспомогательные службы, к которым подключается мой код

22%

Утилиты, которые я использую во время разработки

2%

Другое

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

Где вы выполняете запуск кода во время разработки?>100

71%

В virtualenv

61%

В контейнере на моем компьютере

15%

С помощью системного интерпретатора

9%

В контейнерах на другом компьютере

4%

На другом компьютере, без контейнеров

0%

Другое

Как вы развертываете код в удаленных контейнерах во время разработки?>100

68%

Я использую непрерывную интеграцию

40%

Я передаю код на сервер и создаю контейнер там

35%

Я создаю образ контейнера локально и передаю его на сервер

12%

Я удаленно подключаюсь к движку Docker

6%

Другое

Как вы выполняете отладку приложения?> 100%

72%

С помощью выражений печати или логирования

56%

С помощью IDE

40%

С помощью shell / pdb

2%

Другое

45% разработчиков с опытом работы от 11 лет выполняют отладку приложений с помощью shell / pdb, в то время как среди разработчиков с опытом 1-2 года это делают 30%, а с опытом менее года — 20%.

Выполняете ли вы отладку приложений на удаленных хостах или в контейнерах?

Демография

Укажите ваш вид занятости в настоящий момент>100

65%

Работаю в штате компании или организации

11%

Фрилансер

9%

Самозанятый

6%

Студент

4%

Работаю по совместительству в компании или организации

3%

Работающий студент

1%

На пенсии

1%

Другое

Среди пользователей Django вдвое больше фрилансеров, чем среди разработчиков в целом: доля фрилансеров по данным этого опроса составляет 11%, в то время как во всей экосистеме разработки она равна лишь 5%, а по результатам опроса Python-разработчиков — 6%.

Чем вы занимаетесь на работе?>100

79%

Разработчик/программист

18%

Руководитель команды

17%

Архитектор

12%

CTO/CIO/CEO

7%

Менеджер продукта

6%

Техническая поддержка

4%

Администратор БД

4%

Бизнес-аналитик

3%

QA-инженер

3%

Технический писатель

8%

Другое

Каков ваш опыт профессионального программирования?> 100%

9%

11%

Менее 1 года

15%

17%

1–2 года

22%

24%

3–5 лет

21%

19%

6–10 лет

33%

29%

11 лет и больше

Демографические данные этого года показывают, что в 2022 году у респондентов чуть больше опыта, чем в прошлом.

Как давно вы программируете на Python?> 100%

6%

8%

Менее 1 года

16%

21%

1–2 года

30%

31%

3–5 лет

28%

24%

6–10 лет

19%

16%

11 лет и больше

Сколько вам лет?

2%

Моложе 18

4%

18–20

30%

21–29

37%

30–39

19%

40–49

6%

50–59

2%

60 и старше

1%

Предпочитаю не отвечать

В каком регионе вы находитесь?

45%

Европа

19%

Северная Америка

18%

Азия

7%

Южная Америка

7%

Африка

3%

Ближний Восток

2%

Океания

1%

Центральная Америка

1%

Другое

Укажите свою страну или регион

15%

США

7%

Индия

6%

Германия

5%

Франция

5%

Великобритания

3%

Испания

3%

Россия

3%

Бразилия

3%

Польша

3%

Материковый Китай

2%

Канада

2%

Нидерланды

2%

Италия

2%

Австралия

2%

Иран

1%

Нигерия

Компания

Каков размер вашей компании?

18%

Только я

20%

От 2 до 10 человек

20%

От 11 до 50 человек

20%

От 51 до 500 человек

5%

От 501 до 1000 человек

5%

От 1001 до 5000 человек

8%

Более 5000 человек

3%

Не знаю

Каков размер команды, в которой вы работаете в вашей компании?

9%

Только я

67%

От 2 до 7 человек

14%

От 8 до 12 человек

6%

От 13 до 20 человек

2%

От 21 до 40 человек

1%

Более 40 человек

Django-разработчики чаще работают в небольших командах.

Над каким количеством проектов вы работаете?

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

Вы работаете в команде или самостоятельно?

Какая из следующих отраслей точнее всего соответствует деятельности вашей компании?> 100%

38%

Информационные технологии / разработка ПО

8%

Образование / обучение

7%

Бухгалтерия / финансы / страхование

5%

Медицина / здравоохранение

3%

Продажи / дистрибуция / развитие бизнеса

3%

Наука

3%

Некоммерческая организация

3%

Банковское дело / недвижимость / ипотечное финансирование

3%

Производство

2%

Управление / административная деятельность

2%

Транспорт / логистика

2%

Маркетинг

2%

Управление бизнесом / стратегический менеджмент

2%

Сервисы / обслуживание

1%

Издательское дело

1%

Безопасность

1%

Управление персоналом

1%

Ресторанный бизнес / гостиничное дело

1%

Строительство / архитектура

1%

Дизайн

1%

Юриспруденция

1%

Техническая поддержка

10%

Другое

Исходные данные и методология

Хотите проанализировать данные самостоятельно? Скачайте обезличенные результаты опроса и найдите нужные вам сведения. Делитесь своими открытиями и мыслями в Twitter с хештегом #djangosurvey. Не забудьте упомянуть @jetbrains и @djangoproject.

Прежде чем анализировать данные самостоятельно, обратите внимание:

Набор данных включает в себя только ответы, полученные через официальные каналы Django Software Foundation. После того как мы исключили дубликаты и ненадежные ответы, в наборе данных осталось более 4900 ответов, собранных в сентябре-октябре 2022 года за счет продвижения опроса через такие официальные каналы Django, как djangoproject.com и Twitter-аккаунт DSF. Чтобы избежать искажения результатов в пользу определенного инструмента или технологии, для сбора ответов не использовались каналы, связанные с какими-либо продуктами, сервисами и поставщиками.

Данные полностью анонимны и не содержат персональные данные респондентов и информацию об их местонахождении. Чтобы исключить вероятность идентификации респондентов по их комментариям, мы удалили все ответы на открытые вопросы.

Чтобы вам было проще понять логику опроса, мы делимся набором данных, вопросами и всей логикой анкеты.

Скачать исходные данные

JetBrains и Django Software Foundation благодарят всех, кто участвовал в опросе.

Если у вас есть вопросы или предложения, пишите нам по адресу surveys@jetbrains.com.