Verification: a143cc29221c9be0

Node js против django или php web

Node js против django или php web

О роли фреймворков в IT-индустрии

Я, проанализировав результаты опроса разработчиков, проведённого в 2020 году Stack Overflow, понял, что использование фреймворков играет огромную роль в IT-индустрии. А именно, речь идёт об ответах на вопрос о том, что разработчики считают самым важным при поиске работы.

Факторы, влияющие на выбор места работы

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

Разработчик обычно знаком хотя бы с одним фреймворком. Здесь я собираюсь рассказать о трёх фреймворках — о Node.js/Express, Django и Spring Boot. Полагаю, что тот, кто, готовясь к 2021 году, решит сделать своим основным инструментом один из них, в любом случае, не прогадает. Но у каждого из них есть свои особенности, которые мне и хотелось бы здесь обсудить.

Результаты исследований и другие данные


▍Данные с GitHut

Ресурс GitHut позволяет узнать различные сведения о репозиториях. В частности, речь идёт о количестве активных репозиториев, об общем количестве PR, и о разных показателях, рассчитываемых по состоянию на один репозиторий: количество PR и форков, число открытых задач, количество новых подписчиков.

Популярность языков программирования на GitHub

▍Исследование Stack Overflow

Если взглянуть на результаты исследования Stack Overflow, то окажется, что Express находится на первом месте среди бэкенд-фреймворков, которые любят разработчики. Два других интересующих нас фреймворка, Spring и Django, следуют за Express с небольшим отрывом. В результате оказывается, что проект, основанный на самом перспективном скриптовом языке, на JavaScript, лидирует, а за ним идёт проект, в котором используется один из языков, обладающих самыми широкими возможностями, то есть — Python.

Популярность веб-фреймворков

▍GitHub-репозитории

Некоторые люди не любят перемен, но изменения необходимо принимать, если альтернативой является катастрофа.
Илон Маск

Фреймворк Express создан на базе платформы Node.js, поэтому тут мы будем сравнивать репозитории Node.js, Spring Boot и Django

Репозиторий node

Репозиторий spring-boot

Репозиторий django

Как видно, больше всего звёзд у репозитория Node.js. Но разница между звёздами проектов не так сильна, как различие в количестве их форков. У Spring Boot и Django имеется гораздо больше форков, чем у Node.js.

Теперь поговорим о том, в каких ситуациях имеет смысл выбирать тот или иной из рассматриваемых нами фреймворков.

Node.js/Express

Node.js представляет собой серверную платформу, которая является частью стека технологий, охватывающих все нужды веб-разработки, и основанных на JavaScript. В Node.js используется JavaScript-движок V8, тот же самый, что применяется в браузере Chrome и в других браузерах, основанных на Chromium. В результате оказывается, что благодаря использованию Node.js код, предназначенный для выполнения на сервере, можно писать на JavaScript. На базе платформы Node.js создано множество фреймворков, включая такие популярные, как Express.

