Scott Hanselman got off a good one liner early on the first day. To paraphrase: "...is this just the 'I hate the ViewState' so let's have a conference crowd?" He went on farther to challenge us to have a real meaning and purpose behind ALT.NET. My answer is to paraphrase Bill Clinton "It's the Values, Stupid!" Once you boil it all down I see a handful of distinct themes. I want to efficiently create maintainable code and designs that can last, I want to enjoy my work in software development, and I'm actively looking at ideas and tools originating from outside the .Net sphere. For the sake of this post, I want to concentrate on the first theme.
In my mind, the high regard for maintainable development effort is what takes ALT.NET farthest from the traditional MSDN way of building software. The mainstream .Net approach of data aware widgets and visual designers is strictly optimized for the initial write of software and for smaller, simpler data driven applications. There's a huge range of smaller applications that can be economically built that way, but not the projects that I work on. Maintainability isn't a luxury when a system is going to change over time, and they all change over time. Arguably, the system changes as we proceed throughout successive iterations. I want iteration n to be as or more productive than iteration n - 2 was. Bad code and bad designs are felt by a sluggishness in later iterations.
So why would the quest for more maintainable code lead us from the MSDN way? Maintainable code means good design. Good design arises from the skillful application of design knowledge. That leads to valuing knowledge like Design Patterns and the design principles from Robert Martin. For a little too long the .Net community has put too much focus on learning API and framework details and not enough emphasis on design and coding fundamentals. There is some great material on MSDN online in that regard, but most of what we know to be good design originated somewhere else.
Maintainable code means testability, and that leads me towards techniques and tools from outside the MSDN way. Current Microsoft offerings are often disadvantageous for automated testing and Test Driven Development. In web development I might look at MonoRail for a cleaner separation of concerns. In WinForms I look outside of Microsoft guidance to use some variant of Model View Presenter or Presentation Model to divide and conquer the various screen responsibilities. To their credit, Microsoft is improving in this regard with both the new MVC framework and Acropolis.
To recap, I don't think you're evil or incompetent because you use drag n'drop programming or designers or whatever other tool instead of using notepad like "real" developers. On the flip side, you're not a great developer just because you're using an ORM or an IoC tool. You're a great developer if you're writing maintainable code as a matter of course. The tools and design knowledge to create sustainable applications are out there and getting better all the time. The familiarity with these tools within the .Net community isn't as widespread as it could be, and that's where I'd like ALT.NET to make matters better.
Posted
Thu, Oct 11 2007 9:59 PM
by
Jeremy D. Miller