Абстракция является ключевой концепцией компьютерного программирования, и фреймворки помогают программистам достичь этого. Это хорошая вещь. Я сомневаюсь, что многие из нас хотели бы разработать сложные системы на ассемблере! Я думаю, что проблема возникает, когда программисты мало знают о том, что маскирует слой абстракции. Другими словами, вам нужно иметь некоторое представление о том, что происходит под капотом, даже если вы не взаимодействуете напрямую или не взаимодействуете с ним.
Я помню, как разрабатывал некоторые из первых динамических веб-сайтов еще в середине 90-х годов с использованием C и CGI (в то время, когда большинство веб-сайтов все еще работали со статическим HTML). На самом деле не было ни одного зрелого языка сценариев на стороне сервера (такого как PHP или ASP) и очень мало библиотек, поэтому вам приходилось записывать весь поток HTTP-ответов на сервер с каждой страницей. Разбор параметров GET и POST требует написания вашей собственной библиотеки. Это было утомительно, медленно, усердно и очень подвержено ошибкам. Я не пропускаю это ни капли!
Однако я также чувствую, что фреймворки, такие как веб-формы ASP.NET, абстрагируют всю природу сети без состояния до такой степени, что многие новые веб-разработчики не имеют ни малейшего представления о том, что на самом деле происходит под капотом. Это приводит к неэффективному, раздутому коду, который работает плохо, потому что разработчик соединяет компоненты вместе, используя методологию «drag'n'drop», не понимая, что происходит на уровне HTTP.
Итак, я считаю, что фреймворки необходимы для разработки программного обеспечения высокого уровня, но они не освобождают разработчиков от некоторого понимания того, что абстрагируется. Да, фреймворки могут сделать вас глупыми, но только если вы их не поймете.