▍Сильные стороны Node.js


  • Появление Node.js сделало возможным фуллстек-разработку веб-проектов на JavaScript. В результате в распоряжении разработчиков серверных частей приложений оказались и сильные возможности JavaScript, и наработки экосистемы JS, библиотеки, которыми стало реально воспользоваться в серверном окружении.
  • JavaScript-код, аналогичный по функционалу, например, коду, написанному на C, оказывается компактнее. Производительность JavaScript-кода при этом достаточно высока для применения его в проектах, в которых важна скорость работы кода.
  • Код клиентских и серверных частей проектов легче поддерживать в согласованном состоянии, так как и там и там используется один и тот же язык.
  • Один и тот же код можно совместно использовать и на клиенте, и на сервере.
  • Благодаря существованию модулей Node.js, которые, в сущности, представляют собой особым образом оформленные фрагменты кода, разработчики могут с удобством использовать в своих проектах чужой код, а так же собственные наработки.
  • Платформа Node.js, и, соответственно, основанные на ней фреймворки, отличаются нетребовательностью к ресурсам и масштабируемостью. Именно поэтому Node.js — это платформа, к которой часто прибегают те, кто пользуется микросервисными архитектурами.
  • Эта платформа хорошо подходит для разработки микросервисов ещё и из-за существования системы модулей Node.js, которые можно представить себе в виде строительных блоков серверных приложений.
  • В Node.js JavaScript код компилируется в машинный код, что позволяет получить гораздо более высокую производительность, чем при интерпретации кода. Сообщество JavaScript-разработчиков видит постоянное улучшение производительности Node.js за счёт того, что Google постоянно работает над совершенствованием V8.
  • Благодаря тому, что в Node.js имеется система ввода-вывода, не блокирующая главный поток, эта платформа демонстрирует высокую производительность. Достойная скорость обработки запросов достигается благодаря использованию JavaScript-механизмов конкурентного однопоточного выполнения кода.
  • Node.js — это опенсорсный проект, вокруг которого собралось огромное сообщество разработчиков. Это значит, что тот, кто столкнётся с какой-то проблемой, сможет достаточно быстро найти её решение.
  • Node.js, в ближайшем будущем, может стать платформой, которую будут использовать для проведения «тяжёлых» вычислений, наподобие тех, которые применяются для решения задач машинного обучения.

▍Компании, которые используют Node.js


  • Paypal
  • Netflix
  • LinkedIn
  • Uber
  • eBay
  • Yahoo

Если учесть сильные стороны Node.js и то, в каких компаниях используется эта платформа, становятся понятными причины её огромной популярности. Зарплата Node.js-разработчиков в США варьируется в пределах $40,000-$130,000 в год. В результате можно сказать, что если вы чувствуете, что Node.js и фреймворки, основанные на этой платформе, вам интересны, вы вполне можете выбрать именно их в качестве базы для своих разработок 2021 года.

Spring Boot

Проект Spring Boot — это фреймворк для разработки бэкенд-приложений, основанный на Java, который, как и Node.js, используется для разработки микросервисов. Этот фреймворк упрощает создание приложений, основанных на Spring, его можно представить себе в виде инструмента для создания самостоятельных Spring-приложений. Если вы планируете в 2021 году перейти на Spring, то вам, определённо, стоит знать о том, чем вам в этом деле сможет помочь Spring Boot.

▍Сильные стороны Spring Boot


  • Spring Boot позволяет с минимальными усилиями создавать самостоятельные Spring-приложения, облегчает процесс их конфигурирования, упрощает работу над ними. Подобные приложения легко запускаются с помощью команды java -jar.
  • Если в процессе создания Spring Boot-приложения произошла ошибка, встроенный анализатор ошибок поможет справиться с проблемой.
  • Spring Boot поддерживает встроенные серверы, вроде Tomcat и Jetty. Это значит, что тем, кто пользуется Spring Boot, не нужно развёртывать .war-файлы на внешних серверах.
  • Использование Spring Boot позволяет облегчить конфигурирование Maven за счёт наличия в системе начальных вариантов файла pom.xml.
  • В возможности фреймворка входит автоматическое конфигурирование Spring.
  • Spring Boot хорошо интегрируется с другими фреймворками.
  • Фреймворк предоставляет разработчику конфигурации, готовые для продакшн-использования. Сюда входят, например, метрики состояния проекта и внешние конфигурации.
  • При использовании Spring Boot нет нужды в применении XML-конфигураций или средств для генерирования кода.
  • Применение Spring Boot облегчает труд разработчиков за счёт применения принципа проектирования ПО, известного как «Convention over Configuration».

▍Компании, которые используют Spring


  • Platform
  • Intuit
  • MIT
  • Zillow
  • TransferWise

Честно говоря, я — не фанат Java. И я не будут использовать Spring Boot для серверной разработки в 2021 году. Но, если верить статистике, существует много программистов, применяющих этот фреймворк. Если говорить о зарплатах соответствующих специалистов, то это что-то около $50,000-$104,000 в год. Это немного меньше, чем зарплаты Node.js-разработчиков.

