I was reading another great article by Joel on the Law of Leaky Abstractions. Simply stated, programming advances by creating abstractions of complex processes. ASP.NET makes web development simpler. However, it does not relieve us of having to learn CSS, XML, XSLT, XHTML, javascript and C#. Instead we must learn all of these technologies and having done so, we are able to develop web sites more rapidly but we must now know more then we had to before.
This concept is probably best illustrated by TCP/IP Socket programming. No matter how well a library is written you should still learn TCP/IP to use it effectively.
I believe that this is the reason that even as tools, techniques and hardware constantly improve, software quality is not improving at the same rate. The troops in the trenches have to keep elevating thier game to keep up.
The article:
http://www.joelonsoftware.com/articles/LeakyAbstractions.html