Sponsored By Aspose - File Format APIs for .NET

Aspose are the market leader of .NET APIs for file business formats – natively work with DOCX, XLSX, PPT, PDF, MSG, MPP, images formats and many more!

ALT.NET in Austin and beyond

In a couple weeks, myself and about a hundred some odd other folks are converging on Austin for the ALT.NET Open Spaces event.  Just to get myself ready, here are the things I’m thinking about before we all get there.

The most important part of ALT.NET for me is simply being on the quest for better ways of building software.  For too long we’ve allowed our tool vendor to do far too much of our thinking for us.  We need to sit up and make our own value judgements about how we build software.  We should have the tools shaped to fit our values, not our values shaped around the tools. 


What’s Next?  Where are we going?  What are you interested in?

We’re using the Open Spaces event format, meaning that the conference agenda is decided upon by the attendees when we get there.  There’s a list of possible topics on the conference’s homepage.  You’ll have to fill in your own topics, but I’ll give you mine.  The topics that I want to talk about are:

  1. Language Oriented Programming.  Textual Domain Specific Languages.  Writing code in higher levels of abstraction to increase the signal to noise ratio.  Writing more expressive and elegant code that’s easier to understand.  Packing more punch with each line of code.  Fluent interfaces in C#, DSL’s in Boo, and the far out stuff happening in the Ruby space.  Getting things done in code in one place as opposed to scattering little breadcrumbs of meaning in Xml or Xaml files, attributes, and various modeling schemes.

  2. Executable Requirements.  I think this is one of the biggest unattained goals/dreams of Agile development.  Toolwise, either Fit (StoryTeller!) needs to improve or we get lined up behind the xBehave tools.  Process wise, we’ve got to figure out how to get the customers, analysts, testers, and developers on the same page to get this done.  I’m looking forward to meeting the Lostechies guys and see what they’re up to in this regard.

  3. I wanna see if Scott Bellware can make a coherent case for BDD as something totally new, different, and better than simply doing TDD and acceptance testing well 😉

  4. There is representation from both MbUnit and the new xUnit.Net tool there.  I’ve pretty well assumed that innovation in the xUnit space was basically dead with xSpec tooling coming on strong, but let’s see if I need to sit up and pay more attention.

  5. And yes, I’m anxious to hear more experience reports from folks that are doing development work with Ruby on Rails or MonoRail.

  6. There’s a rumor that we’re going to see something tangible from ScottGu’s garage project to build a true Rails-like MVC framework.


LINQ isn’t important

LINQ is sexy.  LINQ is cool.  LINQ isn’t particularly important in the greater scheme of things. 

I could just have easily said WCF or WPF or WF in place of LINQ.  All of those things are improvements in tooling, but not a revelation.  We (the .Net development community) put far too much emphasis on knowing libraries, API’s, and technology tricks.  In the end, what’s more important to being successful?  Knowing obscure facts about ADO.Net or understanding how to create a solid separation of concerns between your business logic and your database? 

What I think is lacking in .Net is a greater appreciation for core development skills like OOP and software engineering practices.  RAD tooling might enable us to write code quickly, but we know it doesn’t lead to sustainable development efforts.  The first order factor in the productivity and quality equations is the capability of the folks designing, writing, and testing the code.  If there’s anything I’d like to be a part of “ALT.NET” it’s the importance of building a solid core[LINK to JP].


The Elephant in the Room

The very real and obvious problem for us in ALT.NET is the general lack of skill, knowledge, and experience with the techniques, practices, and patterns that we’re espousing in the .Net community at large.  I’ve been interviewing people for .Net positions for my company and our parent company over the last couple months.  Here’s the typical skillset I keep seeing:  calling stored procedures that someone else wrote, grabbing the DataSet coming back, and slapping the DataSet’s into databound controls.  That’s it.  They know how to use the most common tools in Visual Studio and .Net but don’t have any real deep knowledge of OOP, software design concepts, and the Agile practices that I think are valuable.  They simply don’t have the background and skillset to work the way that I feel is best. 

