Давненько в моей голове закралась мысль о том, чтобы порассуждать на эту тему. И благо у меня есть блог и есть возможность это сделать.
Давайте вернемся к истокам, а точне на то, как позиционирует себя фреймворк Yii. В первую очередь, это набор инструментов, чтобы реализовать задумку быстро и просто срезая углы, где это возможно. Это очень выгодный фреймворк для заказчика и разработчика, т.к. с одной стороны он экономит средства, а с другой время. Но и здесь есть его потолок: не CRUD (Create, Read, Update, Delete) приложения могут не дать прироста в скорости. Хорошо, что большая же часть веб-приложений как раз построена на CRUD.
У фреймворка есть классные вещи, которые очень ускоряют разработку, это:
- ListView и GridList;
- валидаторы;
- простой ActiveRecord;
- генераторы моделей, форм, контроллеров и т.п.;
- глобальный сервис-локатор (
Yii::app()
/Yii::$app
); - RBAC из коробки;
- своя политика разработки;
- огромное комьюнити;
- низкий порог вхождения;
- и многое другое.
И пожалуй, из всего о чем стоит поговорить, это о политике разработки.
Разработчиками не рождаются, ими становятся. Многие из тех крутых девелоперов, что сейчас загребают кучи баксов в час когда-то начинали с самоучителей по программированию и фреймворка Yii. И в то время, в тот момент их развития, как специалистов, этот фреймворк виделся им максимально понятным и мощным, чтобы начать что-то реализовывать и зарабатывать на хлеб. Человек, как не странно, развивается. Конечно, все развиваются по разному: кто-то быстрей, кто-то медленней... кто-то очень медленно. Но рост всегда присутствует, даже чуть-чуть. И вот когда программист понимает, что он осилил Yii, есть два пути: "налево пойдешь - Yii говном назовешь, направо пойдешь - Yii поклон шлешь, прямо пойдешь - в Laravel уйдешь"... Знаете же это чувство, когда осилил Pascal и думаешь, что можешь уже всё? Ну, вот здесь тоже самое.
Иметь пренебрежительное отношение к тому, что человек прошел, повышает его самоуверенность. Я вот помню, как научился кататься на двухколесном велосипеде и был очень горд за себя. Предыдущий опыт на трехколесном варианте меня дико смущал и приравнивал к грудному ребенку. Поэтому все те, кто еще катались на трехколесном или с опорными колесами по бокам я автоматически записывал в неудачники. А я был Д'Артаньяном, да... Людям нужно что-то ненавидеть. Они так устроены. Где-то это Yii, а где-то вафельные печенья.
Программист он тоже человек и живет в социуме. Чаще всего окружение его виртуальное, но тем не менее человек попадает в стаю. А стая говорит, что если ты за нас, то будешь как мы. Ну, а если человеку даже виртуальная стая роли не играет, то после определенного уровня профессионального роста можно для поднятия "статуса" отзываться о Yii в негативном ключе. Я сам как-то попал в эту яму. Но не в яму трендов, а в яму относительности. Я стал сравнивать разные практики в других местах с практиками в Yii абсолютно не понимая, что сравниваю зеленое с синим. Нет никакого смысла сравнивать что-то с Yii, потому что у Yii свой путь.
Совсем недавно я наткнулся на репозиторий yii2tech/illuminate, где было сказано, что Yii отстал и стоит переходить на Laravel. Но зачем, если Yii создан для решения определенного круга задач? Когда нужно сделать что-то быстро и позже допиливать, то Yii здесь очень сильно выручает. Потому что этот фреймворк готов из коробки, чтобы сделать прототип и позже его вылизывать. Нет никаких препятствий изменить структуру проекта, нет никаких препятствий, чтобы внедрить Webpack, нет вообще никаких препятствий, чтобы расширять возможности. И плюсом, вас вообще никак не ограничивают, кроме глобального сервис-локтора, который тоже можно более-менее "заныкать". Фреймворк создан для быстрого старта, чтобы развернуть его и начать решать задачу, а не готовить один лишь "фундамент" месяц.
Лично мое мнение, что нет идеальных решений, есть только рамки за которые не имеет смысла уходить для бизнеса/ситуаций. Нужно уметь плавать между "правильно" и "резонно", уметь ходить по лезвию ножа именуемого "расширение". Можно прочитать множество умных книжек или наслушаться огромного количество мнений, но не стоит пренебрегать возможностью мыслить самостоятельно. Вас не сделает хуже, как профессионала, отступление от каких-то рекомендаций или советов авторитетов. Вы не обязаны им следовать. А вот конформное использование технологий, практик, подходов - вполне. Не все то хорошо, что так популярно, и не все то хорошо, что восхваляют многие.
Yii дал мне огромный пласт полезной информации в начале моего пути как программиста. До Yii у меня был опыт с Joomla, Zend Framework 1 и Magento, но больше всего в голове отложились именно воспоминания об этом фреймворке. Ну, и еще книга Александра Макарова. Было интересно читать. Поэтому, спустя время и осознав весь свой опыт я могу сказать, что Yii не говно. Я благодарен этому фреймворку. И мне бы очень хотелось, чтобы он продолжал развиваться в своей нише без взгляда на другие фреймворки дабы не терять свой стиль, свои черты, свой характер.