Editor's Note
Elevating Test and Debug


Programming is fun. It's one of the world's great jobs, pure mental exercise with a golden payoff at the end. There's nothing like the feeling of accomplishment when that program you wrote is working, looks good, and is ready to ship. Then you sit back, sip your margarita, and watch the sales pour in, right?

Of course, it's never that easy. You can think up a program, slap a few lines of code into Visual Studio, and watch it work. But the actual implementation is only a small portion of the development process. You need to design the program. You need to redesign it to take system limitations into account. You need to test it. You need to debug things that don't work properly. You need to track down memory leaks—even if you're using the .NET Framework.

All these tasks are too often thought of as secondary to the task of programming software, and that can quickly be to your project's detriment. For too long, design, testing, and debugging have been treated as second-class jobs by many in the world of programming. Many companies have built-in animosity between dev and test. Testers are seen as people who can't handle development and who make the devs' jobs harder by running unlikely scenarios just to try to break perfectly good software.

The former idea—testers are lightweight devs—should never be true in a quality software process. The latter—testers are annoying sticklers—should, on the other hand, always be true. As the complexity of software increases, and as more people are affected by a piece of code, the role of testers becomes more visible than ever. Our magazine has long covered the development angle, with a bit of debugging thrown in. This month, we felt it was time to recognize the role of the whole development process by discussing a variety of aspects from architecture to testing to scaling.

You'll find several articles this month that talk about how to add quality to your software products. One of the most persistent coding errors in Windows-based programming over the past decade has resulted in the GDI memory leak. We'll show you how to track down and eradicate many of these problems in your code before it starts running more slowly than a toddler on a trike.

The best idea of all might be one that's still not popular, but is gaining a little momentum. Instead of creating lifelong dev and test career tracks at your organization, why not try a little swap? Every 18 months (or once a project), your devs go into test, and your testers go into dev. Today's world of testing requires a lot more than just running prepackaged tests. A good tester should be able to code their own test suite and really needs to understand the inner workings of software just as well as the developer does. Knowing how testing works will be valuable to devs, too, because they'll be less likely to fall into coding traps that should be short-circuited in advance. And, most importantly, it will help break down the wall between the two disciplines and foster greater understanding and a more cohesive workplace.

While we're on the subject of design and change, flip through this issue for a minute. Notice anything different? We've made a minor upgrade to the magazine's look this month. Gone are the pastel column headers; in their place is a bolder, crisper look. It's easier to spot from a distance, and we feel it looks better.

When we merged MSJ and MIND back in 2000, the magazines were converging naturally, but we kept a distinct look between the front-of-book columns (which were mostly from MIND) and the back-of-book ones (mostly MSJ). Even the title bars on the columns looked a bit different, making a distinction that no longer holds true. Not many people ever noticed this, and the line between Internet-related and systems-centric content has blurred even more over the past three years, especially with .NET and Web Services holding the day.

Our art and production department gets full credit for this redesign. They spend many hours each month making what we feel is the most readable magazine in the industry (if not in the world of periodicals). Somehow, they manage to keep the readability high, avoiding normal yet annoying tricks like "continued on" jumps for articles. We don't talk about the design of the magazine all the time, but that's because they just make it happen every month. It's like the sun coming up in the morning.

So just as C++ and Visual Basic have now been merged into a single program with a single user experience, we've done the same with our columns. All the columns you like are still there, and we're even going to be adding a couple of new ones in the months to come. Keep an eye out for them, because we're more excited than ever about the year ahead.

—J.T.

Active Directory, ActiveSync, ActiveX, BizTalk, JScript, Microsoft, MSDN, Visual Basic, Visual C++, Visual Studio, Windows, Windows NT, and Win32 are registered trademarks of Microsoft Corporation. Visual J++ is a trademark of Microsoft Corporation. Other trademarks or tradenames mentioned herein are the property of their respective owners.

MSDN Magazine does not make any representation or warranty, express or implied with respect to any code or other information herein. MSDN Magazine disclaims any liability whatsoever for any use of such code or other information.

© 2007 Microsoft Corporation and CMP Media, LLC. All rights reserved; reproduction in part or in whole without permission is prohibited.