For example, I think Model View Presenter (MVP) designs are the best way to create a maintainable WinForms application.  The harsh reality is that MVP really works best with a team of developers that understand the MVP pattern in specific and Object Oriented Programming in general, at least enough to understand the separation of concerns that we’re trying to achieve and why we want to achieve that separation.  Unlocking the goodness of MVP requires a deep knowledge and understanding of coding and design.  The .Net developer community at large simply does not have the deep seated coding skill and experience with patterns that makes a code centric approach like MVP succeed.  MVP flies in the face of out of the box WinForms, and that makes it very difficult to find developers who can work in that way.  Going farther, using MVP with TDD, CI, and all the good stuff, may actually do more harm if the developers building the system and following me when I go on to my next consulting project don’t have any clue about MVP. 

The neverending questions are:

  1. Can we improve the situation?  Can we democratize the skills and patterns we already think are best?

  2. How do we improve the situation?  At least enough to be able to find other developers to make our development style sustainable and feasible?

  3. Do we just give up and jump to Ruby or Python instead where they seem to get it?  I don’t think I’m capable of forcing my development style into the MSDN mold, so this eventual move has to figure into my future planning.  In a way, I’d rather be somewhere where I don’t stick out like a sore thumb.  More on this below.


Your developers can

Far too often I hear the refrain “our developers just can’t do that.”  There’s a clear assumption that visual programming and Rapid Application Development tooling is the only way that the average developer can produce code.  We’ve got to break this self-defeating attitude.  Much of the reason that the average .Net developer can only work with RAD tooling and data centric development is simply because that’s the only thing that they’re exposed to at work.  Learning the RAD tooling is often nontrivial, and there’s not much in all of  mainstream development as complicated as the WebForms event pipeline.  So why can’t the average .Net developer learn to do things in another way?  Given a chance and some guidance, I don’t see why an average developer couldn’t embrace the practices and patterns of development most associated with ALT.NET.


Is .Net Middle Earth, Ruby the lands across the sea, and MonoRail the Gray Havens?

More than one person has questioned whether or not the ALT.NET canon and crowd is inevitably destined for Ruby and Ruby on Rails.  There’s some thought, and at this point observation, that the alpha geeks in .Net are starting to drift into Ruby development instead.  If you’re willing to question the “MSDN way,” you’re much more likely to be exposed to RoR and open to giving it a try.

I think Ruby and Ruby on Rails has already drained quite a bit of the thought leadership out of Java, and you’ll definitely see some of that happening to .Net.  Yeah, it has some issues with scalability and I’d question the ActiveRecord approach for complex domain models and databases, but those issues can be or will be beaten (RBatis & Rubinius maybe).  The attraction of RoR and Ruby in general is how it completely embraces the Agile practices I want to use, and the coding and design values that I believe in.  On the other hand, the .Net framework and Visual Studio tooling out of the box does not reflect the way I want to work. 

This mismatch of values and framework presents me with a dilemma.  Leave the nice, comfortable (staid) Microsoft development womb, or move on to this whole new Ruby world.  There’s another alternative, and this is where I hope ALT.NET steps in.  Can we change enough of the .Net community and tooling to make .Net development be what we want it to be?  IronRuby is coming.  ScottGu and co are working on some sort of MVC web development framework and MonoRail is already in production.  C# 3 is coming with some more powerful language constructs (borrowed from other languages because there’s nothing new under the sun).  F# is flying under the radar, but the F# team seems to be well on its way to productionalizing F# development (I’d really love to talk to someone doing real work with F#).  The community awareness and adoption of Agile practices are on an upswing.

Is it too little too late though?  Is Ruby inevitable for us?  Would some folks be happy to see us leave .Net anyway?  Is Microsoft serious enough about IronRuby to make it be more than a new form of VBScript to wire up Silverlight?  Can we make the .Net community into something better?  I’m sure all of these topics will get bounced around.  I’ll try to provide the play by play here the following week.

Lastly, award yourself some serious geek points if you fully understood the title of this section.


What about the “ALT.NET” name?

There’s been some consternation over the name lately.  I’ve decided that I just don’t care.  Call it tangerine development if you want.  The little “ALT.NET” moniker should disappear into the sands of history within a short amount of time anyway.


For those of you who didn’t get to come to Austin

The spots filled up fast, and there were quite a few folks who didn’t get a spot.  All I can say is that one of two things is going to happen:

  1. It flops, in which case you didn’t blow your weekend

  2. It works, in which case it’ll only be the first of many ALT.NET events.  I won’t speculate on when and where the next one will be, or in what format, but I can promise that there will be a next.

