CodeBetter.Com
CodeBetter.Com
RSS 2.0 via Feedburner
           Do you Twitter? Follow us @CodeBetter

Jeremy D. Miller -- The Shade Tree Developer

Under the hood and working with .Net, TDD, Software Design, and Agile Stuff

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.



Comments

Vladan Strigo's website - Vladan.Strigo.NET said:

# October 12, 2007 4:37 AM

Daniel Moth said:

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...

# October 12, 2007 9:34 AM

Jeremy D. Miller said:

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.

# October 12, 2007 9:53 AM

Dave Laribee said:

# October 12, 2007 5:51 PM

Jeremy D. Miller said:

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

# October 12, 2007 5:57 PM

Dave Laribee said:

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!

# October 12, 2007 6:18 PM

Jeremy D. Miller -- The Shade Tree Developer said:

It took a week, but I finally got around to finishing my recap of the ALT.NET Open Spaces event from

# October 14, 2007 7:09 PM

Jeremy D. Miller -- The Shade Tree Developer said:

It took a week, but I finally got around to finishing my recap of the ALT.NET Open Spaces event from

# October 14, 2007 8:41 PM

Leave a Comment

(required)  
(optional)
(required)  

Enter the numbers above:
Add

About Jeremy D. Miller

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 previously worked as a systems architect building mission critical supply chain software for a Fortune 100 company and learned agile development practices as a .Net consultant at ThoughtWorks, one of the pioneers of agile development. Jeremy is the author of the open source StructureMap (http://structuremap.sourceforge.net) tool for Dependency Injection with .Net and the forthcoming StoryTeller (http://storyteller.tigris.org) tool for supercharged FIT testing in .Net. Jeremy's thoughts on just about everything software related can be found on his weblog "The Shade Tree Developer" at http://codebetter.com/blogs/jeremy.miller, part of the popular CodeBetter site. Jeremy is a Microsoft MVP for C#. Check out Devlicio.us!

Our Sponsors

Free Tech Publications

This Blog

Syndication

News

All opinions expressed here constitute my (Jeremy D. Miller's) personal opinion, and do not necessarily represent the opinion of any other organization or person, including (but not limited to) my fellow employees, my employer, its clients or their agents.

About Me

"Best Of" Compendium

StructureMap (Dependency Injection for .Net)

StoryTeller (Supercharged Fit)

Build your own Cab

TestDriven

MVP