Зачем использовать готовые решения?
Когда начинал, везде предлагали брать готовое решение, а не изобретать свое чудо...Есть две полярных и при этом правильных точки зрения.

Нужно писать своё, чтобы учиться (как вы описываете в вопросе). И чтобы понимать как работают готовые решения и почему именно так.

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

1. Экономия времени. Достаточно написать и после интегрировать в свои проекты..."Достаточно написать" обычно для велосипедов измеряется годами, с учётом всё новых и новых требований и найденных багов.

2. Правильное решение. Соглашусь, но если практиковать свои навыки, разве у вас не получится также?Опять же - речь про годы практики.
Во первых самое важное в программировании - писать аккуратный и понятный код.   Это можно достигнуть только если архитектура  движка или фреймворка  способствует этому.   И основной и самый главный критерий:  минимум усилий = максимум возможностей = максимум результатов. 

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

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

Поэтому если есть возможность нужно самому разрабатывать движок с основным   (MUST HAVE)  функционалом и строго по паттерну.   

Я сам совершенствую свой фреймворк PWAA (proper web application architecture) ,  для важно универсальность, полная свобода действий,  стандартизированная структура приложений и самое главное высокая производительность вне зависимости от сложности проекта. 

Так что не забивай на свой внутренний голос ))