ALT.NET Recap: It’s the Values, Stupid!

 

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.

About Jeremy Miller

Jeremy is the Chief Software Architect at Dovetail Software, the coolest ISV in Austin. Jeremy began his IT career writing "Shadow IT" applications to automate his engineering documentation, then wandered into software development because it looked like more fun. Jeremy is the author of the open source StructureMap tool for Dependency Injection with .Net, StoryTeller for supercharged acceptance testing in .Net, and one of the principal developers behind FubuMVC. Jeremy's thoughts on all things software can be found at The Shade Tree Developer at http://codebetter.com/jeremymiller.
This entry was posted in altnetconf. Bookmark the permalink. Follow any comments here with the RSS feed for this post.
  • http://www.danielmoth.com/Blog Daniel Moth

    Blogging idea for you (if you wish): Define in single post what you mean by “the MSDN way”.

    You have thrown this statement around a few times so I think I get the idea, but I’d really like to be sure I understand what you mean by it and not have to read between the lines and guess based on the context each time. If this thought occurred to me, no doubt it will have occured to your other readers, but I let you be the judge of that…

  • http://codebetter.com/blogs/jeremy.miller Jeremy D. Miller

    Daniel,

    That’s definitely not getting it’s own blog post. What I, and other people, call the MSDN way is strictly using the RAD and Data-centric tooling in Visual Studio and .Net. Exactly the stuff that the average entry level .Net developer is likely to come into contact with.

    * DataSet’s/TableAdapters/DataReaders
    * Stored Procedures, but that doesn’t seem to be quite as common. Still a VB6/COM hangover that pushes people to put business logic in here occasionally
    * Data binding and data aware widgets
    * Procedural Transaction Script architectures with or without layering
    * Using the visual designers to create behavior

    Basically, the stuff tha we grew up with. Efficient and perfectly fine for simpler CRUD screens. Inefficient and possibly harmful for systems with a great deal of business logic and behavior.

  • http://codebetter.com/blogs/david_laribee/ Dave Laribee
  • http://codebetter.com/blogs/jeremy.miller Jeremy D. Miller

    Okay, I’m embarrassed David. I swear I did read that post when you wrote it.

  • http://codebetter.com/blogs/david_laribee/ Dave Laribee

    i just think it’s funny, the echosphere and all that. that’s why the introducing myself as “diet jeremy miller” joke is supposed to be funny!