Очень частый вопрос начинающих разработчиков: «что изучать?» Php? Ruyb? Python? WordPress? 1C-Bitrix? Joomla? Yii2? Ruby On Rails? Django?
Сразу скажу, что мы будем сейчас рассуждать со стороны FullStack разработчика занимающего фрилансом.
Мое мнение такое: знать нужно все. Хотя бы по чуть-чуть. Чтобы понимать для себя плюс и минусы той или иной технологии. Звучит страшно, поэтому постараюсь объяснить зачем и почему.
К примеру, я знаю и ruby и php. Приходит ко мне человек с заказом на одностраничник. Зачем мне его ставить на RubyOnRails? Для этого надо будет сервер покупать, делать сложную систему выгрузки сайта на сервер, да и потом человеку чтобы обслуживать сайт, необходимо будет искать людей, знающих RubyOnRails. Да и налаживать эту экосистему ради того, чтобы «форма захвата» работала на сайте как-то не рационально.
Другое дело php. Залил пару файлов на хостинг любой, отправление почты одним файлов подключил и готово. И любой «опездух» на фрилансе сможет внести правки.
Заметьте, я не говорю, что ruby хуже php. Просто в этой ситуации php выигрывает.
Или нужен человеку блог. Зачем городить админки и кучу функционала писать с нуля? WordPress изначально создавался для блогов. Поставьте сайт на WordPress.
А если интернет-магазин? Есть 1C-Bitrix. И скорее всего есть еще более удобные CMS для интернет-магазинов о которых я не знаю. Найдите что-то сверх заточенное под интернет-магазины.
Ну а что делать, если надо написать абсолютно новый сервис, под который никогда не создавались CMS? Конечно есть фреймворки. Php-Yii2, Ruby - RubyOnRails, Python - Django, Java - Spring. Выбирай на вкус и цвет.
На самом деле именно в этой ситуации по большей части начинаются проблемы. Допустим, есть задача: «сделать конструктор обучающих программ для онлайн-школ».
Что делает человек, знающий только WordPress? Начнет искать кучу плагинов, нашпиговывать в бедный WP эти плагины, в итоге сайт разрастается, становится не удобным, не читаемым, не обслуживаемым.
А по большей части люди, знающие WP умеют работать только с плагинами. Они не понимают как работает код, не могут вносить «индивидуальный» функционал и работают только в рамках того, что предоставляет плагин. В итоге получается шаблонный сайт, ограниченный по функционалу.
Ладно еще 1C-Bitrix - там есть встроенный мини-фреймворк, на котором можно что-то навоять, но это будет сложный, громадный монстр.
Другое дело MVC-фреймворки. Быстренько развернул рабочую среду, создал базу данных индивидуально под проект, нагенерировал контроллеров с вьюшками и в бой. Всегда знаешь где что лежит, кто с кем взаимодействует, куда и зачем обращается.
К чему я это все разглагольствую? Нет плохих и хороших языков. Нет плохих и хороших CMS, нет плохих и хороших фреймворков. Есть технология, подходящая под конкретный проект и удовлетворяющая потребности разработчика и заказчика. И точка.