Почему Python — идеальный второй язык для фронтендера и первый для бэкендера в 2022 году
Программист-полиглот рассказал, почему Python стоит учить даже раньше популярного среди «вайтишников» JavaScript и какие у языка перспективы.


Иллюстрация: Оля Ежак для Skillbox Media

Когда меня спрашивают, какой язык программирования лучше изучать начинающим бэкенд-разработчикам, я не задумываясь отвечаю — Python. Я уверен, что Python подходит фронтенд-разработчикам как второй язык, а начинающим бэкенд-разработчикам как первый. Попробую объяснить, что стоит за моей уверенностью, — для этого я сравнил Python, JavaScript и несколько других популярных языков для бэкенд-разработки: изучил сайты с рейтингами языков программирования и вакансиями.
Сложность поиска работы
Как для новичка, так и для опытного разработчика важен порог входа в технологию, скорость её изучения, её популярность, сложность поиска первой работы, зарплата на старте и перспективы развития.
Для уже опытного разработчика второй язык важен ещё и как способ расширить границы понимания разрабатываемых систем и получить новый опыт. Интересный факт: на IT-рынке США разработчик со знанием двух популярных языков зарабатывает в среднем на 50% больше своего «одноязычного» коллеги — при условии, что соответствует вакансии, где требуется кодить именно на двух языках.
Ниже — таблица с результатом анализа количества соискателей, упоминавших конкретный язык в резюме, и количеством вакансий с упоминанием этого языка (я брал вакансии во фронтенде и бэкенде).

Подсчёты, конечно, не суперточные, но они помогают оценить спрос и предложение на рынке. Важно отметить, что средняя указанная зарплата разработчиков на Golang примерно в 1,5 раза выше, чем у кодеров на других языках.
Из таблицы видно, что Python — довольно востребованный язык, а конкуренция среди кандидатов относительно невысокая. Хотя знание Go или TypeScript позволяет устроиться на работу с большей вероятностью.
Популярность языков программирования
Для сравнения трендов в области языков программирования я решил воспользоваться Google Trends, инструментом, основанным на статистике поисковых запросов в Google. Он помогает оценить динамику поиска конкретных языков в интернете — то есть общую популярность и востребованность. Из-за ограничений сервиса пришлось разбить график на два изображения.

Скриншот: Skillbox Media

Скриншот: Skillbox Media
На графике видно, что позиции языка Python укрепились. Прорисовывается спад интереса к Java и PHP. Языки C# и C++ тоже немного теряют в популярности — хотя они всё равно востребованы при решении сложных задач. Из интересного — рост внимания к Golang.
После этого я изучил специализированные рейтинги популярности языков программирования — в частности, TIOBE и IEEE Spectrum. Последний при расчёте популярности использует в качестве источников данных CareerBuilder, GitHub, Google, Hacker News, The IEEE, Reddit, Stack Overflow и Twitter.
Согласно TIOBE, Python в 2022 году вырвался на первую позицию рейтинга и стремительно растёт, обгоняя по скорости роста все остальные языки программирования.

Скриншот: Skillbox Media
В рейтинге IEEE Spectrum также лидирует Python.

Скриншот: Skillbox Media
Ещё один важный для фронтенд-разработчика критерий при выборе второго языка — удобство создания динамических заглушек бэкенда. Мои коллеги часто использовали для этого либо бэкенд-фреймворк Node.js, либо Python. Хотя, к слову, заглушка на Golang выглядит не сложнее, чем на Python.
Вот пример заглушки API на Flask.
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/ok', methods=['GET', 'POST'])
def successful_case():
if request.method == 'GET':
return jsonify({'status': 'ok', 'method': 'GET'})
elif request.method == 'POST':
return jsonify({'status': 'ok', 'method': 'POST'})
@app.route('/404', methods=['GET', 'POST'])
def unsuccessful_case():
return jsonify({'status': 'error'}), 404
def main():
app.run(host='127.0.0.1', port=8000)
if __name__ == '__main__':
main()
Этот код поднимает сервер на нужном порте, который отдаёт JSON по двум URL-адресам: http://127.0.0.1/ok и http://127.0.0.1/404.
А вот то же самое — но уже на Golang.
package main
import (
"fmt"
"log"
"net/http"
)
func successfulCase(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
if r.Method == http.MethodGet {
fmt.Fprintf(w, `{"status": "ok", "method": "GET"}`)
} else if r.Method == http.MethodPost {
fmt.Fprintf(w, `{"status": "ok", "method": "POST"}`)
}
}
func unsuccessfulCase(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusNotFound)
w.Header().Set("Content-Type", "application/json")
fmt.Fprintf(w, `{"status": "error"}`)
}
func main() {
http.HandleFunc("/ok", successfulCase)
http.HandleFunc("/404", unsuccessfulCase)
err := http.ListenAndServe(":8081", nil)
if err != nil {
log.Fatal("ListenAndServe: ", err)
}
}
Я руководил несколькими Python-, двумя .NET- и одной Go-командой и обращал внимание на скорость разработки, а общаясь с другими тимлидами и руководителями групп разработки, пришёл к выводу, что создание фич на Golang всё же занимает больше времени, чем на Python. При этом скорость разработки на .NET близка к скорости разработки на Python. Точной причины этого феномена я не выяснил, но всегда учитываю это, планируя дедлайны.
В результате этого мини-исследования я убедился, что Python — довольно перспективный вариант для изучения. Он отлично подойдёт и как первый язык для начинающих, и как второй для фронтенд- или бэкенд-разработчиков. Дополнительный плюс Python — он широко используется для автоматизации тестирования.
Помимо бэкенд и фронтенд-разработки, Python стал одним из наиболее востребованных языков для решения задач, связанных с Data Science, нейронными сетями, машинным обучением и искусственным интеллектом. А популярные Python-библиотеки SciPy, NumPy, Matplotlib помогают упростить сложные расчёты и облегчают жизнь учёных.
Если же вы уже пишете на Python, рекомендую обратить внимание на JavaScript, TypeScript или Golang. JavaScript стабильно востребован, а TypeScript и Golang явно развиваются и набирают популярность.
При этом Golang является довольно перспективным и хорошо оплачиваемым языком с относительно низким порогом входа. Он немного сложнее Python или JavaScript, зато превосходит их в скорости и имеет строгую типизацию. Я в качестве третьего языка выбрал именно Go.
Вывод
Python легко освоить — то есть у него довольно низкий порог вхождения. К тому же сейчас это самый популярный и востребованный язык программирования по данным сразу нескольких авторитетных рейтингов — в том числе TIOBE. Он работает практически на всех платформах, активно развивается и поддерживается большим отзывчивым сообществом.