One argument that I hear is that all these abstractions allow the developer to focus on delivering products and not worrying about the nuts and bolts of the underlying system, but in my experience the best and most efficient developers have been the ones who know how the systems work.