Django

Django — это опенсорсный бэкенд-фреймворк, написанный на Python. Как известно, Python — это один из таких языков, которые пользуются наибольшей любовью разработчиков. И это — одна из основных причин того, что Django является одним из самых популярных серверных фреймворков. Но у того, чтобы выбрать Django в качестве своего фреймворка 2021 года, есть и другие причины.

▍Сильные стороны Django


  • Django позволяет без особых сложностей создавать динамические веб-приложения с использованием Python. Данный фреймворк написан на Python. В этом заключается одно из главных достоинств Django.
  • Фреймворк поддерживает паттерн проектирования MVC. Это помогает разработчикам в разделении пользовательского интерфейса и бизнес-логики Django-приложений.
  • Это быстрый фреймворк, не перегруженный ненужными возможностями. Я имеют в виду то, что использование Django позволяет быстро выйти на работоспособный проект.
  • Django не относится к минималистичным фреймворкам, широко используемым для разработки микросервисов. Он отличается мощностью, универсальностью и определённым своеобразием.
  • Создатели этого фреймворка серьёзно относятся к безопасности. Поэтому они дают разработчикам, использующим Django, соответствующие инструменты. Я уверен, что все вы знаете о том, как много проблем существует в наши дни в сфере кибербезопасности. Поэтому чрезвычайно важными являются вопросы защиты веб-проектов. Django поддерживает систему аутентификации пользователей, содержит инструменты для защиты от различных атак. Среди них — средства защиты от SQL-инъекций, от межсайтового скриптинга, от межсайтовой подделки запросов, от кликджекинга.
  • Django-проекты отличаются компактностью кода.
  • Разработчики, использующие Django, могут моделировать базовые классы. Это значит, что в их распоряжении всегда имеется ORM.
  • Django — это кросс-платформенный проект. Он отлично работает на различных операционных системах. Кроме того, он поддерживает взаимодействие с различными базами данных.
  • Это — фреймворк, приложения, созданные с использованием которого, хорошо поддаются масштабированию. Поэтому тот, кто выбирает Django, может быть уверенным в том, что сможет эффективно развивать свой проект по мере его роста.
  • Вокруг Django сформировалось активное сообщество. Поэтому тот, кто столкнулся с какой-то проблемой, сможет без особых сложностей её решить.

▍Компании, которые используют Django


  • Mozilla
  • NASA
  • Pinterest
  • Bitbucket
  • Instagram

Так как Django основан на Python, о производительности этого фреймворка и о его поддержке можно не беспокоиться. Кроме того, если взглянуть на список компаний, использующих Django, можно сделать вывод о том, что это — фреймворк, достойный внимания и в этом, и в будущем году. Если проанализировать зарплаты Django-разработчиков, то окажется, что это что-то между $90,000-$120,000 в год. В результате оказывается, что спрос на Django-специалистов достаточно высок.

Что такое Node.js? История создания и развития

На самом деле Node.js — это не фреймворк или библиотека, а среда выполнения, которая базируется на движке Chrome V8 JavaScript.

Технология была впервые представлена в 2009 году Райаном Далем на ежегодном европейском форуме JSConf и сразу же была признана самой значимой частью программного обеспечения в современной вселенной JavaScript.

Как проект с открытым исходным кодом Node.js спонсировался Joyent — крупным поставщиком решений для облачных вычислений и хостинга. Ранее компания уже инвестировала в ряд других технологий, таких как инфраструктура Ruby on Rails, а также предоставляла услуги хостинга для таких гигантов, как Twitter и LinkedIn. Последний также стал одним из первых сервисов, использовавших Node.js для программирования бэкэнда своего мобильного приложения. Позже технология была принята рядом технологических лидеров, таких как Uber, eBay, Walmart и Netflix. И этот список можно продолжать до бесконечности.

