Abstrakcja jest kluczową koncepcją programowania komputerowego, a ramy pomagają programistom to osiągnąć. To coś dobrego. Wątpię, aby wielu z nas chciałoby opracować złożone systemy w języku asemblera! Myślę, że problem pojawia się, gdy programiści nie mają pojęcia, co kryje się pod warstwą abstrakcji. Innymi słowy, musisz mieć pojęcie o tym, co dzieje się pod maską, nawet jeśli nie wchodzisz w bezpośrednią interakcję ani nie komunikujesz się z tym.
Pamiętam tworzenie niektórych pierwszych dynamicznych stron internetowych w połowie lat 90. przy użyciu C i CGI (w czasach, gdy większość stron wciąż była statycznym HTML). Tak naprawdę nie było dojrzałych języków skryptowych po stronie serwera (takich jak PHP lub ASP) i bardzo mało bibliotek, więc trzeba było napisać cały strumień odpowiedzi HTTP na serwer z każdą stroną. Analiza parametrów GET i POST wymagała napisania własnej biblioteki. To było nudne, powolne, pracowite i bardzo podatne na błędy. Ani trochę za tym nie tęsknię!
Jednak czuję też frameworki, takie jak formularze internetowe ASP.NET, które abstrakują całą bezstanową naturę sieci do tego stopnia, że wielu nowych programistów nie ma pojęcia, co właściwie dzieje się pod maską. Prowadzi to do nieefektywnego, rozdętego kodu, który działa słabo, ponieważ programista łączy elementy razem przy użyciu metod „przeciągnij i upuść”, nie zdając sobie sprawy z tego, co dzieje się na poziomie HTTP.
Uważam więc, że frameworki są niezbędne do tworzenia oprogramowania na wysokim poziomie, ale nie zwalniają programistów z rozumienia tego, co jest abstrakcji. Tak, ramy mogą sprawić, że będziesz głupi, ale tylko jeśli ich nie zrozumiesz.