- PVSM.RU - https://www.pvsm.ru -

80+ докладов и статей, которые запомнились PHP-сообществу в 2020 году

Недавно мы решили узнать, чем помимо пандемии 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]

1. Что смотрели

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

1.1. Стримы

Назад к оглавлению [12]

Встречаем PHP 8: советы по обновлению, мнения и интервью с разработчиком языка

Небольшой холивар про тем ли путем идет язык, доклад о юзерленде и народное интервью с Никитой Поповым и Дмитрием Стоговым. Трансляцию на 3 каналах смотрело свыше 1100 человек в прямом эфире. Всего записи с ноябрьского митапа набрали более 40к просмотров за все время.

Трейты в PHP — зло? Валентин Удальцов против всех

Холивар на холиварную тему — пожалуй, один из самых удачных онлайн-форматов. Дискуссия состояла из 4 раундов — в каждом разбирали новый кейс. После каждого раунда зрители голосовали за и против трейтов.

Выбрать между PHP и Go просто, достаточно…

Cтрим, в котором те, кто писал на PHP, но перешел на Go, и те, кто пишет в основном на PHP, не холиварили — а написали два сервиса и разбирали их код, параллельно рассказывая про слабые места и границы применимости своего любимого языка.

Рефакторим c Александром Макаровым, Валентином Удальцовым, Валентином Назаровым, Леонидом Корсаковым

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

Митап “Фреймворки и инструменты PHP”

В период пандемии на карте PHP-сообщество появился новый город — ребята из Томска громко заявили о себе, начав собирать смешанные онлайн-офлайн митапы с крутым спикерским составом.

Выше мы представили самые популярные свободные ответы. А вот как распределились голоса по предзаданым позициям
Выше мы представили самые популярные свободные ответы. А вот как распределились голоса по предзаданым позициям

Найти все эти и другие записи можно в архиве стримов и митапов [13] или в списке ютуб-каналов [14] для PHP-разработчика.

1.2. Записи докладов

Назад к оглавлению [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-го.

1.3. Записи докладов на английском

Назад к оглавлению [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]

2. О чем читали

Мы получили 360 уникальных релевантных ответов, по которым можно было восстановить ссылки на материалы, а затем отобрали из них самые упоминаемые.

А вот на закрытые вопросы люди отвечали охотнее)
А вот на закрытые вопросы люди отвечали охотнее)

2.1. Самые упоминаемые материалы

Назад к оглавлению [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], которую удобно читать. 

2.2. Также часто упоминали

Назад к оглавлению [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.

2.3. Переводы

Назад к оглавлению [12]

Улучшения покрытия PHP кода в 2020 году [80] — почему метрики покрытия кода врут (и что с этим делать).

Модернизация старого PHP-приложения [81] — какие антипаттерны ловить в вашем легаси. Больше такого из опыта российских компаний — на PHP Russia этим летом. 

Современный PHP без фреймворков [82] — статья о возможности стать лучше как разработчик.

Понимаем JIT в PHP 8 [83] — как это работает и почему прирост производительности (кажется) не будет колоссальным.

Эволюция PHP — от 5.6 до 8.0 [84] — небольшая шпаргалка с продолжением.

2.4. На английском

Назад к оглавлению [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]

PHP 8: before and after [89]

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