Сильные и слабые стороны Node.js остаются предметом жарких дискуссий. Чтобы внести ясность, стоит проанализировать как плюсы, так и минусы этой среды.

Преимущества использования Node.js

Согласно данным Google Trends, интерес к этому ответвлению JS достиг пика в 2017 году и остаётся высоким. И на то есть веские причины.

Надёжная технология на базе JavaScript

Используя Node.js в качестве основы для бэкэнда, вы автоматически получаете все преимущества полнофункциональной разработки на JavaScript, в числе которых:

  • оптимальная скорость работы приложений;

  • возможность совместного и повторного использования;

  • огромное количество бесплатных инструментов;

  • кроссплатформенность.

Всё это позволяет сделать процесс разработки максимально гибким и менее затратным по времени. Как результат, вы в кратчайшие сроки получаете качественное и надёжное программное обеспечение. Разработчики, специализирующиеся на JavaScript, могут начать программировать серверную часть с минимальными усилиями, упаковывая существующий код в модули и создавая новые уровни абстракции.

Быстрая обработка запросов и эффективная событийная модель

Node.js работает быстро. Это доказывают результаты тестов производительности, представленные toptal.com. Исследователи сравнили, как популярные языки, такие как GO, PHP, Java и Node.js, обрабатывают одновременные запросы.

Последний демонстрирует лучшие результаты практически по всем показателям благодаря использованию движка V8. Изначально он был разработан для браузера Chrome. Написанный на C++, Chrome V8 используется для компиляции функций, написанных на JS, в машинный код, и выполняет эту работу с впечатляющей скоростью. Благодаря тому, что Google вкладывает большие средства в свой движок, V8 на протяжении многих лет демонстрировал рост производительности, а Node.js извлёк из этого все возможные преимущества.

Ещё одним немаловажным преимуществом является асинхронная обработка запросов. В контексте серверной части синхронная обработка предполагает, что код выполняется последовательно. Таким образом, каждый новый запрос блокирует поток остальных, а другие команды начнут выполняться только после того, как будет выполнена предыдущая. В свою очередь, асинхронный метод, который используется в Node.js, максимально используя однопоточную обработку, что сокращает время отклика в несколько раз.

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

Примеры говорят сами за себя: многие ведущие компании после перехода на Node.js заметили значительные улучшения — PayPal, например, сообщил о снижении времени отклика на 35% после миграции с Java.

Идеальный выбор для микросервисной архитектуры

Будучи простой и лёгкой средой программирования, Node.js стал идеальным решением для так называемой архитектуры микросервисов. Этот подход предполагает разработку одного приложения как набора небольших сервисов, каждый из которых работает с собственными процессами и взаимодействует с легковесными механизмами, часто с API ресурсов HTTP.

Согласно отчёту Node.js User Survey Report 2017, Node.js является предпочтительной технологией при создании решений на базе подобных экосистем. Около половины респондентов используют технологии, связанные с микросервисами (если точнее, то речь идёт о Docker — ведущей платформе для контейнеризации программного обеспечения).

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

В качестве примера реализации можно рассмотреть переход Walmart к микросервисной архитектуре на базе Node.js. Такое решение позволило компании получить немало преимуществ:

  • За ночь рост конверсии на 20% в целом и рост конверсии с мобильных устройств на 98%.

  • 100% время безотказной работы в Чёрную пятницу (более 500 млн просмотров страниц).

  • Экономия до 40% на оборудовании.

Ещё один яркий пример того, как Node.js может превзойти конкурентов с точки зрения производительности, — это GoDaddy. Запустив рекламную кампанию SuperBowl, компания смогла обработать 10 000 запросов в секунду без простоев, используя только 10% возможностей оборудования.

Богатая экосистема

