James Newkirk, Microsoft

No picture of James  Newkirk

James Newkirk is the development lead for the Microsoft Platform Architecture Guidance team, building guidance and reusable assets for enterprise customers through the patterns & practices series. He is the co-author of "Test Driven Development in Microsoft .NET" (Microsoft Press, March 2004).

Prior to joining Microsoft he co-authored "Enterprise Solution Patterns in .NET" (Microsoft patterns & practices) and "Extreme Programming in Practice" (Addison-Wesley). In between writing books and consulting on software projects, James led the development of NUnit V2. He can be reached at jamesnew@microsoft.com.

James Newkirk Blog


For a long time I have wanted to attend JAOO because I was told by many people who have attended in the past it was a great conference. I was thrilled a couple of months ago when I heard that not only was Test-Driven Development going to have it's own track but the organizers have decided to include .NET topics as well as Java.

James Newkirk

Presentation: "Test Driven Development"

Track:   Test-Driven Development

Time: Tuesday 11:00 - 12:00

Location: Conference Hall 1

Abstract: Test-Driven Development (TDD) is simply defined as driving software development with automated tests. That said most people who learn TDD find the way they program changed for good. "Test Infected" is the phrase Erich Gamma uses to describe this change in programming practice. This session will provide an introduction to TDD, demonstrate how it works using a straightforward process, and describe the benefits you can achieve by doing TDD.

Password protected Download slides

Presentation: "Test driven development using Visual Studio 2005 Team Edition"

Track:   .NET Whidbey

Time: Tuesday 15:45 - 16:30

Location: Dania


Test Driven Development, which is the act of using automated tests as a design tool during software development, has become accepted in the mainstream software development community. It is something that the professional and enterprise developers should have in their toolbox.

This session will demonstrate how the upcoming release of Microsoft Visual Studio 2005 Team System provides an integrated environment to do test-driven development in Microsoft .NET.

Password protected Download slides

Presentation: "Panel TDD"

Track:   Test-Driven Development

Time: Tuesday 16:45 - 17:30

Location: Conference Hall 1

Tutorial: "Test-Driven Development (full day)"

Track:   Tutorials

Time: Thursday 09:00 - 12:00, 13:00 - 16:00

Location: Dania


A practical, hands-on introduction to Test-Driven Development. Test-Driven Development (TDD) is defined as driving software development with automated tests. TDD has been gaining in popularity and along with the popularity generating a fair amount of controversy. Is this a suitable way to develop software? Does the technique leave you with code that can be maintained? Is TDD a better way to write software? This tutorial attempts to answer these questions by demonstrating how to use TDD to improve the software you write. You will learn how to create testable designs, have better confidence in your software, and create higher quality software.

Topics include:

  • Tenets of Test-Driven Development
  • Test Type Definitions
  • TDD Process (Tasks, Test Lists, Red/Green/Refactor)
  • Writing tests (what, when, and how)
  • Stub/Mock Objects
Attendee Background

Prerequisites: Attendees should have a good understanding of object-oriented programming concepts (i.e. classes, inheritance, encapsulation, etc) and be familiar with C#, Java, or VB.NET. Most examples will be in C#. However, if your primary language is not C# you will be able to follow along and participate because the coding exercises do not require deep knowledge of C# and help will be available if needed.

Prerequisites: Bring a laptop if you can, with a working development environment, ready to code in Java, C#, or VB.NET. It would be best if you installed JUnit or NUnit prior to the start of the tutorial. If not, I will have copies at the tutorial for you to install. If you do not have a laptop I will pair you with someone else who does for the coding exercises. Either way, please contact James Newkirk (jamesnew@microsoft.com) and let me know if you are bringing a laptop.