There’s an absurd amount of talented and thoughtful folks there, so I’m going to step back and let everyone else lead the sessions.  What I will do is blog as much as possible about the proceedings as possible and write a long retrospective afterwards.  I’m going to try to interact with as many people as possible and try to sample as many conversations as possible.


Other Folks on ALT.NET

  • Jeffrey Palermo says we should enjoy our software development efforts.  Scroll down to find Frans Bouma’s comment at the bottom too.  There’s always better stuff coming up and our dearly held ideas about software construction have a nasty tendency to get overturned as our field progresses.

  • David Laribee, the Kent Beck of ALT.NET, says there isn’t all that much new to ALT.NET.  I’d say there’s two parts to this one.  The first part is simply encouraging the usage of the things we already consider to be better practices, even when that’s in opposition to the .Net way inherently embedded in Microsoft tooling.  The second part is an exhortation to keep looking for better and better ways of building software and to look in more than one place for those better ways.

  • My old lunchtime basketball nemesis Joshua Flanagan weighs in with ALT.NET is freedom.


Jeremy’s Agenda at ALT.NET

Conference wise, I’m going to try to observe as much as possible, interact with as many people as possible, and write as many blog posts as possible.  Otherwise, my agenda is to soak up as much Austin as I can before going back.  I plan on hitting a lineup of my favorite Tex-Mex places and picking up a “Keep Austin Weird” T-Shirt at Chuy’s for my son.  After the conference on Saturday night I’m going to see Billie Joe Shaver play just outside of town at the Nutty Brown Cafe.  Anybody who wants to see the quintessential Texas singer/songwriter (Willie Nelson and Waylon Jennings more or less did a Shaver tribute cd is that tells you anything) in action from a 100 feet away is welcome to come. 

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 Uncategorized. Bookmark the permalink. Follow any comments here with the RSS feed for this post.
  • http://codebetter.com/blogs/jeremy.miller Jeremy D. Miller


    “I will be in attendance on October 5,6,7 as a virtual flea among ants”

    Trust me on this one, everybody puts their fingertips on the same home keys. There are no smart guys, only us. I’ve been around the biggest name guy coming to the conference a couple times and noticed something interesting — he listens very attentively to other developers.

    And do the blog. In terms of career development, I’ve gotten more out of writing the blog than any other thing I’ve done.

  • Brad Mead

    Jeremy I am firmly in the Elephant camp as an behind-the-firewall developer.

    As what I would consider a “right-brainer”, I don’t ever try to classify my self as an algorithmic thinker. My personal feeling is this concern falls on many (consciously or otherwise) “behind the firewall” developers. The .Net agile community in general has as an Achilles heel resting in the fact that a large percentage of us are not programmers by inception. Thus we often avert our eyes (euphemistically) when things get truly abstract.

    In other words we arrive at .Net from quasi-programming backgrounds like ASP/VBScript and as such our mentality has been historically geared towards “brute forcing” our way into solutions that make the boss content if not happy. We are, in short, concrete thinkers. And to this faculty we owe what “success” we have garnered. Indeed it seems it is the carrot of “concreteness” that Redmond marketed to increase penetration of their platform. It is arguably a LCD approach.

    And as many of us know (even the inside-the-firewall folks) there can be huge “under the hood” differences in quality between two things that look similar on the surface. I ponder endlessly (and maybe the verb here is the problem) on what’s called in human factors the “Gulf of Execution” to implementing things like rigid Interface-based design, MVP and TDD. My problem is of course that I have everyday, corporate-world, build-a-site-in-30 -days requirements put upon me. Now that’s no excuse for failing to improve one’s craft and as a consequence I spend considerable “offline” (read unpaid) time following and venturing in to the unknown territory (for me) that is the focus of this gathering.

    Unfortunately, among prevailing “need-to-knows” that fall into my day-to-day professional purview are topics as disparate as pure CSS web design and database programming/architecture. I find too little personal time to play and immerse myself in the things I feel I need to learn. But I would be lying if I said there was not a motivational aspect to it all as well. So how do I motivate myself? Well I will be in attendance on October 5,6,7 as a virtual flea among ants. I daresay I hope the ants are at least friendly to the fleas who will ostensibly be low in number 

    One of the roles I would like to play (read contribution) would be to distill some of the concepts, terminology and practices into digestible chunks of information for the ‘noob’ crowd. This could be read as a negatively as futile effort to “dumb down” something that has no place being pejoratively reduced for the “Trix are for kids” crowd and yet I strongly believe it is essential to removing barriers to wider adoption of the good work you folks demonstrate. In short, I believe there is an intermediate step in the acquaintance to any technology where noobs can comfortably roost and read something akin to a ‘picture book’ explaining things at a higher level. In doing so we are free, and more importantly, safe to conclude that our approaches to our craft may be subjectively termed “wrong”, “flawed” or “incomplete” and yet work for our contexts. In this regard a noob may conclude that the extra time and brain freeze required to apply TDD to their situation may not indeed warrant the effort for their needs. On the other hand (and this is my hope) we may conclude that there ARE big payoffs in TDD,MVP, etc and are at least armed with a high level notion of the benefit we seek to achieve.
    Although it might be embarrassing to say it the ‘picture book’ motivates me because it shows me what I could get for the effort. And obviously I have glossed over the complexity involved in just creating a GOOD picture book for this kind of complex set of topics.

    I have always held the excuse that if some academic effort would have been made to visualize the beauty of calculus in the curriculum or dramatize the area under the curve in a compelling story-based analogy I would have been less fearful of the rote mathematical memorization required to acquire the skill.

    But I’ll quit babbling now and say I am really interested to see how (if at all) I can shoehorn myself into meaningful participation during the conference. I plan to finally start a blog (yeah late bloomer) and this event has stirred ideas where I have sat on my hands for far too long.

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


    You’re missing the point. The important question is how do *I* get to come over there to meet you guys?

    Somebody on your side of the world will have to be the local guy, so I’ll bring up Manchester.

  • http://weblogs.asp.net/astopford Andy Stopford

    If you are going to have a European alt.net and want a UK city then how about Manchester. It’s central (ish) england, has the second biggest airport in the UK and will be in 3 years time the new home to the BBC (well ok Salford will be which is greater manchester but you get the idea) so is gearing up as major player in the tech market in the UK. It’s never played host to a major worldwide geek conf and it’s about time we have some action rather than those londoners :) I also happen to live here too :)

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


    I think there’s at least one person recording some podcasts. I know London’s been kicked around as one of the next places to do this. I haven’t figured out the all important “how am I gonna get over there” thing yet.

  • http://vanryswyckjan.blogspot.com/ Jan Van Ryswyck

    Are there going to be some sort of podcast/webcast thingies becoming available of the ALT.NET conference? Man, I’d wish I could be there.
    Suggestion: suppose the conference is going to be huge hit (without a doubt), how about an ALT.NET Europe event (say in Brussels or something)? Think the finest beers in the world :-)

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


    No argument from me on that one. It’s almost a cliche now, but the stuff they added to the language just to enable LINQ is more important to me than LINQ itself.

  • http://www.donxml.com Don Demsak

    “LINQ is sexy. LINQ is cool. LINQ isn’t particularly important in the greater scheme of things.” – On the surface, yes you are right, it isn’t important, especially for things like LINQ to SQL. But, I see the addition of functional programming techniques to the core of .Net as a step in the right direction to enable the development of solid separation of concerns. If we can build easier to use basic algorithms, and more declarative DSLs, I think they enable separation of concerns.

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

    “Is .Net Middle Earth, Ruby the lands across the sea, and MonoRail the Gray Havens?”

    that… is… awesome!

    i totally agree w/ the idea that we’re not here to lead an en masse ruby/ror exodus. i keep harping on this but i really liked the interaction we had with the ado.net team. i felt it was productive. we should be one of devdivs inputs and can be valuable to ScottGu’s efforts while getting what we want. microsoft is big enough to support both rad and agile development cultures. they’re going to have to if they want any game in web development outside of the corporate firewall.

    kent beck? whoa. would you consider being my agent? 😉

  • Mohammad Azam

    Hi Jeremy,

    Is this a FREE event?

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

    Shame on me, one more piece of agenda.  I’m also getting the chance to catch up with bunch of former colleagues from Dell, ThoughtWorks, all of Team DataCert, and friends in Austin.