- PVSM.RU - https://www.pvsm.ru -
Недавно мы решили узнать, чем помимо пандемии 2020-й запомнится пхп-разработчикам — кто что читал, смотрел, над чем работал. Получив свыше 1500 ответов, мы сели их разбирать. Вот что получилось.
Этот материал — часть презентации итогов 2020-го в русскоговорящем сообществе. Больше данных — рейтинги компаний, популярность фреймворков в рабочих проектах и не только, вы можете найти в видеоверсии [1] и на этом сайте [2].
В конце декабря 2020 мы сверстали форму из 14 вопросов: часть подразумевала свободный ответ, часть — выбор из вариантов (подробнее тут [3]). Ссылку на форму мы раскидали по чатам и каналам для PHP-разработчиков [4] в телеграме, а также сделали анонсы в твиттере, на Хабре и запустили небольшую таргетированную компанию в ВК. До конца января 2021 мы принимали анонимные ответы.
1506 респондентов заполнили опросник целиком или частично.
44% определили себя как мидлы
24% — как сеньоры
13% — как тимлиды
Структура поста
1.1. Популярные стримы [5]
1.2 Записи докладов разных лет, которые запомнились [6]
1.3. Доклады на английском, которые запомнились [7]
2.1. Самые упоминаемые статьи и книги [8]
2.2. Часто упоминаемые статьи [9]
2.3. Переводы статей, которые запомнились [10]
2.4. Статьи на английском [11]
Мы получили свыше 240 релевантных свободных ответов, по которым можно было восстановить ссылки на материалы, а затем отобрали самые упоминаемые.
Назад к оглавлению [12]
Встречаем PHP 8: советы по обновлению, мнения и интервью с разработчиком языка
Небольшой холивар про тем ли путем идет язык, доклад о юзерленде и народное интервью с Никитой Поповым и Дмитрием Стоговым. Трансляцию на 3 каналах смотрело свыше 1100 человек в прямом эфире. Всего записи с ноябрьского митапа набрали более 40к просмотров за все время.
Трейты в PHP — зло? Валентин Удальцов против всех
Холивар на холиварную тему — пожалуй, один из самых удачных онлайн-форматов. Дискуссия состояла из 4 раундов — в каждом разбирали новый кейс. После каждого раунда зрители голосовали за и против трейтов.
Выбрать между PHP и Go просто, достаточно…
Cтрим, в котором те, кто писал на PHP, но перешел на Go, и те, кто пишет в основном на PHP, не холиварили — а написали два сервиса и разбирали их код, параллельно рассказывая про слабые места и границы применимости своего любимого языка.
Рефакторим c Александром Макаровым, Валентином Удальцовым, Валентином Назаровым, Леонидом Корсаковым
Один репозиторий на гитхабе, два диаметрально противоположных подхода к рефакторингу. И кот.
Митап “Фреймворки и инструменты PHP”
В период пандемии на карте PHP-сообщество появился новый город — ребята из Томска громко заявили о себе, начав собирать смешанные онлайн-офлайн митапы с крутым спикерским составом.

Найти все эти и другие записи можно в архиве стримов и митапов [13] или в списке ютуб-каналов [14] для PHP-разработчика.
Назад к оглавлению [12]
Cycle ORM и графы [15] — доклад Антона Титова с онлайн-конференции PHP fwdays'20. Отличия подходов ActiveRecord и DataMapper. Решение проблемы топологической сортировки зависимостей ORM, используя итеративную сортировку в глубину.
Самое интересное в PHP 8 [16] — JIT, Preloading и FFI и не только в докладе Дмитрий Стогова с PHP Russia 2019.
Поговорим про код [17] — доклад Александра Макарова с онлайн-конференции PHP fwdays'20. Разбор принципов, которые позволяют писать код, который ломается меньше.
Поиск и устранение утечек памяти в PHP [18] — Валентин Удальцов показывает, как искать проблему и как фиксить на примере утечки, обнаруженной в Symfony–компоненте.
PHP: Неправильный путь [19] — Кирилл Несмеянов о том, с чего начать изучение PHP, как качать свой скилл и что будет с языком дальше. Запись с митапа в Иваново в конце 2019-го.
30+ примеров угроз: формы, файлы, заголовки, браузер, консоль, БД [20] — Александр Макаров про безопасность в веб-разработке: от базовых вещей до особенностей PHP. Запись с казанского PHP-митапа в конце 2019-го.
Разработка гибридных PHP/Go-приложений с использованием RoadRunner [21] — доклад Антона Титова с конференции PHP Russia. Как демонизировать PHP-приложение для повышения производительности.
MySQL, который мы не знаем [22] — доклад Виктор Зинченко с онлайн-конференции PHP fwdays'20. Как организовать мониторинг MySQL с помощью Prometheus, Grafana и что делать с медленными запросами.
Рефакторинг PHP-кода с применением DDD [23] — Виталий Чирков на примерах показывает, какие приёмы сработали в его случае. Запись с митапа в офисе Badoo в феврале 2020-го.
Грамотное ООП: организация надёжной бизнес-логики [24] — доклад Дмитрия Елисеева с конференции PHP Russia 2019. Тренируемся в объектно-ориентированной декомпозиции для грамотного проектирования сущностей по обязанностям и учимся сочинять ко этому быстрые, удобные и надёжные юнит-тесты.
Быстрый способ разобраться с легаси и начать жить [25] — Сергей Жук про то, как превратить работу с легаси в увлекательное приключение. Или все переписать? Или и так сойдет? Запись с краснодарского PHP-митапа в ноябре 2020-го.

