The Future of Software Architecture

In an exclusive interview, John deVadoss discusses software architecture and Microsoft's new certification program.

John deVadoss, Director of Architecture Strategy at Microsoft, sat down with Visual Studio Magazine's Patrick Meader to discuss software architecture and Microsoft's new certification program.

Patrick Meader: You've spoken in the past about the need for a new architecture to accommodate the rapidly changing software landscape. Can you explain how you see the landscape changing, and what kind of architectures you think are necessary as a result?

John deVadoss: The landscape for developers and IT is changing across multiple perspectives, including social, business, technical, and technological perspectives.

Consider the social perspective, where user-generated content, discovery as the new navigational paradigm, rich content, and tagging and associated ranking and rating are driving emergent taxonomies—or folksonomies. The user is at the center of all of these trends.

From a business perspective, micro-transactions, new business models for monetization (free/ad-based/transaction-based/subscription), and the potential to monetize the long-tail are trends that have far-reaching impact on the architectures of the software systems that we design and build.

You also see significant changes from a technical perspective, including power at the edge, the emergence of mesh networks, high levels of bandwidth and connectivity, and support for rich content. Today, there are opportunities for software models that were not possible five or seven years ago.

Finally, the technology perspective gives us lightweight technologies such as POX [Plain Old XML], Ajax, RSS, and SSE [Streaming SIMD Extensions], which have really entered the mainstream in ways that continue to surprise many architects in the enterprise space.

I would argue that we are at an inflection point for enterprise architecture, that the classic distinction of enterprise vs. consumer is less relevant than it has ever been in the past, and that architects in the enterprise need to embrace the best of the Web.

From an architecture modeling perspective, I think the base capabilities will be overlaid with higher-level capabilities. For example, we need to move beyond enabling identity management to enabling relationship management. We also need to move beyond data management to enabling the creation and sharing of rich content, from process to collaboration, and from messaging toward discovery and search.

PM: I've heard a couple people at Microsoft refer to the software as a service (SaaS) paradigm. What is this, and how is it different from&mdashor the same as—the more commonly heard service-oriented architecture (SOA) we've been hearing so much about?

JdV: Service orientation is a style of architecture. It's focused on breaking down the monoliths in the enterprise in order to increase agility. It is not the end goal—architecture is never the end goal. The end goal is to create business value, to address business challenges, and to enable the business to exploit new and emerging opportunities.

What's driving what we call SaaS is that computing and communications technologies have dramatically and progressively improved, and the ubiquity of broadband and wireless networking has changed the nature of how people interact. People are being drawn toward the simplicity of services and service-enabled software that "just works."

We have an opportunity to exploit the Internet to make software far more powerful by incorporating a services model that will simplify the work that IT departments and developers have to do, while also providing new capabilities—a model of Software + Services that delivers seamless experiences by fusing them together.

PM: The description for your upcoming talk at VSLive! Orlando asserts that "the business and social models that drive software and commerce are changing as well." Can you explain what is meant by this, and what it means not only to architects and software designers, but also to developers and those who must maintain the software once it is created?

JdV: I believe that architecture is fundamentally about two things: modeling, to address complexity; and the long view, or what some people call forecasting.

In today's environment, there are changing business, social, technical, and technological drivers that are influencing architecture in ways that many of us did not envisage a decade ago.

On the social dimension, consider the success that folksonomies have had. Consider the challenge of knowledge management: I know many organizations that have invested considerable amounts of time and money on this problem, but have yet to see return on their investments. On the other hand, the user-generated content model of efforts such as Wikipedia is tellingly successful.

From a business dimension, consider micro-transactions such as in ring-tones or ad-based revenue models such as AdCenter and AdSense. More importantly, consider our ability to monetize the long-tail. These are fundamental drivers that impact software solutions and their underlying architectures. Architects, business analysts, and developers (among others) need to be aware of and be in a position to exploit these trends.

The challenge that I see for architecture and architects (and developers) is a cultural one. We need to be able to look beyond the classic enterprise architecture principles and exploit these emerging trends. I would argue that we are at an inflection point for enterprise architecture, and we need to leverage the best of the enterprise and the consumer space. We cannot ignore these trends; either we exploit them or we get run over.

PM: There has been considerable debate about what a software architect is, and what role he performs in a company. Microsoft has recently initiated a certification process for software architects, so it would seem that the company itself is attempting to define this role more exactly in terms of what knowledge is expected. Can you provide a quick overview of what Microsoft is testing for, and what is generally expected of candidates seeking certification as a software architect?

JdV: The Microsoft Certified Architect Program validates top industry experts in IT Architecture. These professionals have 10 or more years of experience in IT with at least three years of experience as a practicing architect, possess strong technical and leadership skills, and form a distinguished community. Unlike other IT certifications, this credential was built and is granted by industry architects, as candidates must pass a rigorous review board with previously certified architects.

The Microsoft Certified Architect Review Board is composed of four voting members, a moderator, and a recorder. The moderator's job is to keep the board on schedule and to execute the voting process. The recorder takes notes of the deliberation process, and the recommendations that the board provides to both successful and unsuccessful candidates.

All board members must undergo training before they can serve on the review board. The formal nature of the program and the strict adherence to process provides confidence that candidates will be treated equally and quality will be maintained. Today, board members are a mixture of certified architects and senior technologists drawn from Microsoft, partner companies, and customers.

This certification is targeted at practicing solutions architects and infrastructure architects who have successfully applied frameworks and methodologies to create an architecture that serves the entire IT lifecycle. These architects can employ multiple technologies to solve business problems and are able to provide business metrics and measurements to describe the success or failure of the projects they drive.

PM: Visual Studio Team System, and its Team Foundation Server in particular, herald a big step by Microsoft into the ALM space. What prompted Microsoft to stake out a position in this space, and what does Microsoft provide with its offering that other vendors haven't offered so far?

JdV: Today's software development world is dominated by increasing technical, managerial, and usability challenges. The overwhelming complexity of modern distributed architectures and the need to integrate disparate systems and legacy applications generate unprecedented challenges for software engineers.

A backdrop of increased industry regulation and constant change, combined with globalization and offshoring of software development, makes it harder for managers to control and ensure the predictability of software initiatives, and then to create tools with VSTS and TFS specifically that bridge these roles and provide business value to our customers.

At Microsoft, we've tried to determine the development capabilities and user capabilities that bring together the breadth of roles involved in the success of software initiatives at the heart of business value.

Customers tell us that they love the simplicity and integration of our process and tools. Put another way, we are bringing software-engineering–discipline design principles to the masses by making it transparent within the tools environment.

Valuing community and collaboration over contracts and organizations, skills and contributions over processes, relationships over mandates, and flexibility and improvement over plans and schedules is how I connect our offerings to the software landscape that I described earlier.

PM: There are several tools and vendors in the ALM/SOA space, but widespread usage of such tools is often questioned. For example, a relatively scant percentage of developers use modeling software. Why will companies flock to use VSTS and Microsoft's other ALM/SOA offerings, when such use has been limited in the past? Being the big fish in a small pond hasn't really been the Microsoft way, so I assume you see this market opening up. Why is that, and what does it mean to software architects?

JdV: We understand how to deliver productivity to software development. It's the strength of our past and our present. We also understand the needs of individual productivity for the developer. With VSTS, we are extending this to team and organizational productivity.

The differentiation is all in our approach. Software engineering has been talked about for years, but it's difficult to get people on board because, in the past, the process has been too heavy and the tools weren't integrated well, in addition to being too difficult to use. That's why process is ever-present within Visual Studio Team System, yet transparent to the developer and the development team.

Our approach is the antithesis of heavy process. We make sure the process that managers want doesn't weigh down the individual developer. The process that managers want is something that, in the end, makes it easier for developers to understand and deliver expected value. You can sum up our approach best as "agility with discipline."