Impedance mismatch in Development
In Java is the SUV of programming tools a widely quoted article by Philip Greenspun he raises the issue of complexity. While I favor Java as a programming language I think he raises a few interesting issues.
The problem is not the programming language but rather the infrastructure we have built. To create an application that takes a string as input through a web form and then stores it in persistently a developer must know a wide range of technologies. This is true no matter which particular approach they use. If I use Java it is HTML/JSP/Servlets/Java/JDBC/SQL at a minimum if I use another approach the stack is similar (HTML/PHP/CGI/Perl/DBI/SQL). The number of transformations the simple string goes through from the web page to the database is significant. The impedance mismatch comes from the need to translate amongst datatypes. If it is a real world problem with complex types the problem quickly becomes hard.
Developing applications with clean interfaces and separation of presentation layers, business logic and persistence is moving to the extreme. Some of the work on orthogonal persistence attempted to simplify the problem but it ran into its own set of issues around being too tightly coupled.
The internet is a wonderful application development platform but we are making it too complex to do useful and simple things. While XML has its own set of issues it does reduce the impedence issue if an XML datastore is used. There are still several technologies in play but one data format. (XHTML/XSLT/XML/REST/XML-Store) - are we better off?