You are probably thinking, "This is just another .NET book." That was what I thought at first, when I was asked to read a couple of draft chapters by Jeff. Well, I have to admit that this is not just another .NET book. Jeff has really done a fine job in this book; he describes the logical process and notes the considerations you must take into account to create excellent code. He uses examples of code and personal experience to effectively illustrate his points. Furthermore, Jeff has captured some keen insights in this book that have come from the projects he has worked on in the recent past. The reader will definitely benefit from these shared insights. I first met Jeff at a meeting with mutual customers over a year ago. Jeff was tasked with architecting, prototyping, and then leading a team of developers to create an application for this customer using the new Microsoft .NET Framework technology that was actually in beta at the time. I worked with Jeff on several of the challenges he faced. I was impressed by his professional skills and deep technical acumen. He uncovered some issues and really put me to task in assisting him in gathering answers because when Jeff asked for help, I came to expect that it was not a trivial issue.
The Microsoft .NET Framework technology and the Microsoft Visual Studio .NET developer product have created a lot of buzz and excitement with developers who have taken the time to try it. The enthusiasm being shared reminds me of the Visual Basic (VB) 1.0 days more than 10 years ago. For with VB 1.0, Microsoft Windows development became more commonplace and accessible to all. Visual Studio .NET has truly created a similar market phenomenon. The following are much more accessible to everyone: the power of object-oriented programming, services such as transactions and threading, reflections (which Jeff really does a fine job of explaining), and cross-language debugging (with more than 24 languages from which to choose). Moreover, the innovations in ASP.NET—such as the code behind, the core Extensible Markup Language (XML) and Web Services support available in the .NET Framework, or the new dataset object in ADO.NET—all combine to open new possibilities for developers to solve complex problems quickly.
It is probably that last point that typifies most developer experiences and is the most notable. Visual Studio .NET simply delivers on the promise of Rapid Application Development (RAD). That means there is more time to really do due diligence around the process and functional modeling that most developers forego. There are real possibilities of leveraging others' code using the object-oriented capabilities of the .NET Framework, and it is true that you simply write less code because of the rich class libraries in the .NET Framework. Powerful debugging delivers compressed time frames for testing, and server-side deployment for Windows Applications (WinForms) and Web Applications (WebForms) yields the lowest total cost of ownership in the industry. Jeff's book lays this all out for you in a logical and progressive fashion using plenty of examples and tips.
Now let me tell you a little about who I am: I graduated from Pacific Lutheran University in 1979 with a bachelor's degree in engineering/physics and a bachelor's degree in music (I play violin and classical guitar). I then earned my master's degree in electrical engineering (MSEE) from the University of Washington in 1983. I started work as a systems programmer for a Seattle-based engineering firm. I later worked for Hewlett-Packard and then was hired on at Microsoft in 1990 where I currently work as a .NET solutions architect.
I started my programming journey some 25 years ago when I was asked to automate a college physics lab using a Wyse programmable calculator that was the size of a small table. Wow, was that a blast! I then moved on to programming the following: a Univac 1170; an IBM 1130 using Hollerith cards and an IBM 029 card punch; an HP1000 RTE system using paper tape and a TTY terminal; an HP3000 using Fortran, Cobol, and RPG; a DEC VAX 11/780 using C; 8085 PIO boards using assembly; Microsoft Windows using C, C++, and Visual Basic. And now I am using C# in conjunction with the .NET Framework.
I must say that when I look back at the productivity gains and technology strides in this industry, it really is amazing. For those of you who are just starting your programming experience today, Visual Studio .NET is a great place to start. I dare say that you will be looking back some 25 years from now and see just as much progress. Who knows, computers will probably program themselves by then!
—Steven J. Houglum
.NET Solutions Architect