"С другой стороны хорошо написанный фреймворк учит нас быть собранней, задает правильный тон программирования, знакомит с разными концепциями, позволяет взглянуть на код написанный профессионально." - нет, хорошо написанный фреймворк задает правильный с точки зрения его разработчиков тон программирования.
В вопросе выборе технологий нужно знать одну простую вещь. Выбирая именно фреймворк, вы сознательно отдаете себя в руки тех, кто его написал, рассчитывая на ИХ знания архитектуры ПО в принципе, на ИХ понимание того как надо реализовывать ее на том или ином языке, с той или иной парадигмой. И несмотря на то что в этих ваших интернетах все как один заявляют что "ну они-то взрослые дяди, они умеют делать хорошо", я бы с этим очень сильно поспорил. По-любому слышали ряд слов "пхп", "говнокод", "ну он же пэхапэшник" и т.п. - так вот, даже люди которые делают собственно сам пхп, если почитать историю релизов, явно не самые умные дяди, и я не думаю что те кто придумал тот или иной фреймворк сильно умнее. Это я к примеру.
Изучайте архитектуру ПО, множество таких вопросов отпадет. Если начнете читать Фаулера или Банду четырех - то буквально в предисловии найдете различия между библиотекой и фреймворком. Правда, о последнем там скажут в контексте написания фреймворка, а не использования.
Прежде чем начать изучать какую-либо технологию, ну или как можно ее назвать в данном контексте - "надстройку над" чем-то более глубоким - изучите это более глубокое. А тут возникает уже такой вопрос - что может Ruby без Rails? Что может PHP без YII, Symphony? Даже тот же Python крайне хорош для админстрирования системы, а Perl прекрасно работает с текстами, и держит планку. На вашем месте я бы сразу глядел в сторону C, C++, C#, Python, Perl и т.д., и изучал бы сами языки, а уже потом, со знанием языка, его использования в той или иной парадигме программирования, работы с памятью(, и т.д. и т.д. и т.д.) думал бы о фреймворке.
P.S.: Некоторые могут вылезти с комментариями типа "ну он же новичок", "пусть лучше начнет с интерпретируемых языков", "С и плюсы слишком сложные", "все так начинают" и т.п. Вот тогда и скажите мне, как много интерпретируемых языков и уж тем более фреймворков (в том числе и для С и плюсов) года например 80-ого вы можете назвать, и на чем например будущие программисты после окончания своих ВУЗов писали программы году так в 75ом.