Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Недавно мы решили узнать, чем помимо пандемии 2020-й запомнится пхп-разработчикам — кто что читал, смотрел, над чем работал. Получив свыше 1500 ответов, мы сели их разбирать. Вот что получилось.
Этот материал — часть презентации итогов 2020-го в русскоговорящем сообществе. Больше данных — рейтинги компаний, популярность фреймворков в рабочих проектах и не только, вы можете найти в видеоверсии и на этом сайте.
Как мы получили данные и кто давал ответы
В конце декабря 2020 мы сверстали форму из 14 вопросов: часть подразумевала свободный ответ, часть — выбор из вариантов (подробнее тут). Ссылку на форму мы раскидали по чатам и каналам для PHP-разработчиков в телеграме, а также сделали анонсы в твиттере, на Хабре и запустили небольшую таргетированную компанию в ВК. До конца января 2021 мы принимали анонимные ответы.
1506 респондентов заполнили опросник целиком или частично.
44% определили себя как мидлы
24% — как сеньоры
13% — как тимлиды
Структура поста
1.1. Популярные стримы
1.2 Записи докладов разных лет, которые запомнились
1.3. Доклады на английском, которые запомнились
2.1. Самые упоминаемые статьи и книги
2.2. Часто упоминаемые статьи
2.3. Переводы статей, которые запомнились
2.4. Статьи на английском
1. Что смотрели
Мы получили свыше 240 релевантных свободных ответов, по которым можно было восстановить ссылки на материалы, а затем отобрали самые упоминаемые.
1.1. Стримы
Назад к оглавлению
Встречаем PHP 8: советы по обновлению, мнения и интервью с разработчиком языка
Небольшой холивар про тем ли путем идет язык, доклад о юзерленде и народное интервью с Никитой Поповым и Дмитрием Стоговым. Трансляцию на 3 каналах смотрело свыше 1100 человек в прямом эфире. Всего записи с ноябрьского митапа набрали более 40к просмотров за все время.
Трейты в PHP — зло? Валентин Удальцов против всех
Холивар на холиварную тему — пожалуй, один из самых удачных онлайн-форматов. Дискуссия состояла из 4 раундов — в каждом разбирали новый кейс. После каждого раунда зрители голосовали за и против трейтов.
Выбрать между PHP и Go просто, достаточно…
Cтрим, в котором те, кто писал на PHP, но перешел на Go, и те, кто пишет в основном на PHP, не холиварили — а написали два сервиса и разбирали их код, параллельно рассказывая про слабые места и границы применимости своего любимого языка.
Рефакторим c Александром Макаровым, Валентином Удальцовым, Валентином Назаровым, Леонидом Корсаковым
Один репозиторий на гитхабе, два диаметрально противоположных подхода к рефакторингу. И кот.
Митап “Фреймворки и инструменты PHP”
В период пандемии на карте PHP-сообщество появился новый город — ребята из Томска громко заявили о себе, начав собирать смешанные онлайн-офлайн митапы с крутым спикерским составом.
Найти все эти и другие записи можно в архиве стримов и митапов или в списке ютуб-каналов для PHP-разработчика.
1.2. Записи докладов
Назад к оглавлению
Cycle ORM и графы — доклад Антона Титова с онлайн-конференции PHP fwdays'20. Отличия подходов ActiveRecord и DataMapper. Решение проблемы топологической сортировки зависимостей ORM, используя итеративную сортировку в глубину.
Самое интересное в PHP 8 — JIT, Preloading и FFI и не только в докладе Дмитрий Стогова с PHP Russia 2019.
Поговорим про код — доклад Александра Макарова с онлайн-конференции PHP fwdays'20. Разбор принципов, которые позволяют писать код, который ломается меньше.
Поиск и устранение утечек памяти в PHP — Валентин Удальцов показывает, как искать проблему и как фиксить на примере утечки, обнаруженной в Symfony–компоненте.
PHP: Неправильный путь — Кирилл Несмеянов о том, с чего начать изучение PHP, как качать свой скилл и что будет с языком дальше. Запись с митапа в Иваново в конце 2019-го.
30+ примеров угроз: формы, файлы, заголовки, браузер, консоль, БД — Александр Макаров про безопасность в веб-разработке: от базовых вещей до особенностей PHP. Запись с казанского PHP-митапа в конце 2019-го.
Разработка гибридных PHP/Go-приложений с использованием RoadRunner — доклад Антона Титова с конференции PHP Russia. Как демонизировать PHP-приложение для повышения производительности.
MySQL, который мы не знаем — доклад Виктор Зинченко с онлайн-конференции PHP fwdays'20. Как организовать мониторинг MySQL с помощью Prometheus, Grafana и что делать с медленными запросами.
Рефакторинг PHP-кода с применением DDD — Виталий Чирков на примерах показывает, какие приёмы сработали в его случае. Запись с митапа в офисе Badoo в феврале 2020-го.
Грамотное ООП: организация надёжной бизнес-логики — доклад Дмитрия Елисеева с конференции PHP Russia 2019. Тренируемся в объектно-ориентированной декомпозиции для грамотного проектирования сущностей по обязанностям и учимся сочинять ко этому быстрые, удобные и надёжные юнит-тесты.
Быстрый способ разобраться с легаси и начать жить — Сергей Жук про то, как превратить работу с легаси в увлекательное приключение. Или все переписать? Или и так сойдет? Запись с краснодарского PHP-митапа в ноябре 2020-го.
Зачем и как писать качественные Unit-тесты — Алексей Солодкий рассказывает об основных концепциях unit-тестирования и том, как поддерживать качество тестов на проекте. Запись с митапа в офисе Badoo в марте 2019-го.
Как контрибьютить в Symfony и зачем это делать — запись с митапа в рамках PHP Russia 2019.
От Doctrine ORM к CQRS за 20 минут — Дмитрий Симушев о том, что делать, когда хаки с оптимизацией доктрины больше не работают. Запись с митапа в офисе Skyeng летом 2019-го.
Очень странные дела на PHP — Кирилл Несмеянов о применении PHP за гранью веб-разработки. Запись с онлайн-митапа весной 2020-го.
Перенос проекта на PHP 7: от сбора фактов до результата — Максим Шамаев о том, что делать, когда к вам придут и предложат разобраться с очень старым кодом. Запись с онлайн-митапа весной 2020-го.
Различные эволюции от старта до релиза в PHP продукте — видео с онлайн-конференции PHP fwdays'20. Александр Савченко про None-Breaking change development , cross-stack контракты, Trunk Based development и много чего еще.
Строим Highload на PHP и Redis — Михаил Мазеин про то, что делать с очередями из миллиона сообщений. Запись с нижегородского PHP-митапа в конце 2019-го.
Big Ball of Mud и другие проблемы монолита, с которыми мы справились — Юлия Николаева о модульном монолите как альтернативе микросервисам. Запись с онлайн-митапа весной 2020-го.
1.3. Записи докладов на английском
Назад к оглавлению
Effortless Software Development
Package Design Principles in Practice
Queues, busses and the messenger component
Getting the most out of the PHP 7 engine — the example of Symfony
More Than a Query Language: SQL in the 21st Century
2. О чем читали
Мы получили 360 уникальных релевантных ответов, по которым можно было восстановить ссылки на материалы, а затем отобрали из них самые упоминаемые.
2.1. Самые упоминаемые материалы
Назад к оглавлению
Мне не нравится то, во что превращается PHP — мощное заявление от @AlexLeonov, которое получило развитие на стриме к выходу PHP 8.
PHP 8 — что нового? — обзор нововведений от @rela589n, вышедший за день до релиза 8-ки.
Регулярные PHP-дайджесты от @pronskiy — упоминались разные выпуски. Кстати, с этого года они доступны в виде стримов на ютубе.
Архитектура сложных веб-приложений. С примерами на Laravel — перевод книги @Adelf перевел он сам и выложил для скачивания на GitHub.
Собеседование php-developer: вопросы и ответы — подборка, которую составил @Nidhognit чтобы подготовиться к собеседованиям. Спасибо, что поделился с сообществом!
Что не так с трейтами? — превью к стриму, где в итоге победили трейты и @SerafimArts :)
Сейчас я буду убеждать вас использовать статический анализ в PHP — расшифровка подкаста “Между скобок”, в котором @seregazhuk и @vudaltsov обсуждают Psalm и не только.
Зачем ограничивать наследование с помощью final? — материал из конца 2019 от @parshikov_pavel который нашел благодарного читателя в 2020-м.
Куда катится PHP, а также про Yii и другие фреймворки — презентация от @SamDark, которую удобно читать.
2.2. Также часто упоминали
Назад к оглавлению
Aсинхронный PHP — расшифровка доклада Антона Шабовты с PHP Russia 2019.
Как переиспользовать код с бандлами Symfony 5? — цикл статей от Романа Науменко.
Как я пытался улучшить Laravel, а сделал только хуже — “не метод, а монстр” или история одного коммита.
Ловушки для современного PHP — еще одно размышление о судьбах PHP, если понравились материалы Альберта Степанцева и Саши Макарова, точно зайдет.
Занятное мини-интервью с основными контрибьюторами PHP 8 — частичная расшифровка стрима с Никитой Поповым и Дмитрием Стоговым. Продолжение недавно вышло тут.
«В карантин нагрузка выросла в 5 раз, но мы были готовы» — та самая история от Lingualeo. 685 комментариев под постом!
Теперь я не могу сделать даже маленький сайт — мини-обзор того, что (не) должен знать современный веб-разработчик.
Среда разработки PHP на базе Docker — как быстро создать на локальной машине универсальную среду разработки.
Мёртвый код: найти и обезвредить — чтобы что-то добавить, нужно что-то удалить.
У Вас проблемы с legacy — значит, Вам повезло! Распил монолита на PHP - название говорит само за себя
Spiral: высокопроизводительный PHP/Go фреймворк - обзор от автора инструмента
Почему стоит попробовать Drupal 9 - если вы ищете CMS.
Отпусти меня, PHP - ведущий телеграм-канала PHP Today делится болью.
НЕкостыль: gRPC-клиент на PHP в продакшене — боевое решение, которое, к тому же, легко пишется.
Уязвимости PHP-фреймворков — сколько из них знаешь ты?
FFI: пишем на Rust в PHP-программе — материал из осени 2019-го, который вспоминают до сих пор.
DDD на практике — туториал из 2018-го, который был актуален и в 2020.
2.3. Переводы
Назад к оглавлению
Улучшения покрытия PHP кода в 2020 году — почему метрики покрытия кода врут (и что с этим делать).
Модернизация старого PHP-приложения — какие антипаттерны ловить в вашем легаси. Больше такого из опыта российских компаний — на PHP Russia этим летом.
Современный PHP без фреймворков — статья о возможности стать лучше как разработчик.
Понимаем JIT в PHP 8 — как это работает и почему прирост производительности (кажется) не будет колоссальным.
Эволюция PHP — от 5.6 до 8.0 — небольшая шпаргалка с продолжением.
2.4. На английском
Назад к оглавлению
It’s not legacy code — it’s PHP
Object Oriented Done Right
Laravel beyond CRUD: the next chapter
My journey into event sourcing
PHP 8: before and after
Commits are snapshots, not diffs
Modular Monolith: A Primer
p.s. Спасибо всем, кто поделился тем, что читал и смотрел в 2020-м!
p.p.s. Отдельное и огромное спасибо @jm_sub и @alyssashch за помощь в обработке данных.