HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Мы попросили опытных PHP-программистов рассказать, какие инструменты они используют для работы прямо сейчас. Специалисты ответили, какие предпочитают IDE и редакторы, дебаггеры и веб-фреймворки, инструменты тестирования и виртуализации. Опрос не претендует на репрезентативность, но позволяет понять, какие инструменты выбирают профессиональные PHP-разработчики.</p>
1 <p>Мы попросили опытных PHP-программистов рассказать, какие инструменты они используют для работы прямо сейчас. Специалисты ответили, какие предпочитают IDE и редакторы, дебаггеры и веб-фреймворки, инструменты тестирования и виртуализации. Опрос не претендует на репрезентативность, но позволяет понять, какие инструменты выбирают профессиональные PHP-разработчики.</p>
2 <h2>Содержание</h2>
2 <h2>Содержание</h2>
3 <ul><li><a>Евгений Вольф, Senior backend developer в W-Group, опыт коммерческой разработки более 15 лет</a></li>
3 <ul><li><a>Евгений Вольф, Senior backend developer в W-Group, опыт коммерческой разработки более 15 лет</a></li>
4 <li><a>Борис Коробков, веб-разработчик, автор YouTube-канала о жизни программиста в Германии</a></li>
4 <li><a>Борис Коробков, веб-разработчик, автор YouTube-канала о жизни программиста в Германии</a></li>
5 <li><a>Алексей Уколов, технический директор в компании "Айтигро", занимается веб-разработкой более 10 лет</a></li>
5 <li><a>Алексей Уколов, технический директор в компании "Айтигро", занимается веб-разработкой более 10 лет</a></li>
6 <li><a>Максим Фёдоров, PHP-программист, "Яндекс.Еда"</a></li>
6 <li><a>Максим Фёдоров, PHP-программист, "Яндекс.Еда"</a></li>
7 <li><a>Антон Морев, CTO в Wormsoft</a></li>
7 <li><a>Антон Морев, CTO в Wormsoft</a></li>
8 <li><a>Искандер Шарипов, старший программист-разработчик, команда backend инфраструктуры "ВКонтакте"</a></li>
8 <li><a>Искандер Шарипов, старший программист-разработчик, команда backend инфраструктуры "ВКонтакте"</a></li>
9 <li><a>Илья Логинов, Senior PHP developer</a></li>
9 <li><a>Илья Логинов, Senior PHP developer</a></li>
10 </ul><h2>Евгений Вольф, Senior backend developer в W-Group, опыт коммерческой разработки более 15 лет</h2>
10 </ul><h2>Евгений Вольф, Senior backend developer в W-Group, опыт коммерческой разработки более 15 лет</h2>
11 <p><em><a>Евгений Вольф</a></em>,<a>W-Group</a></p>
11 <p><em><a>Евгений Вольф</a></em>,<a>W-Group</a></p>
12 <p><em>Какой редактор или IDE вы используете?</em></p>
12 <p><em>Какой редактор или IDE вы используете?</em></p>
13 <p>Использую PhpStorm (оплаченная коммерческая версия), так как это, пожалуй, единственная на сегодняшний день полноценная IDE, она всегда идёт в ногу со временем, в том числе поддерживает все основные фреймворки (Symfony, Laravel, etc.), имеет поддержку новых версий PHP по мере их выхода и так далее.</p>
13 <p>Использую PhpStorm (оплаченная коммерческая версия), так как это, пожалуй, единственная на сегодняшний день полноценная IDE, она всегда идёт в ногу со временем, в том числе поддерживает все основные фреймворки (Symfony, Laravel, etc.), имеет поддержку новых версий PHP по мере их выхода и так далее.</p>
14 <p>Раньше активно пользовался NetBeans в виду его бесплатности и хорошей поддержки нашей кодовой базы, но в какой-то момент NetBeans начал сильно отставать от выхода новых версий PHP, а потом Oracle и вовсе отказался от его развития, передав его в руки Apache Software foundation, которые, в свою очередь, разумеется начали его развивать в сторону поддержки Java в первую очередь. По итогу, на данный момент NetBeans в некоторой степени можно назвать лучшей бесплатной IDE, но она очень сильно проигрывает конкурентам как по функционалу, так и по поддержке современных версий PHP.</p>
14 <p>Раньше активно пользовался NetBeans в виду его бесплатности и хорошей поддержки нашей кодовой базы, но в какой-то момент NetBeans начал сильно отставать от выхода новых версий PHP, а потом Oracle и вовсе отказался от его развития, передав его в руки Apache Software foundation, которые, в свою очередь, разумеется начали его развивать в сторону поддержки Java в первую очередь. По итогу, на данный момент NetBeans в некоторой степени можно назвать лучшей бесплатной IDE, но она очень сильно проигрывает конкурентам как по функционалу, так и по поддержке современных версий PHP.</p>
15 <p>В плане редакторов, мне нравятся Atom, Visual studio code и, пожалуй, Notepad++. Обычно использую их для работы уровня "что-то поправить". С этой задачей они справляются отлично, выглядят приятно, относительно мало потребляют ресурсов, имеют подсветку синтаксиса, встроенную консоль и работу с Git'ом.</p>
15 <p>В плане редакторов, мне нравятся Atom, Visual studio code и, пожалуй, Notepad++. Обычно использую их для работы уровня "что-то поправить". С этой задачей они справляются отлично, выглядят приятно, относительно мало потребляют ресурсов, имеют подсветку синтаксиса, встроенную консоль и работу с Git'ом.</p>
16 <p><em>Что применяете для мониторинга производительности приложений?</em></p>
16 <p><em>Что применяете для мониторинга производительности приложений?</em></p>
17 <p>Для мониторинга производительности приложений применяем top/htop. Это программы для линукса, которые показывают текущую нагрузку на сервер. Также применяем встроенные в Google Chrome средства для мониторинга производительности, скорости загрузки и так далее, и прочие инструменты, доступные в Google Chrome.</p>
17 <p>Для мониторинга производительности приложений применяем top/htop. Это программы для линукса, которые показывают текущую нагрузку на сервер. Также применяем встроенные в Google Chrome средства для мониторинга производительности, скорости загрузки и так далее, и прочие инструменты, доступные в Google Chrome.</p>
18 <p><em>С помощью каких решений обеспечиваете безопасность приложений?</em></p>
18 <p><em>С помощью каких решений обеспечиваете безопасность приложений?</em></p>
19 <p>Безопасность обеспечиваем по старинке, выглядит это примерно так: мне известны все основные потенциальные дыры на уровне приложения и веб-сервера, а также способы атак. Код пишется таким образом, чтобы нивелировать все гипотетические последствия подобных атак.</p>
19 <p>Безопасность обеспечиваем по старинке, выглядит это примерно так: мне известны все основные потенциальные дыры на уровне приложения и веб-сервера, а также способы атак. Код пишется таким образом, чтобы нивелировать все гипотетические последствия подобных атак.</p>
20 <p>Все известные мне приложения и сервисы по проверке безопасности находят уязвимости, которыми пользуются хакеры уровня "школьник", не более того. И особой ценности подобная информация для меня не представляет, так как все эти уязвимости стары как мир и общеизвестны. Возможно я старомоден, но я считаю, что руки + голова + firewall решают 99 % проблем с безопасностью приложений и серверов.</p>
20 <p>Все известные мне приложения и сервисы по проверке безопасности находят уязвимости, которыми пользуются хакеры уровня "школьник", не более того. И особой ценности подобная информация для меня не представляет, так как все эти уязвимости стары как мир и общеизвестны. Возможно я старомоден, но я считаю, что руки + голова + firewall решают 99 % проблем с безопасностью приложений и серверов.</p>
21 <p><em>Какие инструменты отладки используете?</em></p>
21 <p><em>Какие инструменты отладки используете?</em></p>
22 <p>Для отладки PHP используем Xdebug. Не уверен, что у него есть альтернативы заслуживающие особого внимания. Для отладки Laravel-проектов также используем barryvdh/laravel-debugbar (php debugbar), в Symfony же была собственная весьма неплохая отладочная панель.</p>
22 <p>Для отладки PHP используем Xdebug. Не уверен, что у него есть альтернативы заслуживающие особого внимания. Для отладки Laravel-проектов также используем barryvdh/laravel-debugbar (php debugbar), в Symfony же была собственная весьма неплохая отладочная панель.</p>
23 <p><em>Что используете для тестирования?</em></p>
23 <p><em>Что используете для тестирования?</em></p>
24 <p>Как базовый (основной/первичный) инструмент используем PHPUnit, а далее в зависимости от сложности и требований конкретного проекта. Иногда тесты не пишем вообще.</p>
24 <p>Как базовый (основной/первичный) инструмент используем PHPUnit, а далее в зависимости от сложности и требований конкретного проекта. Иногда тесты не пишем вообще.</p>
25 <p><em>С каким веб-фреймворком работаете?</em></p>
25 <p><em>С каким веб-фреймворком работаете?</em></p>
26 <p>Работали мы с очень многими фреймворками, начиная от таких "мамонтов", как CodeIgniter, Kohana, CakePHP и так далее, включая экзотику, например, Phalcon. Сейчас остановили свой выбор исключительно на Laravel и не перестаём посматривать<a>в сторону Symfony</a>. Пока мы ей не смогли найти достойного применения ввиду того, что она нещадно тормозит, кто бы что не говорил, но производительности ей сильно не хватает и это факт.</p>
26 <p>Работали мы с очень многими фреймворками, начиная от таких "мамонтов", как CodeIgniter, Kohana, CakePHP и так далее, включая экзотику, например, Phalcon. Сейчас остановили свой выбор исключительно на Laravel и не перестаём посматривать<a>в сторону Symfony</a>. Пока мы ей не смогли найти достойного применения ввиду того, что она нещадно тормозит, кто бы что не говорил, но производительности ей сильно не хватает и это факт.</p>
27 <p>Достаточно долго (вынужденно) пришлось поработать с Yii 1.x и 2.х. От его использования мы полностью отказались, так как проект находится в стадии предсмертной агонии. За последние 5+ лет, по моим наблюдениям, в Yii2 было исправлено около половины из 400+ заявленных багов. На этом собственно и всё. Никакого нового функционала не появилось, возможности современных (вышедших далеко не вчера) версий PHP данный фреймворк не использует, новых версий особо не выходит, проект если и не совсем мёртв, то слишком долго топчется на одном месте, ввиду чего по нашему мнению он мало ликвиден и используется в основном теми, кто не имеет достаточной экспертизы в Laravel и/или Symfony.</p>
27 <p>Достаточно долго (вынужденно) пришлось поработать с Yii 1.x и 2.х. От его использования мы полностью отказались, так как проект находится в стадии предсмертной агонии. За последние 5+ лет, по моим наблюдениям, в Yii2 было исправлено около половины из 400+ заявленных багов. На этом собственно и всё. Никакого нового функционала не появилось, возможности современных (вышедших далеко не вчера) версий PHP данный фреймворк не использует, новых версий особо не выходит, проект если и не совсем мёртв, то слишком долго топчется на одном месте, ввиду чего по нашему мнению он мало ликвиден и используется в основном теми, кто не имеет достаточной экспертизы в Laravel и/или Symfony.</p>
28 <p><em>Какие серверы и базы данных применяете?</em></p>
28 <p><em>Какие серверы и базы данных применяете?</em></p>
29 <p>Базы данных... Ну, в первую очередь, это конечно же MySQL, куда же без него, но без фанатизма.</p>
29 <p>Базы данных... Ну, в первую очередь, это конечно же MySQL, куда же без него, но без фанатизма.</p>
30 <p>Если проект публичный (OpenSource) или просто мелкий/простой, MySQL подходит идеально, его все знают, а некоторые даже любят. Но при серьёзных проектах и нагрузках MySQL не лишен ряда существенных недостатков. Начиная с отсутствия поддержки современных стандартов SQL до того, что при больших объёмах база может просто посыпаться.</p>
30 <p>Если проект публичный (OpenSource) или просто мелкий/простой, MySQL подходит идеально, его все знают, а некоторые даже любят. Но при серьёзных проектах и нагрузках MySQL не лишен ряда существенных недостатков. Начиная с отсутствия поддержки современных стандартов SQL до того, что при больших объёмах база может просто посыпаться.</p>
31 <p>Также у MySQL есть ряд технических коллизий, в частности в MySQL практически отсутствует такой механизм, как планировщик запросов. Он не может использовать более одного индекса на запрос, отсутствует многопоточность запросов и MVCC, есть ограничения на размер одной записи индекса, набор индексов довольно скудный, функционал сильно отстаёт от "старших собратьев".</p>
31 <p>Также у MySQL есть ряд технических коллизий, в частности в MySQL практически отсутствует такой механизм, как планировщик запросов. Он не может использовать более одного индекса на запрос, отсутствует многопоточность запросов и MVCC, есть ограничения на размер одной записи индекса, набор индексов довольно скудный, функционал сильно отстаёт от "старших собратьев".</p>
32 <p>Например, оконные функции появились в MySQL только с версии 8.0, поддержка JSON тоже появилась относительно недавно (с версии 5.7 кажется), но JSON-поля в MySQL текстовые и не индексируются. А также масса других объективных недостатков данной БД. Часть из которых подтверждается наличием множества форков данный БД, наиболее известные из которых - MariaDB, Percona. Что в принципе ожидаемо, так как после покупки данного проекта Oracle вполне логично предположить, что Oracle не даст проекту сильно развиваться и составить конкуренцию их основной (платной) БД. По этому, для серьёзных проектов мы используем PostgreSQL.</p>
32 <p>Например, оконные функции появились в MySQL только с версии 8.0, поддержка JSON тоже появилась относительно недавно (с версии 5.7 кажется), но JSON-поля в MySQL текстовые и не индексируются. А также масса других объективных недостатков данной БД. Часть из которых подтверждается наличием множества форков данный БД, наиболее известные из которых - MariaDB, Percona. Что в принципе ожидаемо, так как после покупки данного проекта Oracle вполне логично предположить, что Oracle не даст проекту сильно развиваться и составить конкуренцию их основной (платной) БД. По этому, для серьёзных проектов мы используем PostgreSQL.</p>
33 <p><em>Какие инструменты виртуализации предпочитаете?</em></p>
33 <p><em>Какие инструменты виртуализации предпочитаете?</em></p>
34 <p>Для виртуализации активно используем Docker, так как он позволяет решать проблему различия сред (то есть когда у одного работает, а другого нет), а также он позволяет упаковывать приложения, передавая их как единой целое (приложение + все прикладные его части + настройки ОС, включая её саму и так далее), что в целом довольно удобно.</p>
34 <p>Для виртуализации активно используем Docker, так как он позволяет решать проблему различия сред (то есть когда у одного работает, а другого нет), а также он позволяет упаковывать приложения, передавая их как единой целое (приложение + все прикладные его части + настройки ОС, включая её саму и так далее), что в целом довольно удобно.</p>
35 <p>Конечно, Docker - это далеко не серебряная пуля, и у него хватает своих "тараканов", но в целом это неплохое решение для ряда задач (ввиду того, что ничего лучше пока не придумали).</p>
35 <p>Конечно, Docker - это далеко не серебряная пуля, и у него хватает своих "тараканов", но в целом это неплохое решение для ряда задач (ввиду того, что ничего лучше пока не придумали).</p>
36 <p>Очень жаль, что под ОС Windows Docker работает весьма посредственно, но для себя мы решили эту проблему, просто отказавшись от Windows в пользу Linux. Иногда используем VirtualBox, LXC/LXD. Если бы LXC/LXD был более переносим, я имею в виду простоту переноса и отсутствие лишних телодвижений, между разными ОС или хотя бы внутри Linux, цены бы ему не было, так как в отличии от Docker LXC/LXD эмулирует полноценную ОС, включая систему инициализации, что в ряде случаев было бы куда лучшим решением, чем куча отдельных Docker-контейнеров для одного приложения. Другие системы виртуализации нам хорошо знакомы, но ввиду отсутствия какой-либо необходимости в них в нашей работе я о них просто не упоминаю.</p>
36 <p>Очень жаль, что под ОС Windows Docker работает весьма посредственно, но для себя мы решили эту проблему, просто отказавшись от Windows в пользу Linux. Иногда используем VirtualBox, LXC/LXD. Если бы LXC/LXD был более переносим, я имею в виду простоту переноса и отсутствие лишних телодвижений, между разными ОС или хотя бы внутри Linux, цены бы ему не было, так как в отличии от Docker LXC/LXD эмулирует полноценную ОС, включая систему инициализации, что в ряде случаев было бы куда лучшим решением, чем куча отдельных Docker-контейнеров для одного приложения. Другие системы виртуализации нам хорошо знакомы, но ввиду отсутствия какой-либо необходимости в них в нашей работе я о них просто не упоминаю.</p>
37 <p><em>Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?</em></p>
37 <p><em>Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?</em></p>
38 <p>В первую очередь, я думаю, это ОС Linux, позволяющая разрабатывать приложения в родной для них среде со всеми вытекающими. Хорошая IDE, умение пользоваться инструментами ОС Linux (в частности иногда очень сильно выручает редактор VI[M], такие инструменты как find, grep, ssh, tail и многие другие), пара веб-серверов (Nginx, Apache - да, вы не ослышались, иногда мы используем Apache по вполне конкретным причинам), свежая версия PHP, ну и общее понимание принимаемых решений, то есть осознанный выбор на уровне полного понимания последствий, а не на уровне интуиции, - вот, пожалуй, самые важные инструменты для веб-разработчика.</p>
38 <p>В первую очередь, я думаю, это ОС Linux, позволяющая разрабатывать приложения в родной для них среде со всеми вытекающими. Хорошая IDE, умение пользоваться инструментами ОС Linux (в частности иногда очень сильно выручает редактор VI[M], такие инструменты как find, grep, ssh, tail и многие другие), пара веб-серверов (Nginx, Apache - да, вы не ослышались, иногда мы используем Apache по вполне конкретным причинам), свежая версия PHP, ну и общее понимание принимаемых решений, то есть осознанный выбор на уровне полного понимания последствий, а не на уровне интуиции, - вот, пожалуй, самые важные инструменты для веб-разработчика.</p>
39 <p>И да, в 99% случаев мы не используем CMS вообще.</p>
39 <p>И да, в 99% случаев мы не используем CMS вообще.</p>
40 <h2>Борис Коробков, веб-разработчик, автор YouTube-канала о жизни программиста в Германии</h2>
40 <h2>Борис Коробков, веб-разработчик, автор YouTube-канала о жизни программиста в Германии</h2>
41 <p><em><a>Борис Коробков</a></em></p>
41 <p><em><a>Борис Коробков</a></em></p>
42 <p><em>Какой редактор или IDE вы используете?</em></p>
42 <p><em>Какой редактор или IDE вы используете?</em></p>
43 <p>Более 10 лет назад - NetBeans, других альтернатив тогда не было. Потом PhpStorm - он удобнее, чем NetBeans. Работодатель оплачивал лицензию. Сейчас Visual Studio Code - такой же удобный, но бесплатный.</p>
43 <p>Более 10 лет назад - NetBeans, других альтернатив тогда не было. Потом PhpStorm - он удобнее, чем NetBeans. Работодатель оплачивал лицензию. Сейчас Visual Studio Code - такой же удобный, но бесплатный.</p>
44 <p><em>Что применяете для мониторинга производительности приложений?</em></p>
44 <p><em>Что применяете для мониторинга производительности приложений?</em></p>
45 <p>При локальной отладке - breakpoint средствами фреймворка. На продакшене - Nagios (так исторически сложилось), slow query log, iostat и так далее.</p>
45 <p>При локальной отладке - breakpoint средствами фреймворка. На продакшене - Nagios (так исторически сложилось), slow query log, iostat и так далее.</p>
46 <p><em>С помощью каких решений обеспечиваете безопасность приложений?</em></p>
46 <p><em>С помощью каких решений обеспечиваете безопасность приложений?</em></p>
47 <p>Ввод, вывод, БД - средствами фреймворка: Request, Response, ORM. Статические анализаторы кода: Php Inspections, CodeSniffer. Сканеры: Nmap.</p>
47 <p>Ввод, вывод, БД - средствами фреймворка: Request, Response, ORM. Статические анализаторы кода: Php Inspections, CodeSniffer. Сканеры: Nmap.</p>
48 <p><em>Какие инструменты отладки используете?</em></p>
48 <p><em>Какие инструменты отладки используете?</em></p>
49 <p>Xdebug.</p>
49 <p>Xdebug.</p>
50 <p><em>Что используете для тестирования?</em></p>
50 <p><em>Что используете для тестирования?</em></p>
51 <p>PHPUnit, Selenium.</p>
51 <p>PHPUnit, Selenium.</p>
52 <p><em>С каким веб-фреймворком работаете?</em></p>
52 <p><em>С каким веб-фреймворком работаете?</em></p>
53 <p>Есть опыт работы со многими фреймворками, включая самописные. Если делать простой сайт для себя just for fun, вероятно, выберу Yii2. Если выбирать фреймворк для серьезного проекта, надо учесть много факторов.</p>
53 <p>Есть опыт работы со многими фреймворками, включая самописные. Если делать простой сайт для себя just for fun, вероятно, выберу Yii2. Если выбирать фреймворк для серьезного проекта, надо учесть много факторов.</p>
54 <p><em>Какие серверы и базы данных применяете?</em></p>
54 <p><em>Какие серверы и базы данных применяете?</em></p>
55 <p>На новых серверах ставлю CentOS, на старых работаю с тем, что есть. Из БД предпочитаю PostgreSQL, иногда использую MySQL, по требованию заказчика или по обстоятельствам - SQLite, Redis, Mongo и прочие.</p>
55 <p>На новых серверах ставлю CentOS, на старых работаю с тем, что есть. Из БД предпочитаю PostgreSQL, иногда использую MySQL, по требованию заказчика или по обстоятельствам - SQLite, Redis, Mongo и прочие.</p>
56 <p><em>Какие инструменты виртуализации предпочитаете?</em></p>
56 <p><em>Какие инструменты виртуализации предпочитаете?</em></p>
57 <p>Docker. С его помощью запускаю unit-тесты с разными БД (разных версии PostgreSQL, MySQL), разными веб-серверами (Nginx, Apache2), разными версиями PHP.</p>
57 <p>Docker. С его помощью запускаю unit-тесты с разными БД (разных версии PostgreSQL, MySQL), разными веб-серверами (Nginx, Apache2), разными версиями PHP.</p>
58 <p>Запускаю Selenium-тесты на разных браузерах (Chrome, Firefox).</p>
58 <p>Запускаю Selenium-тесты на разных браузерах (Chrome, Firefox).</p>
59 <p><em>Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?</em></p>
59 <p><em>Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?</em></p>
60 <p>Для любых разработчиков: git + code review = github или gitlab.</p>
60 <p>Для любых разработчиков: git + code review = github или gitlab.</p>
61 <h2>Алексей Уколов, технический директор в компании "Айтигро", занимается веб-разработкой более 10 лет</h2>
61 <h2>Алексей Уколов, технический директор в компании "Айтигро", занимается веб-разработкой более 10 лет</h2>
62 <p><em><a>Алексей Уколов</a>, компания<a>"Айтигро"</a></em></p>
62 <p><em><a>Алексей Уколов</a>, компания<a>"Айтигро"</a></em></p>
63 <p><em>Какой редактор или IDE вы используете?</em></p>
63 <p><em>Какой редактор или IDE вы используете?</em></p>
64 <p>Начинал с NetBeans, но довольно быстро перешёл на PhpStorm, и последние семь лет использую его. Почему перешёл, уже не помню точно, кажется, интерфейс казался неудобным. Свою стоимость PhpStorm оправдывает полностью - удобный интерфейс и умные подсказки значительно облегчают работу.</p>
64 <p>Начинал с NetBeans, но довольно быстро перешёл на PhpStorm, и последние семь лет использую его. Почему перешёл, уже не помню точно, кажется, интерфейс казался неудобным. Свою стоимость PhpStorm оправдывает полностью - удобный интерфейс и умные подсказки значительно облегчают работу.</p>
65 <p>Полезно смотреть или читать туториалы, чтобы знать о каких-то неочевидных функциях. Для новичков будет полезно включить настройку Show tips on startup, при помощи этого окна я тоже многие функции узнал.</p>
65 <p>Полезно смотреть или читать туториалы, чтобы знать о каких-то неочевидных функциях. Для новичков будет полезно включить настройку Show tips on startup, при помощи этого окна я тоже многие функции узнал.</p>
66 <p>Простые редакторы тоже использую, но нечасто - обычно это nano или mceditor на серверах.</p>
66 <p>Простые редакторы тоже использую, но нечасто - обычно это nano или mceditor на серверах.</p>
67 <p><em>Что применяете для мониторинга производительности приложений?</em></p>
67 <p><em>Что применяете для мониторинга производительности приложений?</em></p>
68 <p>У нас нет какого-то прямо серьёзного хайлоада и распределённых систем, поэтому хватает данных "Яндекс.Метрики", чтобы увидеть есть ли какие-то проблемы. Наши админы настраивают Zabbix, и он предупреждает о "железных" проблемах. Бизнес-метрики собираем кастомным решением под каждый проект, потому что требования у всех свои.</p>
68 <p>У нас нет какого-то прямо серьёзного хайлоада и распределённых систем, поэтому хватает данных "Яндекс.Метрики", чтобы увидеть есть ли какие-то проблемы. Наши админы настраивают Zabbix, и он предупреждает о "железных" проблемах. Бизнес-метрики собираем кастомным решением под каждый проект, потому что требования у всех свои.</p>
69 <p>Во время разработки мы всегда профилируем приложение при помощи XHProf и создания какого-то похожего на правду объёма данных, поэтому многие проблемы до продакшена вообще не доезжают. Если всё-таки случаются тормоза, то запускаем XHProf уже на сервере для какого-то среза пользователей (об этом нужно думать заранее и разворачивать инфраструктуру, когда проблем нет, потому что поднимать XHProf на "горящем" проекте - удовольствие сомнительное). Если и это не помогает, подключаем NewRelic или okmeter.</p>
69 <p>Во время разработки мы всегда профилируем приложение при помощи XHProf и создания какого-то похожего на правду объёма данных, поэтому многие проблемы до продакшена вообще не доезжают. Если всё-таки случаются тормоза, то запускаем XHProf уже на сервере для какого-то среза пользователей (об этом нужно думать заранее и разворачивать инфраструктуру, когда проблем нет, потому что поднимать XHProf на "горящем" проекте - удовольствие сомнительное). Если и это не помогает, подключаем NewRelic или okmeter.</p>
70 <p><em>С помощью каких решений обеспечиваете безопасность приложений?</em></p>
70 <p><em>С помощью каких решений обеспечиваете безопасность приложений?</em></p>
71 <p>Каких-то специальных инструментов не используем, просто помним о лучших практиках кода и проводим ревью. Современные фреймворки, в принципе, многое из этой области берут на себя.</p>
71 <p>Каких-то специальных инструментов не используем, просто помним о лучших практиках кода и проводим ревью. Современные фреймворки, в принципе, многое из этой области берут на себя.</p>
72 <p><em>Какие инструменты отладки используете?</em></p>
72 <p><em>Какие инструменты отладки используете?</em></p>
73 <p>Практика показывает, что самый лучший инструмент - это Xdebug. Но часто запускать его лень, и проблема решается дампом каких-то данных на страницу или в консоль. Периодически я ловлю себя на том, что вывожу какие-то данные, копаюсь в них, а потом запускаю Xdebug и сразу нахожу проблему. Приучить себя сложно, но я стараюсь.</p>
73 <p>Практика показывает, что самый лучший инструмент - это Xdebug. Но часто запускать его лень, и проблема решается дампом каких-то данных на страницу или в консоль. Периодически я ловлю себя на том, что вывожу какие-то данные, копаюсь в них, а потом запускаю Xdebug и сразу нахожу проблему. Приучить себя сложно, но я стараюсь.</p>
74 <p>Ещё на каждый проект ставим Laravel Debug Bar, но я обычно её сразу скрываю и практически никогда не пользуюсь. Хотя штука это довольно полезная - например, показывает, что какие-то запросы к БД дублируются, значит где-то есть проблема N+1.</p>
74 <p>Ещё на каждый проект ставим Laravel Debug Bar, но я обычно её сразу скрываю и практически никогда не пользуюсь. Хотя штука это довольно полезная - например, показывает, что какие-то запросы к БД дублируются, значит где-то есть проблема N+1.</p>
75 <p><em>Что используете для тестирования?</em></p>
75 <p><em>Что используете для тестирования?</em></p>
76 <p>Для тестов используем PHPUnit и Mockery, плюс встроенные в Laravel тест-кейсы. Этого хватает для решения всех задач. У Laravel ещё есть браузерное тестирование через Dusk, но в нём пока большой необходимости не увидели.</p>
76 <p>Для тестов используем PHPUnit и Mockery, плюс встроенные в Laravel тест-кейсы. Этого хватает для решения всех задач. У Laravel ещё есть браузерное тестирование через Dusk, но в нём пока большой необходимости не увидели.</p>
77 <p>Несколько лет назад пытались подружить Behat и Битрикс - безуспешно. Сама идея Behat мне нравится, но когда тесты придумывают и пишут сами программисты, использование "литературного" описания кажется лишней прослойкой.</p>
77 <p>Несколько лет назад пытались подружить Behat и Битрикс - безуспешно. Сама идея Behat мне нравится, но когда тесты придумывают и пишут сами программисты, использование "литературного" описания кажется лишней прослойкой.</p>
78 <p><em>С каким веб-фреймворком работаете?</em></p>
78 <p><em>С каким веб-фреймворком работаете?</em></p>
79 <p>Только с Laravel. Yii и Zend мне персонально не очень нравятся, когда я выбирал фреймворк, они выглядели устаревшими. Возможно, сейчас они догнали остальных по использованию каких-то стандартов индустрии (PSR и тому подобное), но переходить уже не вижу смысла - все мои задачи Laravel закрывает.</p>
79 <p>Только с Laravel. Yii и Zend мне персонально не очень нравятся, когда я выбирал фреймворк, они выглядели устаревшими. Возможно, сейчас они догнали остальных по использованию каких-то стандартов индустрии (PSR и тому подобное), но переходить уже не вижу смысла - все мои задачи Laravel закрывает.</p>
80 <p>Symfony выглядит привлекательно, и какие-то небольшие вещи я на ней писал, но у Laravel ниже порог входа, поэтому проще найти разработчиков.</p>
80 <p>Symfony выглядит привлекательно, и какие-то небольшие вещи я на ней писал, но у Laravel ниже порог входа, поэтому проще найти разработчиков.</p>
81 <p><em>Какие серверы и базы данных применяете?</em></p>
81 <p><em>Какие серверы и базы данных применяете?</em></p>
82 <p>Не очень понятно что подразумевается под серверами. Если железо, то не знаю - админы что-то собирают :) ОС используем разные, в зависимости от требований клиента. Кому-то важны разные сертификации надзорных органов - тогда берём какой-то не самый свежий Debian. Кому-то важно, чтобы релиз был LTS. Чаще всего используем Debian, CentOS и Ubuntu.</p>
82 <p>Не очень понятно что подразумевается под серверами. Если железо, то не знаю - админы что-то собирают :) ОС используем разные, в зависимости от требований клиента. Кому-то важны разные сертификации надзорных органов - тогда берём какой-то не самый свежий Debian. Кому-то важно, чтобы релиз был LTS. Чаще всего используем Debian, CentOS и Ubuntu.</p>
83 <p>СУБД, опять же, выбираем под проект. Обычно это последняя версия MySQL, но иногда клиенту нужна "экзотика". Приходилось писать и под PostgreSQL, и под MSSQL, и даже под SQLite.</p>
83 <p>СУБД, опять же, выбираем под проект. Обычно это последняя версия MySQL, но иногда клиенту нужна "экзотика". Приходилось писать и под PostgreSQL, и под MSSQL, и даже под SQLite.</p>
84 <p><em>Какие инструменты виртуализации предпочитаете?</em></p>
84 <p><em>Какие инструменты виртуализации предпочитаете?</em></p>
85 <p>Сейчас на всех этапах разработки используем Docker - он стоит на локальных машинах разработчиков, на стейджинг-серверах и на продакшене.</p>
85 <p>Сейчас на всех этапах разработки используем Docker - он стоит на локальных машинах разработчиков, на стейджинг-серверах и на продакшене.</p>
86 <p>На мой взгляд, глубоко погружаться в эту тему PHP-разработчику не нужно, у нас хватает своих забот в предметной области, так что умения написать несложный Docker-файл, запустить-остановить контейнер и собрать несколько контейнеров в приложение при помощи docker-compose должно быть достаточно. Это, конечно, при условии, что есть доступ к компетентным админам и девопсам.</p>
86 <p>На мой взгляд, глубоко погружаться в эту тему PHP-разработчику не нужно, у нас хватает своих забот в предметной области, так что умения написать несложный Docker-файл, запустить-остановить контейнер и собрать несколько контейнеров в приложение при помощи docker-compose должно быть достаточно. Это, конечно, при условии, что есть доступ к компетентным админам и девопсам.</p>
87 <p><em>Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?</em></p>
87 <p><em>Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?</em></p>
88 <p>Очень рекомендую использовать различные анализаторы кода, они реально ловят ошибки и помогают писать чище. Вот что я сразу ставлю на новый проект:</p>
88 <p>Очень рекомендую использовать различные анализаторы кода, они реально ловят ошибки и помогают писать чище. Вот что я сразу ставлю на новый проект:</p>
89 <ul><li><a>phpstan</a></li>
89 <ul><li><a>phpstan</a></li>
90 <li><a>phpcpd</a></li>
90 <li><a>phpcpd</a></li>
91 <li><a>php_codesniffer</a></li>
91 <li><a>php_codesniffer</a></li>
92 <li><a>php-cs-fixer</a></li>
92 <li><a>php-cs-fixer</a></li>
93 <li><a>churn</a></li>
93 <li><a>churn</a></li>
94 </ul><h2>Максим Фёдоров, PHP-программист, "Яндекс.Еда"</h2>
94 </ul><h2>Максим Фёдоров, PHP-программист, "Яндекс.Еда"</h2>
95 <p><em><a>Максим Фёдоров</a></em></p>
95 <p><em><a>Максим Фёдоров</a></em></p>
96 <p><em>Какой редактор или IDE вы используете?</em></p>
96 <p><em>Какой редактор или IDE вы используете?</em></p>
97 <p>PhpStorm.</p>
97 <p>PhpStorm.</p>
98 <p><em>Что применяете для мониторинга производительности приложений?</em></p>
98 <p><em>Что применяете для мониторинга производительности приложений?</em></p>
99 <p>Мало приходилось, немного через Blackfire от Symfony производительность мерил, сейчас будем с танком работать. Это разные вещи, но так или иначе этот вопрос решал с помощью этих инструментов в рамках своей работы.</p>
99 <p>Мало приходилось, немного через Blackfire от Symfony производительность мерил, сейчас будем с танком работать. Это разные вещи, но так или иначе этот вопрос решал с помощью этих инструментов в рамках своей работы.</p>
100 <p><em>С помощью каких решений обеспечиваете безопасность приложений?</em></p>
100 <p><em>С помощью каких решений обеспечиваете безопасность приложений?</em></p>
101 <p>Только через ручное/обычное автоматическое тестирование без специальных решений.</p>
101 <p>Только через ручное/обычное автоматическое тестирование без специальных решений.</p>
102 <p><em>Какие инструменты отладки используете?</em></p>
102 <p><em>Какие инструменты отладки используете?</em></p>
103 <p>Xdebug.</p>
103 <p>Xdebug.</p>
104 <p><em>Что используете для тестирования?</em></p>
104 <p><em>Что используете для тестирования?</em></p>
105 <p>PHPUnit, Codeception + selenium, paratest.</p>
105 <p>PHPUnit, Codeception + selenium, paratest.</p>
106 <p><em>С каким веб-фреймворком работаете?</em></p>
106 <p><em>С каким веб-фреймворком работаете?</em></p>
107 <p>Symfony (3.4 на работе, 4 для своих проектов).</p>
107 <p>Symfony (3.4 на работе, 4 для своих проектов).</p>
108 <p><em>Какие серверы и базы данных применяете?</em></p>
108 <p><em>Какие серверы и базы данных применяете?</em></p>
109 <p>MySQL, rabbitmq.</p>
109 <p>MySQL, rabbitmq.</p>
110 <p><em>Какие инструменты виртуализации предпочитаете?</em></p>
110 <p><em>Какие инструменты виртуализации предпочитаете?</em></p>
111 <p>Предпочитаю вагрант, но работаю с докером :)</p>
111 <p>Предпочитаю вагрант, но работаю с докером :)</p>
112 <p><em>Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?</em></p>
112 <p><em>Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?</em></p>
113 <p>PhpStan, php-CS-fixer обязательным набором идут, чего-то экзотического не особо использую.</p>
113 <p>PhpStan, php-CS-fixer обязательным набором идут, чего-то экзотического не особо использую.</p>
114 <h2>Антон Морев, CTO в Wormsoft</h2>
114 <h2>Антон Морев, CTO в Wormsoft</h2>
115 <p><em><a>Антон Морев</a></em></p>
115 <p><em><a>Антон Морев</a></em></p>
116 <p><em>Какой редактор или IDE вы используете?</em></p>
116 <p><em>Какой редактор или IDE вы используете?</em></p>
117 <p>PhpStorm (сначала были PSDPad, Sublime Text).</p>
117 <p>PhpStorm (сначала были PSDPad, Sublime Text).</p>
118 <p><em>Что применяете для мониторинга производительности приложений?</em></p>
118 <p><em>Что применяете для мониторинга производительности приложений?</em></p>
119 <p>AB, Siege</p>
119 <p>AB, Siege</p>
120 <p><em>С помощью каких решений обеспечиваете безопасность приложений?</em></p>
120 <p><em>С помощью каких решений обеспечиваете безопасность приложений?</em></p>
121 <p>Не используем специальные решения.</p>
121 <p>Не используем специальные решения.</p>
122 <p><em>Какие инструменты отладки используете?</em></p>
122 <p><em>Какие инструменты отладки используете?</em></p>
123 <p>Xdebug.</p>
123 <p>Xdebug.</p>
124 <p><em>Что используете для тестирования?</em></p>
124 <p><em>Что используете для тестирования?</em></p>
125 <p>Codeception.</p>
125 <p>Codeception.</p>
126 <p><em>С каким веб-фреймворком работаете?</em></p>
126 <p><em>С каким веб-фреймворком работаете?</em></p>
127 <p>Yii2, Laravel.</p>
127 <p>Yii2, Laravel.</p>
128 <p><em>Какие серверы и базы данных применяете?</em></p>
128 <p><em>Какие серверы и базы данных применяете?</em></p>
129 <p>Mysql, PostgreSQL, MongoDB.</p>
129 <p>Mysql, PostgreSQL, MongoDB.</p>
130 <p><em>Какие инструменты виртуализации предпочитаете?</em></p>
130 <p><em>Какие инструменты виртуализации предпочитаете?</em></p>
131 <p>Docker.</p>
131 <p>Docker.</p>
132 <p><em>Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?</em></p>
132 <p><em>Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?</em></p>
133 <p>Postman, Altair.</p>
133 <p>Postman, Altair.</p>
134 <h2>Искандер Шарипов, старший программист-разработчик, команда backend инфраструктуры "ВКонтакте"</h2>
134 <h2>Искандер Шарипов, старший программист-разработчик, команда backend инфраструктуры "ВКонтакте"</h2>
135 <p><em><a>Искандер Шарипов</a></em></p>
135 <p><em><a>Искандер Шарипов</a></em></p>
136 <p><em>Какой редактор или IDE вы используете?</em></p>
136 <p><em>Какой редактор или IDE вы используете?</em></p>
137 <p>PhpStorm.</p>
137 <p>PhpStorm.</p>
138 <p><em>Какие инструменты отладки используете?</em></p>
138 <p><em>Какие инструменты отладки используете?</em></p>
139 <p>Статический анализ, кодовое ревью. Ещё в kPHP к коду есть требование в указании большинства типов, поэтому PHP у нас во многом более строгий, из-за чего ошибки типов встречаются реже. Остальные ошибки пытаемся находить статическим анализом или во время тестирования.</p>
139 <p>Статический анализ, кодовое ревью. Ещё в kPHP к коду есть требование в указании большинства типов, поэтому PHP у нас во многом более строгий, из-за чего ошибки типов встречаются реже. Остальные ошибки пытаемся находить статическим анализом или во время тестирования.</p>
140 <p><em>Что используете для тестирования?</em></p>
140 <p><em>Что используете для тестирования?</em></p>
141 <p>PHPUnit.</p>
141 <p>PHPUnit.</p>
142 <p><em>С каким веб-фреймворком работаете?</em></p>
142 <p><em>С каким веб-фреймворком работаете?</em></p>
143 <p>Свой собственный. На прошлой работе тоже были свои велосипеды, но ближе всего был Yii2.</p>
143 <p>Свой собственный. На прошлой работе тоже были свои велосипеды, но ближе всего был Yii2.</p>
144 <p><em>Какие серверы и базы данных применяете?</em></p>
144 <p><em>Какие серверы и базы данных применяете?</em></p>
145 <p>В ВК большая часть БД написанные нашей же командой. Но ещё используются MySQL и ClickHouse. Есть сервера под Nginx, но бывают и отдельно стоящие сервера на каком-нибудь Go (но перед ними тоже могут быть балансировщики).</p>
145 <p>В ВК большая часть БД написанные нашей же командой. Но ещё используются MySQL и ClickHouse. Есть сервера под Nginx, но бывают и отдельно стоящие сервера на каком-нибудь Go (но перед ними тоже могут быть балансировщики).</p>
146 <p><em>Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?</em></p>
146 <p><em>Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?</em></p>
147 <p><a>Phpgrep</a>и<a>NoVerify</a>.</p>
147 <p><a>Phpgrep</a>и<a>NoVerify</a>.</p>
148 <h2>Илья Логинов, Senior PHP developer</h2>
148 <h2>Илья Логинов, Senior PHP developer</h2>
149 <p><em><a>Илья Логинов</a></em></p>
149 <p><em><a>Илья Логинов</a></em></p>
150 <p><em>Какой редактор или IDE вы используете?</em></p>
150 <p><em>Какой редактор или IDE вы используете?</em></p>
151 <p>PhpStorm, до этого был NetBeans, а до него Notepad++ с плагинами.</p>
151 <p>PhpStorm, до этого был NetBeans, а до него Notepad++ с плагинами.</p>
152 <p><em>Что применяете для мониторинга производительности приложений?</em></p>
152 <p><em>Что применяете для мониторинга производительности приложений?</em></p>
153 <p>Обычно Zabbix с доработками, изредка какой нибудь внутренний продукт компании</p>
153 <p>Обычно Zabbix с доработками, изредка какой нибудь внутренний продукт компании</p>
154 <p><em>С помощью каких решений обеспечиваете безопасность приложений?</em></p>
154 <p><em>С помощью каких решений обеспечиваете безопасность приложений?</em></p>
155 <p>Кастомные решения в виде bash скриптов, настройки окружения, логов и прочего.</p>
155 <p>Кастомные решения в виде bash скриптов, настройки окружения, логов и прочего.</p>
156 <p><em>Какие инструменты отладки используете?</em></p>
156 <p><em>Какие инструменты отладки используете?</em></p>
157 <p>Xdebug.</p>
157 <p>Xdebug.</p>
158 <p><em>Что используете для тестирования?</em></p>
158 <p><em>Что используете для тестирования?</em></p>
159 <p>PHPUnit (+ Code Coverage).</p>
159 <p>PHPUnit (+ Code Coverage).</p>
160 <p><em>С каким веб-фреймворком работаете?</em></p>
160 <p><em>С каким веб-фреймворком работаете?</em></p>
161 <p>Сейчас с Laravel, до этого были Zend, Kohana, Codeigniter.</p>
161 <p>Сейчас с Laravel, до этого были Zend, Kohana, Codeigniter.</p>
162 <p><em>Какие серверы и базы данных применяете?</em></p>
162 <p><em>Какие серверы и базы данных применяете?</em></p>
163 <p>Тут все зависит от требований к проекту, для некоторых подходит VPS с SqLite, другим продукты AWS требуются. Но в большинстве случаев это VDS и MySQL(MariaDB) или PostgreSQL.</p>
163 <p>Тут все зависит от требований к проекту, для некоторых подходит VPS с SqLite, другим продукты AWS требуются. Но в большинстве случаев это VDS и MySQL(MariaDB) или PostgreSQL.</p>
164 <p><em>Какие инструменты виртуализации предпочитаете?</em></p>
164 <p><em>Какие инструменты виртуализации предпочитаете?</em></p>
165 <p>Уже давно не работал с системами виртуализации, сейчас только контейнеризация в виде Docker с Kubernetes.</p>
165 <p>Уже давно не работал с системами виртуализации, сейчас только контейнеризация в виде Docker с Kubernetes.</p>
166 <p><em>Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?</em></p>
166 <p><em>Возможно, есть инструменты для PHP-разработчика, о которых хотите сказать отдельно?</em></p>
167 <p>Vim.</p>
167 <p>Vim.</p>
168 <p>Пожалуйста, напишите в комментариях, какими инструментами в повседневной работе с PHP-кодом пользуетесь вы.</p>
168 <p>Пожалуйста, напишите в комментариях, какими инструментами в повседневной работе с PHP-кодом пользуетесь вы.</p>