Thursday, February 28, 2008

IT Is Dead

IT Is Dead. Long Live IT.
The Revolution is Coming.

IT is undergoing a radical transformation, especially in the United States. Over the last decade, we’ve seen the Internet revolution, the Dot.com bubble burst, the Object-Oriented paradigm shift, the evolving Model-Driven-Development paradigm shift and now mass outsourcing of jobs to other countries. We’ve seen development frameworks such as J2EE and .NET grow exponentially in their complexity and the services they provide and offer. We’ve seen server farms and clusters and the hosting service providers that manage them all for you off-site. We’ve seen massive development tool changes that leverage all of that nearly automatically. What does all of this mean for Information Technology as we know it? How is this going to impact our careers, our society, and our economy?

Development over the years – the Paradigms Shift

Over the years, we’ve had three major paradigm shifts in the development side of the industry. We’ve had major shifts in the infrastructure architecture as well.

The original development paradigm – the sequential paradigm – involved linear programs. This paradigm dates back at least to the early 1800s, and is still used today. The procedural paradigm was introduced commercially with the C programming language in 1970, and offered the first real reuse of code in the form of procedures. The object-oriented paradigm really hit the streets in 1987 with the introduction of C++, and delivered the promise of reuse that began with the procedural paradigm by creating self-contained objects – a combination of data and code to operate on the data – that can be extended by other developers. This is the paradigm we’re in now – Java and the .NET languages are all object oriented languages.

On the infrastructure side, we’ve seen monolithic architecture – all the work was done by a single computer, usually a mainframe – evolve into client-server, where some work was performed on a PC networked to a database server. In the early 90s, we saw the introduction of the web server and browser, which gave us a 3-tier environment – browser, web server, and database server. Adding in an application server between the web server and database server to handle business logic for both web server clients and traditional clients (such as VB Forms or Java Swing clients) led to a 4-tier environment, but 4 quickly became more so we called it the n-tier architecture. The “n” typically means 3 or more in this case. Server to server communications across the Internet – especially between companies – uses standard XML based Web Services.

Development Today

The modern Enterprise Developer uses high-level Model-Driven Architecure (MDA) tools – such as Sun’s Enterprise JCreator, IBM’s Rational Application Developer, CompuWare’s OptimalJ, the OpenSource (tm) AndroMDA or Microsoft’s Visual Studio.NET – that inherently know how to exploit high level frameworks, design patterns, and object-oriented components at the lowest level to quickly produce n-Tier applications across several servers – including vendors and suppliers servers accessed across the network. Writing database driven code is out – that’s handled done by the framework. Web pages aren’t written – they’re assembled using best-practice driven wizards. Application flow isn’t determined by code – it’s modeled in UML and generated by the tools.

That’s the state of the art today, but many shops are using older techniques – manual, hand-driven techniques that are cumbersome by today’s standards. They don’t see or can’t imagine themselves using the state of the art tools. They’re faced with rising IT costs and the option of outsourcing IT to another company or another country.

Development Tomorrow – the Next Paradigm Shift.

So if that’s the state of the art today, what’s the next paradigm shift? If you look at the time lines, we’re just about due for the next paradigm. If you look at the state of the tools today, they indicate we’re really on the verge of another breakthrough. So what is the next step?

At the level of automation that’s possible today, the next probable paradigm is self-generating code. Tools will evolve so that they need direction on what needs to be accomplished, but exploit the high-level frameworks and design patterns that have proven to solve most business needs in the past and be able to choose them. Pundits have been saying this for years but up until now it’s really been the realm of science fiction. But now the tools are close. Some might even argue they’re already there. The last missing components are data about the successful and unsuccessful implementations of various design patterns under certain situations and expert-system wizards that drive the “development” process based on that data. Right now that information is stored in the brains of a handful of senior system architects. The tools need background data on which patterns and frameworks work most effectively and under which environments. Using this data, expert systems can collect data from the “developer” about what the business process looks like, the type of data to be collected, and the services to be provided. The rest can be auto-generated, assembled, packaged, and deployed to your n-Tier architecture – the one you’ll be leasing from the hosting company.

[Article is truncated. Contact author for details.]

No comments: