My colleague Chet Hendrickson and I are working with .NET and C#, to learn it, with the intention of writing the book you re holding in your hands. Our chosen application is the XML Notepad. Here s the initial vision and some stories.
In this book, we ll be working on a real application. Although the app will be small enough to fit in the book, it will be large enough, and tricky enough, to offer some important lessons about how a real application might go.
As you know, I am a strong proponent of Extreme Programming and agile software development, so there will be a lot of XP- related discussion in the book. I ll also be drawing on my years of programming experience (much of it good), with the hope of bringing out some generally useful techniques. Finally, I ll be discovering, as we go, how to use the C# language and the Microsoft .NET tools.
The book, therefore, is a journey of discovery, a journey led by an experienced guide who is nonetheless new to this specific territory. If we re lucky, I won t make a complete fool of myself !
Our project begins, as most do, as a vague initial idea, followed shortly by an optimistic dream of what might be possible, followed by a long period of progress toward a goal that changes along the way. Extreme Programming has taught me some ways of dealing effectively with such things, and that s part of what we ll be looking at as we go along.
As I mentioned in the Extreme Programming preliminary chapter, a real XP project team includes two separate roles, called Customer and Programmer. The XP Customer team members have the business responsibility for the project. They decide what the desired features are, what the value of each feature is, and at what point in the project to build that feature, based on its value and its expected cost. The XP Programmer team members are the individuals who build the software. They determine the design, estimate the cost of all features for input into the planning process, and deliver running, tested features throughout the course of the project. I ll be addressing most of the XP-defined Customer and Programmer behaviors as the book goes on, but it s that last one that is the core topic of the book.
XP teams deliver running, tested software, building features ” stories, as we call them ”that the Customers see as real progress, from the first week of the project to the last. XP teams don t take a few months at the beginning of the project to set up the infrastructure ; they get right down to delivering features that reflect value to the Customers. The big question, of course, is how we manage to do these things. How do we ship features without a lot of up-front design and infrastructure and still avoid building an ill-designed program that can t be maintained and can t do the job? That s what our example application ”the XML Notepad ”is about. It s big enough to give us a look at how this is possible. With that warmup, let s join the project at the beginning.