Editor's Note

Too Many Swimming Pools

Howard Dierking

  

I have always loved design. From my very first design project in the fourth grade when I designed my dream house, I have always derived a great deal of satisfaction from being able to put all of my crazy ideas out there to visualize and then to explore the alternatives and new possibilities they present. There's nothing quite like that feeling when all of the pieces just fit together in that perfect way.

I have spent the majority of my career seeking out that perfect design in software systems. I've studied the patterns, I've read the UML specification, I've embraced practices such as Test-Driven Development (TDD) and Domain-Driven Design (DDD), and I've built some systems that I remain very proud of to this day.

I've also built some systems that I've had to rewrite almost immediately because I was so focused on applying the latest and greatest design pattern that I completely missed the business problem that I had been asked to solve.

So what have I learned over the years in the area of design? Jumping back to my fourth grade dream house project for a moment, I should mention that because I wasn't required to actually build the house, my design became somewhat disconnected from reality. By that, I mean to say that I designed a 14-story house with four swimming pools, a couple of bowling alleys and a few gymnasiums (come to think of it, I don't remember adding any bedrooms) that was 400 feet underground with a rollercoaster connecting the house to the earth's surface.

When I look back at those systems I designed that were complete failures, two patterns (or anti-patterns) emerge. The first is that much of the initial design work was done in a vacuum using a modeling tool rather than a programming language. The second is that many of the designs were based around being able to use a pattern rather than letting the patterns emerge. As such, the resulting applications came out looking much like my dream house—they looked great on paper but were nearly impossible to implement. In other words, they had too many swimming pools and not enough living space.

So what does this mean for you as a reader of MSDN Magazine? After all, one of the key pieces of information that we learned from our latest reader survey is that you want to see more content on software design. I'm happy to let you know that we are going to be bringing you more of this type of content. As you can see, we've started in this issue by covering topics like dependency injection and continuous integration. Additionally, we are currently in the process of planning a new column specifically around software design best practices. That said, we will maintain a commitment to staying grounded in reality, so that you can apply these techniques in a way that will keep your projects from looking like my fourth grade dream house.

And, as always, we will continue to maintain a balance of content across all of the other programming topics, from service and Web 2.0 development to concurrency and security. This brings me to a few announcements. Keith Brown recently decided to stop writing the Security Briefs column in order to pursue other interests. While this is obviously a great loss to us, I am happy to let you know that Michael Howard is coming on board to continue the column. We are very excited about the wealth of experience that Michael brings to the column, and we anticipate great things going forward.

Finally, starting with next month's issue we are launching an entirely new column focused on all things mobile. With the seemingly constant barrage of new and more sophisticated devices, we anticipate an even greater need for systems that can run anywhere and on any device—and the goal of this column is to have a more regular conversation around how to meet that need as a community of developers.

Thanks to the following Microsoft technical experts for their help with this issue: Glenn Block, James Brundage, Ben Carter, John Cunningham, Elisa Flasko, Steve Fox, Scott Hanselman, Habib Heydarian, Lee Holmes, Ade Miller, Larry Olson, Polita Paulus, Michael Puleio, Karthik Ravindran, Stephen Toub, Eric White, and Jon White.