Editor's Note

The Complexity of Complexity

Howard Dierking

  

As developers, it seems as though we are under ever increasing pressure to manage new dimensions of complexity. We are asked to author and maintain systems that support progressively more complicated business rules and processes. We are asked to create dynamic, interactive, and integrated user experiences over a variety of media. And, always, we face pressure to understand and leverage nuances of the latest and greatest hardware designs.

What is the solution to this escalating complexity? If history is any teacher, the solution is to create new metaphors and new abstractions. Metaphors let us use existing language and experience to communicate about specialized subjects in a general way. Similarly, abstraction facilitates better design by hiding details that would otherwise cloud our ability to effectively separate different elements from one another. Ultimately, abstraction lets technology specialists create software elements with minimal dependencies on other elements, while metaphor enables generalists or specialists in different areas to intelligently discuss and apply those elements to create elegant solutions.

I recently joined MSDN® Magazine after spending the majority of my career designing and developing software for a variety of different industries. As I'm sure you can imagine, there are many moving parts in the process of publishing a magazine—and for a newcomer, it is easy to feel overwhelmed by the complexity.

However, just as in my developer days, I have found abstraction and metaphor invaluable in giving me a structured way by which to learn the business. For example, details of the editorial and production processes are effectively abstracted from one another—editors don't have to know all the mechanics of creating a layout, and the production folks needn't care how the manuscripts were acquired and massaged. Metaphors such as "pouring" describe the process of transferring edited text into the layout. All in all, it's nice to know that some of the skills I built up as a developer are not completely useless in the magazine business!

In this issue of MSDN Magazine, we explore how the complexity you might be facing in your daily software development tasks is being addressed through new tools and metaphors. For supporting increasingly complex business requirements and demands, Bill Horst discusses how type inference raises the level of abstraction in code from the CLR type system closer to the business domain. Bill Chiles takes this notion of intentionality in programming a step further in his discussion of the dynamic language runtime (DLR). For enabling richer user experiences, Dino Esposito extends the service metaphor to patterns of Web presentation with Part 2 of his column on ASP.NET AJAX. Daan Leijen and Judd Hall describe how the Parallel FX library abstracts away specific low-level details surrounding how to take advantage of new hardware innovations such as multiple processors and multi-core processors. Joe Duffy and Ed Essey then describe how the existing language metaphors are being extended to support these abstractions in Parallel LINQ.

In the end, the successful creation of new metaphors and abstractions will undoubtedly lead to new degrees of complexity and the need for new metaphors and abstractions. However, with each new layer of abstraction, the size of problems we are able to solve through software grows in proportion. So in that light, what metaphor should we create for the vision of MSDN Magazine? Here are a few thoughts: rock concert, hammer, mirror, disco ball.

What about you? E-mail us your thoughts and ideas—who knows? Your idea could help to shape the very vision of the magazine for the next several years! —Howard

Thanks to Thanks to the following Microsoft technical experts for their help with this issue: Mahesh Prakriya, Kit George, Umachandar Jayachandran, Rob Earhart, Eric Li, Sandeep Ranade, Rob Shewan, Judd Hall, Ed Essey, Vance Morrison, JJ Johnston, Daniel Moth, Mike Hall, Jordan Parker, David Aiken, Joe Duffy, and Stephen Toub.