NPM — менеджер пакетов Node.js по умолчанию — также служит основной платформой для инструментов JavaScript с открытым исходным кодом, которые играют важную роль в развитии этого языка программирования. С учётом того, что на данный момент в реестре npm доступно около миллиона библиотек и еженедельно публикуется более 10 000 новых, экосистема Node.js довольно богата. Согласно данным статистики, 97% современных веб-приложений состоят из модулей npm. И это доказательство его неоспоримой популярности среди разработчиков.

С таким огромным разнообразием бесплатных инструментов, доступных в несколько кликов, существует огромный потенциал для использования Node.js. В то же время ПО с открытым исходным кодом пользуется всё большей популярностью, поскольку оно позволяет создавать новые решения, сокращая общие затраты на разработку и сроки выхода на рынок.

Поддержка IT-гигантов

Как упоминалось выше, разработку Node.js поддержала Joyent. В 2015 году был создан фонд, призванный обеспечить широкое распространение и ускорить развитие этой среды. IBM, Microsoft, PayPal, Fidelity и SAP стали членами-основателями этой организации.

Список компаний, использующих Node.js, постоянно растёт. В настоящее время в него входят более 300 известных компаний, таких как PayPal, Medium, Trello, Uber, Zendesk и множество других.

Очень немногие проекты с открытым исходным кодом когда-либо пользовались такой сильной поддержкой со стороны ведущих мировых корпораций. И это говорит о выдающемся потенциале Node.js.

Полная поддержка JSON

Хотя другие серверные технологии, такие как PHP и Ruby on Rails, могут использовать JSON для связи, Node.js делает это без преобразования между двоичными моделями посредством JavaScript. Это особенно удобно, когда вам нужно создать RESTful API для поддержки базы данных NoSQL. Эта «бесшовная» связь с одним из основных стандартов передачи данных — ещё одно преимущество экосистемы JavaScript.

Ложка дёгтя: почему Node.js может вам не подойти

Несмотря на впечатляющий потенциал проекта, рассматривая возможность использования Node.js для программирования серверной части, стоит учесть и некоторые его существенные недостатки.

Низкая производительность при работе с тяжёлыми вычислительными задачами

Самым большим недостатком Node.js даже сейчас является его неспособность обрабатывать тяжёлые задачи, связанные с процессором. Но, чтобы понять, каковы корни этой проблемы, необходимо немного углубиться в теорию.

Как известно, Node.js - это среда выполнения, которая выполняет JavaScript на стороне сервера. Будучи языком программирования внешнего интерфейса, JS использует один поток для быстрой обработки задач. Для его работы не требуется многопоточность, потому что задачи в JavaScript легковесны не потребляют большое количество ресурсов процессора.

Неблокирующая модель ввода и вывода означает, что Node.js отвечает на вызов клиента, чтобы начать выполнять запрос, и обрабатывает задачу во время выполнения обратного вызова. То есть, Node асинхронно выполняет JS-код в своём единственном потоке на основе событий. Это называется циклом событий.

Проблема возникает, когда Node.js получает задачу, привязанную к ЦП: всякий раз, когда в цикл событий приходит тяжёлый запрос, Node.js направляет все доступные ресурсы ЦП для его первой обработки, а затем отвечает на другие запросы в очереди. Это приводит к общей задержке в цикле событий, поэтому Node.js не рекомендуется для тяжёлых вычислений.

В 2018 году многопоточность была представлена в качестве экспериментальной функции Node.js версии 10.5.0. Так называемый модуль рабочих потоков может задействовать дополнительные потоки, но только на процессорах с несколькими ядрами. Хотя за последние несколько лет эта функция значительно усовершенствовалась, в обработке тяжёлых задач решение по-прежнему уступает альтернативам.

Зависимость от обратного вызова

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

Незрелость

Хотя основные модули Node.js довольно стабильны и могут считаться зрелыми, в реестре npm есть много инструментов, которые либо имеют низкое качество, либо не имеют чёткой документации и не были протестированы должным образом. Более того, сам реестр недостаточно хорошо структурирован, чтобы предлагать инструменты на основе их рейтинга или качества. Следовательно, может быть трудно найти лучшее решение для ваших целей, не зная, что искать.

