Блог хеллоуворлдщика

Почему хейтят Yii?

14.11.2019 yii, имхо

Уже давно я хотел поразмышлять о том, почему некоторые разработчики негативно относятся к Yii. Раз у меня есть блог, решил наконец изложить свои мысли.

Начну с того, как я понимаю назначение Yii. Это набор инструментов, который помогает быстро реализовать идею и упрощает типовые задачи. Такой подход может сократить затраты и заказчика, и разработчика. Однако выгода зависит от проекта: в приложениях, где мало типовых операций CRUD (Create, Read, Update, Delete), выигрыш в скорости может быть не таким заметным. При этом многие веб-приложения как раз строятся вокруг CRUD-функциональности.

В Yii есть инструменты и возможности, которые ускоряют разработку:

  • виджеты ListView и GridView;
  • валидаторы;
  • Active Record;
  • генераторы моделей, форм, контроллеров и других компонентов;
  • глобальный сервис-локатор (Yii::app() в Yii 1 и Yii::$app в Yii 2);
  • встроенная поддержка RBAC;
  • развитое сообщество;
  • относительно низкий порог входа.

Отдельно мне хочется поговорить о философии разработки, которая стоит за фреймворком.

Разработчиками становятся. Многие специалисты, которые сегодня имеют большой опыт, когда-то начинали с учебников по программированию и Yii. На том этапе фреймворк помогал им разобраться в разработке, создавать первые проекты и зарабатывать. Со временем люди растут профессионально, и их требования к инструментам меняются. Когда разработчик хорошо освоил Yii, он может пойти разными путями: продолжить работать с ним, перейти на другой фреймворк или пересмотреть свои прежние оценки. Это естественная часть профессионального развития.

Иногда, достигнув нового уровня, человек начинает смотреть свысока на инструменты, с которых начинал. Я и сам помню, как гордился тем, что научился ездить на двухколёсном велосипеде, и считал трёхколёсный детским. Теперь я вижу в этом обычное желание подчеркнуть собственный прогресс. Подобное происходит и с технологиями: знакомый инструмент легко становится символом этапа, который хочется оставить позади.

На отношение к технологиям влияет и профессиональное окружение. В сообществах складываются общие взгляды, и иногда негативное мнение о Yii становится способом показать свою принадлежность к определённой группе или подчеркнуть статус. Я и сам однажды увлёкся такими сравнениями. Мне казалось, что практики из других экосистем лучше, хотя я сопоставлял инструменты, созданные для разных задач. Сравнивать фреймворки полезно, но важно учитывать их назначение и контекст проекта.

Недавно я наткнулся на репозиторий yii2tech/illuminate, где утверждалось, что Yii устарел и лучше перейти на Laravel. Но выбор зависит от задач. Yii хорошо подходит для быстрого старта, создания прототипа и последовательного развития проекта. Его базовую структуру можно менять, а новые инструменты, например Webpack, — подключать по мере необходимости. При этом глобальный сервис-локатор может не соответствовать предпочтениям некоторых команд, но его влияние можно ограничить архитектурными решениями.

Фреймворк помогает быстро начать работу над приложением, не тратя длительное время только на подготовку инфраструктуры. Для некоторых проектов это существенное преимущество; для других могут быть важнее иные свойства платформы.

На мой взгляд, идеального решения для всех проектов не существует. Важно соотносить инженерные рекомендации с задачами бизнеса и конкретными условиями. Нужно понимать, когда стоит придерживаться принятой практики, а когда разумно от неё отступить. Книги и мнения опытных специалистов помогают учиться, но окончательный выбор всё равно требует самостоятельного анализа. Популярность подхода сама по себе не доказывает, что он подходит каждому проекту.

В начале своего пути программиста я получил от Yii много полезного. До него я работал с Joomla, Zend Framework 1 и Magento, но именно Yii запомнился мне больше всего. Важную роль сыграла и книга Александра Макарова, которую мне было интересно читать. Оглядываясь на этот опыт, я могу сказать: Yii — полезный инструмент, и я благодарен ему за то, чему он меня научил. Мне хотелось бы, чтобы фреймворк продолжал развиваться, сохраняя собственный подход и сильные стороны.