Зачем и как писать качественные Unit-тесты [26] — Алексей Солодкий рассказывает об основных концепциях unit-тестирования и том, как поддерживать качество тестов на проекте. Запись с митапа в офисе Badoo в марте 2019-го.
Как контрибьютить в Symfony и зачем это делать [27] — запись с митапа в рамках PHP Russia 2019.
От Doctrine ORM к CQRS за 20 минут [28] — Дмитрий Симушев о том, что делать, когда хаки с оптимизацией доктрины больше не работают. Запись с митапа в офисе Skyeng летом 2019-го.
Очень странные дела на PHP [29] — Кирилл Несмеянов о применении PHP за гранью веб-разработки. Запись с онлайн-митапа весной 2020-го.
Перенос проекта на PHP 7: от сбора фактов до результата [30] — Максим Шамаев о том, что делать, когда к вам придут и предложат разобраться с очень старым кодом. Запись с онлайн-митапа весной 2020-го.
Различные эволюции от старта до релиза в PHP продукте [31] — видео с онлайн-конференции PHP fwdays'20. Александр Савченко про None-Breaking change development , cross-stack контракты, Trunk Based development и много чего еще.
Строим Highload на PHP и Redis [32] — Михаил Мазеин про то, что делать с очередями из миллиона сообщений. Запись с нижегородского PHP-митапа в конце 2019-го.
Big Ball of Mud и другие проблемы монолита, с которыми мы справились [33] — Юлия Николаева о модульном монолите как альтернативе микросервисам. Запись с онлайн-митапа весной 2020-го.
Назад к оглавлению [12]
Effortless Software Development [34]
Package Design Principles in Practice [35]
Queues, busses and the messenger component [36]
Getting the most out of the PHP 7 engine — the example of Symfony [37]
More Than a Query Language: SQL in the 21st Century [38]
Мы получили 360 уникальных релевантных ответов, по которым можно было восстановить ссылки на материалы, а затем отобрали из них самые упоминаемые.

