PHP входит в число самых популярных языков программирования. Этот язык доминирует в вебе: по данным W3Techs, в ноябре 2020 года его используют 79% сайтов в интернете. Тем не менее в Сети можно встретить разговоры и холивары на тему «жив или мёртв PHP». Эта ситуация вызывает много вопросов. Часть из них удалось обсудить с разработчиком Mail.ru Group Ильёй Зобенько.
Об эксперте: Илья Зобенько работает на проекте «Юла» в Mail.ru Group. Опыт разработки на PHP — 6 лет. Послужной список:
— Илья, добрый день! Два слова о том, откуда возникла идея разговора с вами. У нас в Хекслете есть профессия «PHP-программист», здесь учатся ребята, которые с нуля изучают программирование. И есть люди, которые уже завершили профессию, которые где-то работают. Людям интересно, что происходит в мире PHP, что происходит с языком и сообществом. Особенно этим интересуются новички. Практически все, кто связан с программированием, видят, что происходит на профильных ресурсах, в блогосфере, на том же Хабре — это неоднозначное отношение к PHP. Поэтому хотелось бы обсудить этот язык ещё раз, поговорить о его состоянии, о ситуации на рынке труда, об инструментах разработки и сфере применения PHP. Но для начала расскажите, пожалуйста, нашим читателям о себе.
— Добрый день! Меня зовут Илья Зобенько, в данный момент работаю разработчиком в Mail.ru Group, это одна из крупнейший IT-компаний России. Работаю в проекте «Юла», пишу бэкенд на PHP. Раньше преимущественно управлял компаниями или командами разработки. Был опыт основания стартапа, который тоже писали на PHP, на фреймворке Symfony. Также выполнял роль технического директора.
Начинал с должности системного администратора. В это время изучал язык с нуля и применял его для реализации подручных инструментов для администрирования и для проверки простых гипотез.
Может, это звучит странно, но считаю, что выбор PHP стал одной из причин быстрого карьерного роста. Владение этим инструментом позволило мне очень тесно работать с руководством. С моей стороны было много инициатив, они быстро реализовывались. За два года я стал руководителем отдела IT, ещё через год стал заместителем генерального директора по IT.
— Илья, предлагаю в начале нашего разговора обсудить состояние PHP. Сейчас 2020 год, скоро начинается 2021. Практически весь интернет в 2020 году работает на PHP — это факт. Один WordPress занимает огромную долю рынка, на нём работает каждый третий сайт. Как вообще получилось так, что где-то говорят о неактуальности языка, обсуждают, жив он или нет?
— Тема действительно часто поднимается в последнее время, и как PHP-программист я обращаю внимание на подобные обсуждения. В таких разговорах есть что-то пугающее, но на самом деле всё не так уж плохо.
Как уже было сказано, PHP — очень популярный язык. Но при этом у него достаточно спорная репутация. Возможно, это подталкивает людей к разговорам о неактуальности языка. Иногда складывается впечатление, что отрасли нужен какой-то козёл отпущения, и на эту роль выбрали PHP.
Если обратиться к статистике, которую делает Stackoverflow, PHP хоть и теряет позиции, но все ещё остаётся среди лидеров: в этом году, если не ошибаюсь, у него восьмое место. А тенденция к снижению позиций связана с тем, что появляются новые игроки в сфере веб-разработки.
Если заглянуть в историю, например, посмотреть на падение популярности Pascal или Delphi, становится понятно, что языки умирают, когда перестают развиваться или когда их использование становится неоправданным. В PHP в этом плане всё хорошо.
— Илья, вы сказали, что языки умирают, когда перестают развиваться или когда их использование становится неоправданным. А вот какой-то стёб по отношению к PHP со стороны разработчиков — он оправдан или нет?
— Такое отношение мне кажется неоправданным. Думаю, что большая часть разработчиков вряд ли назовёт серьёзные недостатки PHP. Чаще всего люди говорят, что PHP медленный, что там код низкого качества. Эти вещи, конечно, имеют какой-то корень в прошлом.
Мы знаем, что PHP очень быстро стал популярным. В конце 90-х он был очень популярным, потому что стал простым инструментом, на котором люди могли быстро начинать зарабатывать деньги. Разработчики ставили на первое место зарабатывание денег и жертвовали качеством кода. Поэтому появилось много низкокачественного кода, который создал негативную репутацию PHP.
Надо понимать, что благодаря своей гибкости язык не стимулирует разработчиков обращать много внимания плохой код. Качество регулируется исключительно правильно построенными процессами разработки в командах. Также много зависит от комьюнити, от того, какие оно продвигает практики. Поэтому сейчас ситуация улучшилась, но плохого кода всё ещё достаточно.
Подводя промежуточный итог, скажу, что хейт в отношении PHP сейчас продолжается по инерции. Он всегда был. Сейчас причин для такого отношения практически не осталось. Но по инерции кого-то надо винить.
— То есть мы можем сказать, что язык развивается?
— Да, безусловно.
— А вот версии PHP 7.4, 8 — как вам кажется, они в правильном направлении ведут язык?
— Думаю, что да. Язык становится более современным. Можно считать сильной позицией то, что идёт упор на повышение производительности. Это можно заметить с версии 7.0, ведь как известно, разница между 5.6 и 7.0 получилась очень большой в плане производительности, ядро удалось оптимизировать очень сильно. После этого PHP по итогам разных тестов даже обогнал Python, а это, я считаю, серьёзное достижение.
— Есть шуточная классификация языков, возможно слышали: одни языки все хейтят, а на других никто не пишет. Согласны с такой классификацией?
— Скорее нет. На ум приходят сразу несколько языков программирования с безупречной репутацией, которые достаточно широко используют. А вот PHP я бы отнёс в категорию захейченных популярных языков.
— А какие языки имеют безупречную репутацию?
— C++ очень широко используется, хотя ходят слухи, что он теряет популярность. Но в энтерпрайзе и в геймдеве всё ещё широко применяется C++.
— Илья, давайте посмотрим на PHP глазами разработчика. Насколько комфортно на этом языке писать по сравнению с другими языками?
— Сам по себе язык достаточно удобный, это обусловлено C-подобным синтаксисом. Если рассматривать PHP как инструмент для входа в профессию разработчика, можно заметить ещё два важных преимущества — интерпретируемость и динамическая типизация. Благодаря этим преимуществам язык легко изучать, и он становится трамплином в профессию.
Комфорт, конечно, не ключевой критерий выбора, особенно если говорить о первом языке. Но этот критерий всё равно достаточно важен.
— Немного отвлечённый вопрос: есть рекомендации изучать буквально с первых шагов в разработке языки с другой парадигмой, с другой системой типизации и так далее. Например, изучает человек PHP, в котором динамическая типизация, для расширения кругозора ему надо учить Java или другой язык со статической типизацией. Изучает он какой-то объектно-ориентированный язык в качестве основного — надо идти и заглядывать в Clojure, чтобы познакомиться с функциональным программированием. Вы согласны с такими рекомендациями?
— Да, я сталкивался с таким мнением. В принципе, даже профессиональная разработка на PHP постепенно к этому сводится. Конечно, полностью избавиться от динамической типизации в PHP невозможно. Но во взрослых серьёзных командах часто применяется строгий режим, «хинт тайпы», возращаемые типы. И здесь разработка на PHP становится похожей на разработку на языке со статической типизацией.
Может быть, на это не надо обращать внимание в самом начале обучения. На первых порах стоит уделять внимание основным принципам разработки, возможно, попробовать применять какие-то паттерны, чтобы привыкнуть к хорошим практикам, познакомиться с архитектурой, а не сильно вдаваться в нюансы разницы языков.
— Илья, PHP изначально задумывался как шаблонизатор для вывода HTML. Я слышал мнения опытных разработчиков, которые говорят, что на PHP трудно писать сложную бизнес-логику, так как язык для этого не предназначен. Так ли это? Вы как специалист, который работает в крупной компании и разрабатывает сложные решения на PHP, согласны с этим?
— Да, действительно, PHP разрабатывался как шаблонизатор. Более того, в документации первых версий была информация, что этот инструмент не для программистов, точнее, для непрограммистов.
Сейчас всё изменилось. Язык больше не используется как шаблонизатор. Чаще можно увидеть, что на нём реализуется только бэкенд с API, а уже весь фронтенд берут на себя современные JavaScript-фреймворки и библиотеки.
Если вернуться к вопросу о бизнес-логике, то, честно говоря, такой проблемы не наблюдал, от коллег тоже не слышал.
— Следующий вопрос будет интересным для новичков, может быть, для ребят, которые только выбирают язык. Поделитесь пожалуйста своим опытом, расскажите, что именно вы делаете на PHP в крупной компании? Можно подробно рассказать, какие это продукты, для чего они нужны.
— Проектов в моей карьере было много. Это были и корпоративные решения, и популярные highload-продукты. Одной из первых приходит на ум система документооборота, которая писалась практически как эксперимент. Компания, в которой я работал, рассматривала покупку готового решения, но оно было дорогим. Поэтому я сам в порядке эксперимента попробовал закрыть главную потребность, связанную с документооборотом.
Эксперимент оказался удачным, мы набрали команду, которая развивала этот продукт. Это важный для меня пример, потому что здесь PHP идеально подошёл в качестве инструмента, он позволил быстро проверить гипотезу. Гибкость языка позволила развивать проект и быстро обучать команду.
Тогда же пришло понимание, насколько важно правильно построить процесс обучения. В тот момент информацию было не так удобно получать как сейчас, когда есть очень много хороших онлайн-школ, курсов. Тогда, к сожалению, чаще всего попадался на глаза веб-курс от Попова, который учил не очень правильным практикам. Эти практики, наверное, тоже внесли вклад в создание негативной репутации языка.
Другой проект — это стартап, платформа для создания диалоговых ассистентов. Они могли в чатах, по телефону отвечать, понимать контекст, запоминать и так далее. Чаще это описывают термином «чат-бот». На PHP здесь реализовали бэкенд сайта. А в первых версиях это был бэк и фронт. Потом решили сделать фронт современным и перешли на React. А бэкенд остался на Symfony, этот фреймворк отлично здесь себя показал.
Ещё один крупный проект на PHP, с которым я работал — ecommerce-решение для управления MLM-структурой. Самое интересно, что было в этом проекте — миграция с «Битрикса». Может я кого-то обижу, но в моих глазах репутация у «Битрикса» сомнительная. Одной из задач на проекте была миграция на фреймворк Symfony и доработка функционала. Получился достаточно сильный проект, работает хорошо и сегодня.
Ну и конечно же «Юла», один из проектов Mail.ru Group. Он создавался как стартап. Я думаю, это и стало причиной использования PHP на этом проекте. Стэк технологий здесь очень широкий, очень много решений используется. Основной бэкенд «Юлы» написан на PHP и на фреймворке Symfony.
— Илья, вы несколько раз сказали, что PHP хорошо подходит для стартапов, для быстрого прототипирования. Значит ли это, что если проект уже большой, какой-то энтерпрайз, то PHP может не подойти?
— Думаю, нет. Отличный пример, который уже все наверное знают — Facebook. Он, при его огромных нагрузках, работает на PHP. Да, команде Facebook приходилось применять какие-то сложные решения. Например, когда использовалась версия PHP 5.4 или 5.6, команда Facebook написала свой интерпретатор HipHop, чтобы ускорить язык. Но седьмая версия уже не требует таких решений, она работает быстрее, чем более ранние версии с HipHop. Это пример того, что продукт может работать на PHP очень долго.
Есть определённые тенденции, которые так или иначе уводят от PHP, например, в сторону микросервисной архитектуры. Сейчас очень популярны схемы перехода в Go. Но они не всегда оправданы. По-моему, на PHPConf есть доклады о том, когда оправдан переход на микросервисы, когда хорошо оставаться на монолите. Монолит, на самом деле, это не так уж и плохо.
— Расскажите пожалуйста, как крупные компании, такие гиганты, как Mail.ru, вообще выбирают язык? Почему Mail.ru выбирает PHP, а не какие-то хайповые, «модные-молодёжные» языки?
— Думаю, это связано с тем, что такие крупные компании как Mail.ru часто запускают проекты в режиме стартапов. Здесь важна именно скорость. Нужно проверить одну гипотезу, вторую, третью. PHP в этом плане хорошо подходит. Иногда выбор обусловлен языком CTO и core team. На чём эти люди начинают писать продукт, на том они и остаются. Но чаще всего выбор PHP обусловлен скоростью.
Читайте также Зачем изучать PHP: рейтинг, перспективы, сферы применения
— Давайте поговорим о рынке труда, новичкам это интересно. Как вы думаете, для PHP-программистов, особенно для начинающих, рынок труда благоприятный? Насколько легко начинающему программисту без опыта коммерческой разработки найти работу?
— Думаю, найти работу достаточно просто. Это обусловлено целым рядом факторов: начиная с популярности языка и заканчивая тем, что на рынке есть много компаний и команд с разным уровнем требований. Например, мне кажется, что если есть компания, которая не производит IT-продукты, а использует PHP как вспомогательную область, для поддержки образа в интернете, то требования в такой компании обычно достаточно низкие. То есть они стараются брать хороших программистов, но не перебарщивают в этом плане. И таких компаний очень много. Такую работу найти очень легко.
Также есть фриланс. Это неоднозначная тема.
В целом PHP-программисты без работы не сидят. Даже когда-то была шутка, что PHP-программисты так сильно хотят денег, что все переменные объявляют символом $
.
— А почему фриланс — неоднозначная тема, что с ним не так?
— Фриланс — хороший способ для быстрого старта и применения знаний на практике. Но, как мне кажется, главный двигатель профессионального и личностного роста — это командная разработка.
Может быть я снова кого-то обижу, но на собеседованиях мы часто сталкивались с фрилансерами, для которых главным приоритетом был заработок и скорость. Это всегда сводится к тому, что решения начинают клепаться, используются шаблоны, заготовки.
Заказчики на фрилансе видят только внешнее решение, поэтому у фрилансера нет потребности делать внутри красиво и масштабируемо. Когда такие кандидаты переходят с самостоятельной деятельности на командную работу, они очень долго адаптируются. Если в команде не налажен флоу, если нет код-ревью, этот плохой код может распространяться и наносить ущерб проекту.
— А мы можем сказать, что новичку нужно избегать фриланса и искать работу в команде, чтобы расти?
— Да, на самом деле я в этом убеждён. Командная разработка даёт незаменимый опыт.
— Илья, а кто вообще нанимает новичков? Куда пойдёт работать начинающий PHP-программист? Возможно, это студии, которые занимаются заказной разработкой, продуктовые компании, энтерпрайз?
— Это и продуктовые компании, и студии. Но, кстати, сейчас есть тенденция, она пока не явная, но всё же — студии стали разрабатывать сайты на веб-конструкторах, на том же Wix, Тильде. То есть они используют no-code решения. Поэтому веб-студии могут в перспективе реже нанимать PHP-программистов. А вот продуктовые команды — да, здесь эти специалисты нужны.
В энтерпрайзе PHP практически не используются. Есть редкие случаи, я знаю как минимум две компании, которые построили энтерпрайзные решения на PHP. Но чаще всего это продуктовые команды.
— В своей компании вы участвуете в найме. Скажите пожалуйста, какие знания и умения нужны новичку, чтобы уверенно претендовать на позицию джуниор-разработчика?
— Надо сказать, что градация программистов очень широко распространена. Но чётких границ почему-то нет. Принимая джуна, я бы сильно не мучал его вопросами по языку. Для меня было бы важным, чтобы человек уверенно владел базой, то есть я должен убедиться, что кандидат может уверенно использовать базовые инструменты языка без гугления. То есть не обязательно знать всё, но надо уверенно владеть каким-то минимумом.
Также для меня важны хорошие знания PSR. Это может звучать достаточно странно, потому что PSR по сути — это стандарт, который больше распространяется в режиме рекомендаций. Но я считаю, что PSR — это первый шаг, который подталкивает к чистоте кода.
Также я обратил бы внимание на понимание Git. Не знаю, почему именно, но когда мне задают в команде слишком простые вопросы о Git, это вызывает вспышки гнева. Конечно, они контролируемые :-)
Наверное, это связано с тем, что Git — достаточно простой инструмент. Его легко изучить. Он хорошо задокументирован, визуализирован. Есть много графических интерфейсов для работы с Git. Работа с Git — это базовые или фундаментальные навыки.
— Илья, в моём понимании навыки работы с Git приобретаются с опытом. Человек осваивает этот инструмент, когда работает в команде, когда имеет дело с ветками, когда сталкивается с конфликтами... То есть на одной теории здесь далеко не уедешь. Вы считаете, что новичок должен прийти уже со знаниями этих нюансов, или достаточно понимать принципы, уметь сделать коммит в main?
— Да, я, конечно же, говорю о минимальных знаниях, о понимании того, как всё устроено, о способности посмотреть в лог, создать новую ветку, сделать commit, merge, push, pull. Этого достаточно. Даже исправление прошлого коммита — это уже навыки, которые специалисты приобретают на рабочем месте. А базовые навыки можно наработать в соло-разработке. Да, будет меньше вероятность merge-конфликта, но всё ещё она может быть. И такая рекомендация — я бы смотрел в сторону Git-flow. Это достаточно простая идея, и к ней хорошо привыкать с самого начала пути в разработке. Я и мои коллеги использовали её на своих пэт-проектах, причём не в качестве набора инструментов, а в качестве идеологии.
— А должен ли джуниор-разработчик уметь работать с фреймворками?
— Обычно такие ситуации решаются по-другому. Если нужен специалист, который работает с Symfony, мы ищем Symfony Junior Developer. Думаю, это отдельная история, так как при всей простоте изучения с учётом наличия материалов фреймворки — достаточно объёмные инструменты, которые требуют длительного изучения. Как правило, их приходится изучать даже дольше, чем сам язык.
— Два слова о справедливости или несправедливости. Если посмотреть на рынок труда, на рейтинги, видно, что PHP-программисты всё-таки зарабатывают меньше, чем программисты на некоторых других языках, например, на Python. Как вы думаете, почему так произошло и есть ли вероятность изменить эту ситуацию в обозримом будущем?
— Да, действительно, такая ситуация есть. Недавно готовил статистику для вебинара на тему жив или мёртв PHP. Уровень зарплат по США и Европе отличается в меньшую сторону. Сложно сказать, чем это обусловлено, потому что сложно понять, как эта статистика собиралась.
Я предполагаю, что ситуация связана с областью применения. PHP — язык для веб-разработки, а тот же Python применяют и в веб-разработке, и в аналитике, и в машинном обучении. Возможно, эта разница связана с тем, что берутся разные области и по ним сравнивается зарплата.
Как исправить ситуацию? Думаю, это возможно, если комьюнити PHP-разрабочиков будет более серьёзно относиться к профессиональному росту. Я говорю, конечно, не о той части комьюнити, которая опытная и уделяет много внимания качеству, а о той, которая предпочитает быстрый заработок и не обращает достаточно внимания на качество.
— А как бы вы оценили комьюнити PHP-разработчиков? Оно дружелюбное, оно помогает развивать язык? Возможно, оно разрозненное, здесь нет ядра?
— Комьюнити очень сильное. Проводится много конференций. Только в России PHPConf уже второй раз пройдёт. Очень общительные ребята, много спикеров, которые внесли большой вклад как в развитие отдельных фреймворков, так и в развитие языка в целом. Поэтому да, комьюнити у PHP сильное.
— Илья, если бы к вам пришёл друг и спросил, как ему научиться программировать на PHP, что бы вы ему посоветовали?
— Хороший вопрос. Думаю, я бы просто дал бы какие-то материалы, это был бы видеокурс. Или просто посоветовал бы какую-то школу. А потом помогал бы, показал бы примеры проектов и инструментов, которые стоит использовать.
— А с практикой как дело обстоит? Возможно, здесь что-то можно порекомендовать?
— Возможно, это прозвучит противоречиво с учётом того, что я сказал раньше, но можно первые несколько проектов взять на фрилансе. Это как минимум позволит получить опыт, взять рабочую идею и реализовать её.
— А к опенсорсу как вы относитесь? Например, у нас есть опенсорс-проект Hexlet SICP, он на Laravel сделан. Студенты, если хотят, практикуются на этом проекте.
— Очень хорошо, что вы затронули эту тему. Хорошо отношусь к опенсорсу. Это отличная возможность погрузиться в командную разработку. Как правило, требования к опенсорс-решениям чуть ли не выше, чем к коммерческим продуктам. Поэтому опенсорс может быть сильным образовательным бустом и давать интересный опыт.
— Илья, предлагаю перейти к обсуждению разработки на PHP. В связи с этим вопрос: у нас есть огромный пласт веба, который работает на PHP. В тех же Соединённых Штатах, в Европе я видел много компаний, учреждений, университетов, у которых сайты на WordPress. Большие магазины работают на WooCommerce, на Opencart. Кажется, последний у нас более популярный. Я бы сказал, что веб принадлежит PHP. Как вы думаете, есть какие-то обстоятельства, которые могут в обозримом будущем поменять ситуацию, пошатнуть позиции PHP в вебе?
— Думаю, да, ситуация может измениться. Вопрос в том, как. Да, CMS занимают уверенную позицию. Даже когда у меня появляется в очередной раз мысль, что надо сделать личный блог, выбор всегда падает на WordPress. Просто потому, что WordPress в первую очередь ассоциируется с блогом. Превращение его в ecommerce-решение — это совсем другая история.
Движки держатся уверенно. Но ситуацию могут поменять новые тенденции в разработке. Например, мы уже упоминали, что в последние годы быстро растёт популярность SaaS-решений типа Wix и Tilda. С помощью этих инструментов люди делают очень серьёзные продукты.
Если убрать движки, это повлияет на популярность языка, на рынок фриланса и веб-студий. Но те продукты, которые сейчас работают на PHP или которые удобно делать на PHP, они так и будут на PHP работать.
Если подвести итог, лидеры среди CMS ещё долго будут удерживать позиции, и популярность PHP сохранится.
— Илья, можете описать типичную команду, которая использует PHP? Где она находится географически, что за продукт она делает? С кем готовиться работать новичку, который изучит PHP?
— Достаточно сложный вопрос. Я не уверен, что есть какие-то географические привязки. PHP-разработчик, как и любой другой разработчик, может работать откуда угодно. Это особенно удобно, если рассматривать схемы удалённой работы из России в США.
Мне кажется, в Кремниевой долине сложно с PHP, потому что там не очень много компаний, которые используют этот язык. Там чаще выбирают какие-то хайповые решения. В остальном мире большой разницы в популярности PHP нет. Насколько я знаю, есть только разница в популярности отдельных продуктов. На Западе чаще используют Laravel. Чуть восточнее популярностью пользуется Symfony. Хотя это достаточно похожие решения.
Что касается команды, наверное, тоже нельзя выделить PHP-разработчиков среди других. Такие же специалисты, как в других языках.
— Илья, вы говорили, что в энтерпрайзе PHP используют редко. В связи с этим можем ли мы сказать, что этот язык больше подходит малому и возможно среднему бизнесу, а крупный бизнес обходит его стороной?
— Конечно, хотелось бы сказать, что это не так. Но на PHP действительно чаще делают не очень большие или средние проекты. Крупные проекты часто переписываются, причём многократно. Как тот же YouTube, который был изначально написан на PHP, а потом его переписали. В России можно вспомнить «Озон», который писали на PHP, а потом переписали на Go.
Наверное, есть такой уровень, на котором продукт начинает трансформироваться. Но способы трансформации зависят от финансовых возможностей компании. И не всегда финансово оправдано полностью менять стек проекта. И, надо понимать, что PHP достаточно хорошо показывает себя и на крупных проектах, особенно при правильно спроектированной архитектуре.
— PHP считается языком общего назначения, но по факту используется только в вебе. Как вы считаете, есть ли какая-то возможность широко использовать его за пределами веба?
— Думаю, что нет. Веб — область, где PHP чувствует себя как рыба в воде. Использовать этот язык в других областях будет сложно просто из-за высокой конкуренции с другими языками.
Если рассматривать переход на десктопную разработку, здесь PHP мог бы использоваться для создания бэкенда веб-приложений, которые затем превращаются в десктопные приложения. Но здесь скорее преимущество будет у Node.js, просто из-за того, что командам часто удобнее писать приложение в одном стеке.
Если говорить о серверной разработке, к сожалению, PHP не славится как язык для многопоточной разработки. Поэтому здесь тоже очень высокая конкуренция. И скорее всего решение здесь будет написано на каком-нибудь Go.
Для энтерпрайзных решений команды обычно выбирают C# или Java.
Поэтому PHP зависим от веба. Наверное, в нём он и останется.
— Тогда, наверное, пришло время поговорить о веб-фреймворках. Я слышал мнения, что фреймворки типа Symfony и Laravel — это одна из самых сильных сторон PHP, она делает этот язык конкурентоспособным. В связи с этим два вопроса к вам. Первый — согласны ли вы, что фреймворки являются одной из самых лучших сторон PHP? И второй — а что дают фреймворки разработчикам, потребителям, возможно, комьюнити?
— Да, я согласен, что это сильная сторона языка. С использованием фреймворков PHP просто расцветает, разработка становится очень приятной. Дают они достаточно много. В первую очередь это скорость разработки. Многое уже написано до нас, фреймворки позволяют использовать это, подключать готовые решения.
Фреймворки продвигают лучшие практики, популяризируют правильные архитектурные решения. Это может способствовать формированию корректных знаний у разработчика.
Также это безопасность, расширение кругозора. В фреймворках применяются паттерны, новые возможности языка, а это очень полезно.
— Илья, два слова о разнообразии фреймворков. В Python доминирует Django, в Ruby — «рельсы». А в PHP сразу несколько ведущих фреймворков. Что лучше для разработчиков, для сообщества — иметь один основной фреймворк или несколько разных?
— Думаю, при текущем небольшом списке топ-фреймвоков это не так уж плохо. Если бы фреймворков было очень много, разработчики могли бы теряться. В ситуации с Laravel и Symfony всё проще. Можно выучить любой из них, думаю, это не будет ошибкой. Между ними можно легко переключаться, это очень похожие решения. Часть инструментов Symfony используется в самом движке Laravel. Поэтому миграция с движка на движок простая, а изучение одного движка даёт понимание, как работает другой.
— Вы работали и работаете в крупных компаниях, разрабатываете большие проекты. А как вы относитесь к популярным решениям на PHP типа WordPress, Joomla! и других CMS? Имеют ли они право на существование в бизнес-сегменте? Или это решения для блогеров или для микробизнеса типа условных обувных мастерских?
— Как я уже говорил, WordPress как продукт мне нравится. Если говорить о блоге, я выберу WordPress. Компании этот движок тоже используют. Например, когда нужно быстро проверить какую-то гипотезу, реализовать внешний блог. Иногда эту CMS применяют для организации внутренней базы знаний.
А если компании нужен лендинг, который будет получать рекламный трафик, лучше сделать его на конструкторе или написать самому на чистом PHP. Мы чаще всего делаем так.
— К предыдущему вопросу: если у вас спросят, на чём делать сайт, что вы посоветуете? Здесь давайте рассмотрим две ситуации. Первая: совета просит друг, который занимается, допустим, ремонтом квартир, и не собирается развиваться в сфере веб-разработки. И вторая: ещё один друг интересуется технической стороной вопроса, готов покопаться в теории, что-то изучить.
— Возможно, я повторюсь, но первому другу я посоветую конструкторы. Для данного случая это оптимальное решение с точки зрения финансов. SaaS-платформы берут на себя хостинг, их легко настраивать, поэтому они позволяют сэкономить время и деньги.
А второму другу я бы посоветовал изучать PHP. Этот язык будет трамплином для быстрого входа в разработку. Благодаря простоте он уменьшит нагрузку на силу воли, на мотивацию, потому что человек очень быстро получит результат.
— Давайте поговорим о конкурентах, которые наступают на пятки PHP. Я недавно читал, что новые сайты сейчас редко делают на PHP. Бизнес якобы предпочитает тот же Django, Ruby on Rails, на Node.js и каких-то JavaScript-фреймворках. А PHP-разработчикам якобы остаётся пласт работы, связанный с поддержкой легаси-проектов. Как вы относитесь к такому мнению, согласны с ним?
— Хороший вопрос. Есть такой ресурс — Packegist. На нём публикуют публичные пакеты, созданные PHP-разработчиками. У них есть открытая статистика, которая отражает количество опубликованных пакетов и количество версий. Графики, созданные на основе этой статистики, явно стремятся вверх. То есть количество опубликованных решений постоянно растёт.
Да, сложно вспомнить свежие большие проекты, которые были написаны на PHP и остались на нём. Думаю, можно считать Badoo достаточно свежим, также BlaBlaCar. Новые проекты тоже используют, но это стало случаться реже. Это связано с тем, что приходиться прогибаться под рынок и популярность тех или иных языков.
Думаю, тот же всплеск популярности JavaScript сильно повлиял на этот рынок. Появилось много бэкенд-программистов, которые используют Node.js. И многие компании при выборе стека ориентируются на то, насколько просто можно набрать команду.
— Илья, как вы думаете, какой язык можно назвать главным конкурентом PHP? Может ли этот язык, если он есть, вытеснить PHP из веба?
— Да, думаю, JavaScript становится слишком популярным. И в принципе он может забрать на себя обе части веба: фронтенд и бэкенд.
Другой вопрос в том, что создатель Node.js Райан Даль негативно высказывается о том, как сейчас используется его детище. Поэтому он создал Deno — альтернативный рантайм для JavaScript. Этот проект может сильно поменять ситуацию на рынке.
Если ещё подумать о конкурентах, я вижу тенденцию переучивания PHP-разработчиков в Go.
— Они используют Go в вебе?
— И в вебе тоже. Go сейчас достаточно много применяется в веб-разработке, есть даже фреймворки. Считается, что в Go они дают не слишком явные преимущества, но всё-таки как решения, которые позволяют использовать микросервисную архитектуру, они достаточно соблазнительные.
— А можете сравнить PHP и Python в веб-разработке: сильные и слабые стороны языков, инфраструктуру, инструменты, сообщества?
— Мне, наверное, будет сложно сравнить эти языки. С Python у меня нет большого опыта: проводил ревью, ковырял Django, конечно, из любопытства. Но плотно не работал, так как язык лично для меня не представлял интереса.
Эти языки, в принципе, очень похожи. Они одинаково сильные в веб-разработке. Но Python, как мне кажется, становится интереснее за рамками веба, чем в вебе. А если говорить только о вебе, я не думаю, что стоило бы выбирать Python.
— Илья, скажите пожалуйста, PHP был у вас первым языком программирования?
— На самом деле нет. Первым был C++ в школьные годы, после него был C#, потом я пришёл в PHP.
— А если бы вы сегодня начинали учиться, какой язык выбрали бы?
— Вопрос очень хороший. Есть очень много языков, которые хотелось бы учить и которые я изучаю. Но, если представить, что я начинаю сегодня, наверное, выбрал бы PHP, но построил бы обучение по-другому. Я потерял много времени на отсутствии корректного плана обучения и отсутствии советов.
Начиная учиться сегодня, я бы уделял больше внимания общепрограммистским областям, которые применимы в любом языке. Это и знания архитектуры, и понимание того, как писать чистый код, паттерны, парадигмы. То есть я бы постарался использовать язык исключительно как инструмент, а не полностью сосредотачиваться на нём.
— Илья, последний вопрос, вернее, просьба к вам. Пожалуйста, порекомендуйте что-то полезное людям, которые сегодня начинают изучать программирование независимо от языка.
— Стоит вообще сказать, что эти люди сделали хороший выбор. Есть замечательная книга «Совершенный код», в которой буквально на первых страницах сказано, что далеко не все инженеры, IT-специалисты получали профильное образование. Многие из нас — самоучки, которые пришли в отрасль в зрелом возрасте.
Эта отрасль очень популярная, многие хотят попасть в неё, есть даже какой-то ажиотаж. И попасть в эту отрасль — уже большое достижение. Здесь есть много преимуществ, но также требуется очень много работы. В первую очередь это работа над собой. Нужно быть готовым к тому, что образовательный путь никогда не закончится.
Вам будет часто казаться, что уже удалось достичь какого-то серьёзного уровня. Будете думать, что вы уже стали, например, сеньором. А потом окажется, что впереди ещё очень большой образовательный путь. Это не должно расстраивать. Наоборот, это должно давать драйв и подпитывать уверенность в себе и своих силах.
Уверенность очень важна. Есть много хороших разработчиков с невероятными способностями и навыками, которые оценивают себя ниже, чем есть на самом деле. Поэтому мой совет: не прекращайте учиться, ловите от этого драйв и будьте уверенными в себе!
— Илья, большое спасибо за интересный разговор! Было интересно узнать от вас — практикующего разработчика — о ситуации в мире PHP, о том, что этот язык жив и активно применяется в том числе в больших компаниях. Думаю, это можно зафиксировать в качестве итога нашего разговора.
— Да, действительно, это так. Желаю удачи читателям!
Изучайте PHP на Хекслете — пройдите групповое обучение в рамках профессии. Во время обучения вы выполните четыре проекта, которые останутся в вашем портфолио на GitHub.