Client/server computing, one of the biggest IT topics of the 1980s and 1990s, has followed a familiar path for technology: from hype, to disillusionment, to maturity, to decline. Computerworld's Jan. 1, 1990, Forecast issue said: "Get ready for a teeth-gnashing, roller-coaster decade as users make a painful transition to a networked, client/server computing environment." Indeed, early client/server rollouts were costly and unreliable. In 1993, we quoted an IDC analyst saying, "Folks who went early into client/server development are 'strategically realigning.' That means they are in full retreat." The mainframe wasn't dead, after all. But standards and tools evolved, and so did skills, and companies began to reap the advantages of client/server -- scalability, flexibility and ease of application development. More recently, developers have discovered that still more tiers can bring better performance, flexibility and scalability. Applications can be broken into presentation, business logic, data access and data storage layers, each residing where it works best. Stir in Web-based clients and Web services, and those advantages are magnified. Apparently, client/server was just a steppingstone.
Elusive software quality
Since the 1980s, a profusion of development methodologies have gained and lost favor. Computer-aided software engineering, object-oriented programming, the Capability Maturity Model, extreme programming and other ideas have each been touted as the next most promising way to build high-quality software.
The results have been mixed. In 2004, the Standish Group estimated that 18 percent of IT development projects were canceled, down from 31 percent in 1994. However, "challenged projects," ones that failed in part, held steady at 53 percent over the decade. Even the vaunted peer-group quality-control system of open-source can produce bad code. Research funded by the U.S. Department of Homeland Security found that Linux 2.6 had over 68,000 lines of flawed code.
The geeks go to business school