Назад к оглавлению [12]
Мне не нравится то, во что превращается PHP [39] — мощное заявление от @AlexLeonov [40], которое получило развитие [41] на стриме к выходу PHP 8.
PHP 8 — что нового? [42] — обзор нововведений от @rela589n [43], вышедший за день до релиза 8-ки.
Регулярные PHP-дайджесты [44] от @pronskiy [45] — упоминались разные выпуски. Кстати, с этого года они доступны в виде стримов [46] на ютубе.
Архитектура сложных веб-приложений. С примерами на Laravel [47] — перевод книги @Adelf [48] перевел он сам и выложил для скачивания на GitHub.
Собеседование php-developer: вопросы и ответы [49] — подборка, которую составил @Nidhognit [50] чтобы подготовиться к собеседованиям. Спасибо, что поделился с сообществом!
Что не так с трейтами? [51] — превью к стриму, где в итоге победили [52] трейты и @SerafimArts [53] :)
Сейчас я буду убеждать вас использовать статический анализ в PHP [54] — расшифровка подкаста “Между скобок [55]”, в котором @seregazhuk [56] и @vudaltsov [57] обсуждают Psalm и не только.
Зачем ограничивать наследование с помощью final? [58] — материал из конца 2019 от @parshikov_pavel [59] который нашел благодарного читателя в 2020-м.
Куда катится PHP, а также про Yii и другие фреймворки [60] — презентация от @SamDark [61], которую удобно читать.
Назад к оглавлению [12]
Aсинхронный PHP [62] — расшифровка доклада Антона Шабовты с PHP Russia 2019.
Как переиспользовать код с бандлами Symfony 5? [63] — цикл статей от Романа Науменко.
Как я пытался улучшить Laravel, а сделал только хуже [64] — “не метод, а монстр” или история одного коммита.
Ловушки для современного PHP [65] — еще одно размышление о судьбах PHP, если понравились материалы Альберта Степанцева и Саши Макарова, точно зайдет.
Занятное мини-интервью с основными контрибьюторами PHP 8 [66] — частичная расшифровка стрима с Никитой Поповым и Дмитрием Стоговым. Продолжение недавно вышло тут [67].
«В карантин нагрузка выросла в 5 раз, но мы были готовы» [68] — та самая история от Lingualeo. 685 комментариев под постом!
Теперь я не могу сделать даже маленький сайт [69] — мини-обзор того, что (не) должен знать современный веб-разработчик.
Среда разработки PHP на базе Docker [70] — как быстро создать на локальной машине универсальную среду разработки.
Мёртвый код: найти и обезвредить [71] — чтобы что-то добавить, нужно что-то удалить.
У Вас проблемы с legacy — значит, Вам повезло! Распил монолита на PHP [72] - название говорит само за себя
Spiral: высокопроизводительный PHP/Go фреймворк [73] - обзор от автора инструмента
Почему стоит попробовать Drupal 9 [74] - если вы ищете CMS.
Отпусти меня, PHP [75] - ведущий телеграм-канала PHP Today делится болью.
НЕкостыль: gRPC-клиент на PHP в продакшене [76] — боевое решение, которое, к тому же, легко пишется.
Уязвимости PHP-фреймворков [77] — сколько из них знаешь ты?
FFI: пишем на Rust в PHP-программе [78] — материал из осени 2019-го, который вспоминают до сих пор.
DDD на практике [79] — туториал из 2018-го, который был актуален и в 2020.
Назад к оглавлению [12]
Улучшения покрытия PHP кода в 2020 году [80] — почему метрики покрытия кода врут (и что с этим делать).
Модернизация старого PHP-приложения [81] — какие антипаттерны ловить в вашем легаси. Больше такого из опыта российских компаний — на PHP Russia этим летом.
Современный PHP без фреймворков [82] — статья о возможности стать лучше как разработчик.
Понимаем JIT в PHP 8 [83] — как это работает и почему прирост производительности (кажется) не будет колоссальным.
Эволюция PHP — от 5.6 до 8.0 [84] — небольшая шпаргалка с продолжением.
Назад к оглавлению [12]
It’s not legacy code — it’s PHP [85]
Object Oriented Done Right [86]
Laravel beyond CRUD: the next chapter [87]
My journey into event sourcing [88]
Commits are snapshots, not diffs [90]
Modular Monolith: A Primer [91]
p.s. Спасибо всем, кто поделился тем, что читал и смотрел в 2020-м!
p.p.s. Отдельное и огромное спасибо @jm_sub [92] и @alyssashch [93] за помощь в обработке данных.
Автор: Алексей Корнеев
Источник [94]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/php-2/361982
Ссылки в тексте:
[1] видеоверсии: https://www.youtube.com/watch?v=jNNm8DEtvzQ
[2] на этом сайте: https://phpcommunity.ru/brave-new-2021
[3] тут: https://habr.com/ru/company/skyeng/blog/535894/
[4] чатам и каналам для PHP-разработчиков: https://habr.com/ru/company/skyeng/blog/534758/
[5] Популярные стримы: #%D1%81%D1%82%D1%80%D0%B8%D0%BC%D1%8B
[6] Записи докладов разных лет, которые запомнились: #%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D0%B8%D0%B4%D0%BE%D0%BA%D0%BB%D0%B0%D0%B4%D0%BE%D0%B2
[7] Доклады на английском, которые запомнились: #envid
[8] Самые упоминаемые статьи и книги: #%D1%82%D0%BE%D0%BF%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%BE%D0%B2
[9] Часто упоминаемые статьи: #%D1%82%D0%BE%D0%B6%D0%B5%D1%83%D0%BF%D0%BE%D0%BC%D0%B8%D0%BD%D0%B0%D0%BB%D0%B8
[10] Переводы статей, которые запомнились: #%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D1%8B
[11] Статьи на английском: #entext
[12] Назад к оглавлению: #%D0%BE%D0%B3%D0%BB%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5
[13] архиве стримов и митапов: https://phpcommunity.ru/#!/tab/242798169-2
[14] ютуб-каналов: https://phpcommunity.ru/#chat
[15] Cycle ORM и графы: https://youtu.be/o1wzzSoJJHg
[16] Самое интересное в PHP 8: https://www.youtube.com/watch?v=7UOWus-5yxg
[17] Поговорим про код: https://www.youtube.com/watch?v=SKwchYgaJN8
[18] Поиск и устранение утечек памяти в PHP: https://www.youtube.com/watch?v=NNMp-97rk9c
[19] PHP: Неправильный путь: https://www.youtube.com/watch?v=XUkRzUNVrIk
[20] 30+ примеров угроз: формы, файлы, заголовки, браузер, консоль, БД: https://www.youtube.com/watch?v=KUaUlAqAf_U
[21] Разработка гибридных PHP/Go-приложений с использованием RoadRunner: https://www.youtube.com/watch?v=RUm94xCaXMo
[22] MySQL, который мы не знаем: https://www.youtube.com/watch?v=-vu4EbHZ1wY
[23] Рефакторинг PHP-кода с применением DDD: https://www.youtube.com/watch?v=9xoP9GCUoDU
[24] Грамотное ООП: организация надёжной бизнес-логики: https://www.youtube.com/watch?v=6tL1XOywgUc
[25] Быстрый способ разобраться с легаси и начать жить: https://youtu.be/Uezd5ocJQ9I?t=421
[26] Зачем и как писать качественные Unit-тесты: https://youtu.be/Rz4S0v7K7Ho
[27] Как контрибьютить в Symfony и зачем это делать: https://www.youtube.com/watch?v=fuchthdSERk
[28] От Doctrine ORM к CQRS за 20 минут: https://www.youtube.com/watch?v=LmiSpznZWTU
[29] Очень странные дела на PHP: https://www.youtube.com/watch?v=1ZO1wR4rCCQ
[30] Перенос проекта на PHP 7: от сбора фактов до результата: https://www.youtube.com/watch?v=MX7Wbt9rCsg
[31] Различные эволюции от старта до релиза в PHP продукте: https://www.youtube.com/watch?v=ORQ0lyE0LMI
[32] Строим Highload на PHP и Redis: https://www.youtube.com/watch?v=XA557BQk-HM
[33] Big Ball of Mud и другие проблемы монолита, с которыми мы справились: https://youtu.be/gna4Ynz1YNI
[34] Effortless Software Development: https://www.youtube.com/watch?v=zcsH98tdaeM
[35] Package Design Principles in Practice: https://www.youtube.com/watch?v=JKt7hF_nxBM
[36] Queues, busses and the messenger component: https://www.youtube.com/watch?v=HlwDRvofGO4
[37] Getting the most out of the PHP 7 engine — the example of Symfony: https://www.youtube.com/watch?v=hZ98a4kU-us
[38] More Than a Query Language: SQL in the 21st Century: https://www.youtube.com/watch?v=3yeoP7fMQ0M
[39] Мне не нравится то, во что превращается PHP: https://habr.com/ru/post/511266/
[40] @AlexLeonov: https://www.pvsm.ru/users/alexleonov
[41] развитие: https://www.youtube.com/watch?v=T_0iydEc9mM&t=5966s
[42] PHP 8 — что нового?: https://habr.com/ru/post/526220/
[43] @rela589n: https://www.pvsm.ru/users/rela589n
[44] Регулярные PHP-дайджесты: https://habr.com/ru/users/pronskiy/posts/
[45] @pronskiy: https://www.pvsm.ru/users/pronskiy
[46] стримов: https://www.youtube.com/c/PHPPoint/videos
[47] Архитектура сложных веб-приложений. С примерами на Laravel: https://github.com/adelf/acwa_book_ru
[48] @Adelf: https://www.pvsm.ru/users/adelf
[49] Собеседование php-developer: вопросы и ответы: https://habr.com/ru/post/520472/
[50] @Nidhognit: https://www.pvsm.ru/users/nidhognit
[51] Что не так с трейтами?: https://habr.com/ru/company/skyeng/blog/534152/
[52] победили: https://www.youtube.com/watch?v=xoEPNiMtVps
[53] @SerafimArts: https://www.pvsm.ru/users/serafimarts
[54] Сейчас я буду убеждать вас использовать статический анализ в PHP: https://habr.com/ru/company/skyeng/blog/529350/
[55] Между скобок: https://soundcloud.com/between-braces
[56] @seregazhuk: https://www.pvsm.ru/users/seregazhuk
[57] @vudaltsov: https://www.pvsm.ru/users/vudaltsov
[58] Зачем ограничивать наследование с помощью final?: https://habr.com/ru/post/482154/
[59] @parshikov_pavel: https://www.pvsm.ru/users/parshikov_pavel
[60] Куда катится PHP, а также про Yii и другие фреймворки: https://slides.rmcreative.ru/2013/yii-frameworks-and-where-php-is-heading-to/#/19
[61] @SamDark: https://www.pvsm.ru/users/samdark
[62] Aсинхронный PHP: https://habr.com/ru/company/oleg-bunin/blog/487258/
[63] Как переиспользовать код с бандлами Symfony 5?: https://habr.com/ru/post/498134/
[64] Как я пытался улучшить Laravel, а сделал только хуже: https://habr.com/ru/post/534378/
[65] Ловушки для современного PHP: https://habr.com/ru/post/535132/
[66] Занятное мини-интервью с основными контрибьюторами PHP 8: https://habr.com/ru/company/skyeng/blog/532146/
[67] тут: https://habr.com/ru/company/skyeng/blog/543794/
[68] «В карантин нагрузка выросла в 5 раз, но мы были готовы»: https://habr.com/ru/company/lingualeo/blog/515530/
[69] Теперь я не могу сделать даже маленький сайт: https://habr.com/ru/post/526474/
[70] Среда разработки PHP на базе Docker: https://habr.com/ru/post/519500/
[71] Мёртвый код: найти и обезвредить: https://habr.com/ru/company/badoo/blog/515472/
[72] У Вас проблемы с legacy — значит, Вам повезло! Распил монолита на PHP: https://habr.com/ru/post/536238/
[73] Spiral: высокопроизводительный PHP/Go фреймворк: https://habr.com/ru/post/495224/
[74] Почему стоит попробовать Drupal 9: https://niklan.net/blog/215
[75] Отпусти меня, PHP: https://habr.com/ru/post/532824/
[76] НЕкостыль: gRPC-клиент на PHP в продакшене: https://habr.com/ru/company/skyeng/blog/531676/
[77] Уязвимости PHP-фреймворков: https://habr.com/ru/company/dsec/blog/509980/
[78] FFI: пишем на Rust в PHP-программе: https://habr.com/ru/post/455614/
[79] DDD на практике: https://habr.com/ru/post/334126/
[80] Улучшения покрытия PHP кода в 2020 году: https://habr.com/ru/company/oleg-bunin/blog/519080/
[81] Модернизация старого PHP-приложения: https://habr.com/ru/company/mailru/blog/515778/
[82] Современный PHP без фреймворков: https://habr.com/ru/company/mailru/blog/352122/
[83] Понимаем JIT в PHP 8: https://habr.com/ru/company/otus/blog/509598/
[84] Эволюция PHP — от 5.6 до 8.0: https://habr.com/ru/company/otus/blog/524270/
[85] It’s not legacy code — it’s PHP: https://medium.com/vimeo-engineering-blog/its-not-legacy-code-it-s-php-1f0ee0462580
[86] Object Oriented Done Right: https://front-line-php.com/object-oriented
[87] Laravel beyond CRUD: the next chapter: https://stitcher.io/blog/laravel-beyond-crud
[88] My journey into event sourcing: https://stitcher.io/blog/my-journey-into-event-sourcing
[89] PHP 8: before and after: https://stitcher.io/blog/php-8-before-and-after
[90] Commits are snapshots, not diffs: https://github.blog/2020-12-17-commits-are-snapshots-not-diffs/
[91] Modular Monolith: A Primer: http://www.kamilgrzybek.com/design/modular-monolith-primer/
[92] @jm_sub: https://www.pvsm.ru/users/jm_sub
[93] @alyssashch: https://www.pvsm.ru/users/alyssashch
[94] Источник: https://habr.com/ru/post/544180/?utm_source=habrahabr&utm_medium=rss&utm_campaign=544180
Нажмите здесь для печати.