Perl

В Интернете встречается мнение, что Perl устаревает и пишут на нём в основном те, кто сталкивается с легаси-кодом. Так ли это?

Легаси-код — код, который писали мамонты предыдущие или сторонние программисты, используя устаревшие языки или технологии.

Сергей Сединкин, старший специалист по решению багов REG.RU:

Отчасти это так. В крупных известных компаниях можно встретить проекты, написанные на Perl. Их надо развивать и поддерживать. Если код подвергался рефакторингу, то он будет отвечать современным стандартам. Работать с таким кодом одно удовольствие. И какая разница, на каком языке программирования он написан?

Что касается новых проектов на Perl. Недавно Владимир Перепелица из Mail.ru участвовал в интервью, где рассказал, что они пишут облако на Perl. И это только новый код и новый проект. Больше примеров не могу привести, потому что не интересовался сторонними проектами.

Александр Ткач, Perl-разработчик REG.RU:

Доля Perl в вебе, безусловно, сократилась в пользу PHP, Node.js и Python. В основном, Perl востребован в компаниях, где кодовая база изначально была написана на Perl-е в те годы, когда альтернативы на бэкенде ему ещё не было. Объём легаси-кода, написанного на Perl-е в топовых IT-компаниях в прошлые годы, большой и требует поддержки. Где-то он переписывается на другие языки программирования (ЯП), а где-то остаётся основным ЯП, в том числе для новых проектов и микросервисов. Я думаю, что, во-первых, процесс миграции с Perl — небыстрый, а во-вторых, рефакторинг и поддержка легаси-кода на больших проектах тоже может дать хороший опыт в программировании, так что в ближайшие лет 5 хоронить Perl пока рано. Кроме того, Perl поддерживается профессиональным сообществом, оно дружное и экспертное. Зачастую найти там ответ на сложный вопрос получится быстрее, чем в больших сообществах по PHP или Python.

Зачем использовать Perl для веба, если есть Python?

Сергей Сединкин:

Большое комьюнити, обширная база открытых модулей на CPAN почти под все задачи. Perl становится менее популярным, значит, количество программистов на Perl будет сокращаться. Из-за этого возрастёт ценность каждого конкретного программиста. Значит, жди почёт и уважение в компании.

Александр Ткач:

Правильнее было бы противопоставить в этом вопросе Perl языку PHP, чья доля в сегменте веб-разработки в разы больше доли как Perl, так и Python. Для простых веб-проектов типа лендингов или блогов смысла в Perl действительно нет — есть готовые решения на PHP (CMS — WordPress, Joomla и другие), а на больших и сложных проектах он может составить конкуренцию другим ЯП. Программирование на Perl дает более глубинные знания, чем программирование на PHP, при этом синтаксис проще, чем у Python, и практически любую задачу можно решить на этом ЯП несколькими способами. Я думаю, что человек, освоивший Perl, сможет затем с лёгкостью перейти на PHP или на Python — они кажутся проще после Perl — и писать при этом качественный код.

Правда ли, что у Perl достаточно сложный синтаксис?

Сергей Сединкин:

При желании на Perl можно написать очень хитрые конструкции. Неподготовленному зрителю будет сложно понять код. Но ведь можно писать и простой код?

Александр Ткач:

В Perl достаточно запомнить, какие существуют специальные переменные и операторы, чтобы разобраться в синтаксисе. Да, Perl позволяет при желании записывать код очень кратко, но на практике сталкиваться с такой записью придётся редко. По читабельности Perl-код не уступает коду на PHP или Python, при этом, в отличие от Python, в Perl нет строгого требования выделять блоки кода отступами.

Что можно делать с Perl в вебе? Какие задачи ждут тех, кто планирует искать работу Perl-разработчиком?

Сергей Сединкин:

Если кратко, то это бэкенд, админские скрипты, отчёты, системные демоны.

Александр Ткач:

На Perl есть веб-фреймворки современного уровня с поддержкой MVP и ORM — Catalyst, Mojo, Dancer, которые не уступают фреймворкам на Python (Django) и PHP (Laravel, Yii). Задачи всё те же, что и на других популярных ЯП для серверного программирования, — разработка бэкенда классических веб-приложений, а также микросервисов, платёжных шлюзов, менеджеров очередей и иногда асинхронных решений.

Python

На вопросы о Python отвечает Сергей Сединкин, старший специалист по решению багов REG.RU.

Хорошо ли начинать изучать программирование с Python, учитывая, что он достаточно высокоуровневый и для него есть множество готовых библиотек? Не будет ли потом недостатка в глубинных знаниях и понимании работы технологий, которые скрыты в Python за абстракциями (например, процесс выделения памяти в программах)?

В современном мире программирование движется в сторону решения бизнес-задач. На современные серверы ставят железо, которое работает достаточно быстро. Куда лучше написать программу, решающую конкретные задачи пользователя и приносящую ему благо, облегчающую жизнь, чем написать программу, которая работает быстро, но никакой пользы не несёт. Если ваш проект разовьётся настолько, что надо будет изучать низкоуровневые штуки, то именно тогда это и стоит делать. Изучить их будет намного проще с уже готовым багажом знаний. У программиста будет представление, где и зачем нужны оптимизации.

Сфер применения Python много: это и веб, и анализ данных, Machine Learning и так далее. Сможет ли новичок переключиться на другую сферу, если одна чем-то не устроит?

Всё зависит от человека и требований проекта. Особых препятствий быть не должно.

Как начинающему программисту сразу применять свои знания Python на практике (применительно к веб-разработке)?

Советую придумать себе задачу и сразу реализовать её. Например, можно поставить себе цель — создать сайт, в котором будет телефонная книга. В книгу можно добавлять, удалять контакты, менять их. Хранение сделать в базе данных.

Что можно делать с Python в вебе? Какие задачи ждут тех, кто планирует искать работу Python-разработчиком?

С Python в вебе можно делать то же самое, что и с другими языками программирования.

Почему?

Для примера рассмотрим пару вариантов:

  1. C#. Да, ребята из Microsoft красавцы — они создали .NET Core и всячески продвигают эту платформу. Но кто бы что ни говорил, это относительно новая кроссплатформенная технология, в которой не все гладко (год выпуска — всего лишь 2016). Это во-первых. А во-вторых, это решение обходится дорого, да и соответствующих разработчиков не так уж много просто потому, что платформа не очень популярна.
  2. Java. Это действительно сложно. Создать нормальный сайт на Java — это вам не пару строчек кода, и даже не пару десятков, как на Python. Это действительно много кода, плюс нужны фреймворки, плюс надо знать специфику настройки Java-серверов и т. д. и т. п. Короче говоря, это боль и страдание.
  3. PHP. Вообще-то, в последних версиях PHP хорош. Уже начиная с версии 7.2, язык программирования PHP как минимум не хуже «Пайтона». Однако нельзя просто так взять и начать использовать PHP. Если простой, а не топовый разработчик начнет делать web-сайт на PHP, он не будет его писать только лишь на 7.2 — ему все равно придется читать руководства, учебники и т. д, плюс везде полно legacy-кода, что в совокупности не очень хорошо и тормозит разработку.
  4. JavaScript и Node.js. Да, это прекрасно и современно, когда один и тот же язык используется и на бэкенде, и на фронтенде. Однако на практике получается, что все не так уж и стабильно. Сам по себе Node.js — штука хорошая, однако бывает проблематично развернуть ее в production, причем так, чтобы она не падала, то есть работала стабильно и устойчиво. Вдобавок к этому, если надо написать действительно качественный код на JavaScript, мы будем использовать не JS, а TypeScript. А вот TypeScript уже неожиданно сложный, то есть при его виде у некоторых рядовых разработчиков реально закипает мозг.