When my wife and I bought our first house, the home inspector reported a "slight suspicion" that the house might have been used in the past as a marijuana growing house. It hadn't. But the result of that comment was that I spent several weeks managing a complex flow of documents between lawyers, banks, insurance companies, police, and realtorsall of whom were ostensibly working for me, but none of whom were willing or able to talk to each other. Even within the same office, different people didn't seem to know what others were doing. If someone had come to my door offering an integrated end-to-end solution to home buying, he could have named his price.
Many businesses face this situation every day. They clearly know what their goals are, but much of their time is spent managing the friction between vendors and tools that are supposed to help them solve problems. Software development is no exception. As an industry, we are skilled at innovating new products to address new problems; however, customers almost never use a product in isolation, despite what some product teams may believe. The reality is that across their businesses, customers use a variety of products in a variety of roles. Work is handed off from one business unit to another, from one specialty to another, and in the absence of anything better, their integration tool of choice is copy-and-paste. Part of the solution to this problem lies in support for open standards, though that push really has more to do with how competing vendors of the same technology agree to interoperate. However, while necessary, standards are not sufficient. Even when there's an agreed-to set of standardsindeed, even when products originate from the same vendorcustomer attempts to get a set of products from across their business to work together often fall short.
In this article, I describe IBM's "green threads" project, an ongoing internal effort to drive better interaction and integration across products and brands so that customers can focus on their goals, not their software. Our aim is to foster discussion in the development-process community and assist others in evaluating and implementing what we feel is an essential quality process for any software organization.