Daily Archives: January 19, 2006

Software Productivity

The biggest problem for business and industry today is software productivity. It is just too expensive and difficult to develop and maintain the necessary IT applications and systems. And yet everyone depends upon computers to operate their businesses.
View image
Companies have literally no idea what their IT spend should be relative to other corporate expenses, and have difficulty understanding the relationship of IT spend to strategic corporate initiatives. IT projects sustain failure rates that would never be tolerated in any other functional department. Nobody understands the relationship of the high cost of enterprise IT to its benefits.
The solution to the problem is easily stated but very hard to achieve. The IT industry needs meaningful enterprise software standards.
View image
We have seen the “Web of documents” (aka the World Wide Web) succeed beyond anyone’s wildest imagination.
View image
But the Web of data and services for enterprise software systems remains brittle, inflexible, and a mixed bag. Companies still have to deal with the classic spaghetti problem.
View image
While HTML and HTTP have provided consistent standardization for human to computer interaction, and today you can find or buy almost anything on the Web, standards for program to program communication are not yet widely and consistently implemented. Companies still can’t connect their departments or assimilate aquisition applications easily enough or for a reasonable enough price.
The reason IT cost remain so high is labor. Desipte all its advances, software remains a craft industry, relying upon the skills of individuals to bridge the gap between technology and business.
View image
Scientific and industrial methods need to be applied to IT software. It should be possible to take a given set of inputs and match them predictably to a desired set of outputs. It should be possible to develop a set of reusable, interchangable software components and assemble them rapidly into finished applications.
View image
The key to all of this — the mass assembly of software, the introduction of scientific methods and predictable projects, the ability to easily understand and reasonably predict the value of IT investments — is the standardization of application endpoints, or interfaces.
Historically, many attempts have been made to standardize software: COBOL, C, C++, Java, CORBA, MIA, SPIRIT, J2EE, DCE, DCOM… All of these efforts tried to unify the computing world using a single technology. Web services are different. WSDL and SOAP, for example, were written to be communication protocol independent. Meaning these standards acknowledge and embrace technolgoy diversity.
Also, the industry itself appears finally ready for standardization. Software is not changing as rapidly as it was a decade ago and it is starting to commoditize. Companies today have invested in enough IT assets and instead need a better way to use them — a way to improve on what they have. They don’t need more foundational software such as application servers, EAI brokers, database management systems, or packaged applications. Instead they need an architecture (SOA), the standards (WSDL), and the tools (a WSDL based ESB for example) to rapidly expose services and predictably and reliably assemble them into composites.
I gave a version of this presentation at the W3C Advisory Committee meeting in Montreal last December. The occasion was a panel discussion about the future direction of the W3C. I was basically proposing that the W3C shift its investments toward Web services and help solve the problem of enterprise software standardization. Fixing the problem would be the biggest impact the W3C could have on business and industry, and therefore on the world’s economy. Several representatives from other companies agreed with me. I don’t know what, if anything, will come of it but I know they are considering the idea.
View image
In the early days of Web services I used to think that this would be the basis of a unifying architecture across the enterprise firewall, unifying the Web of documents with the Web of data and services (to use the W3C terms).
Today I’m not sure it really makes sense to think about one Web like this. Maybe we need to define a different Web for the exernal world, and another for the internal world of enterprise software. Then we could talk (for example) about connecting REST and WS-* rather than debating which is the best. Maybe this would make it easier to finally achieve the goal.
Anyway, as I told Tim Berners-Lee after the panel discussion, I am an optimist, and I am hopeful we can do something to fix this problem.