October 14, 2007
I find discussions like this one between Ayende and Casey typical of my experience in the .NET community. This archetype (I refuse to use the “M” word) is held up as the standard to which we must aim since it represents a typical, MS developer but then any discussion degrades into a “that’s too complex for this guy” argument. This is oxymoronic – these developers are NOT stupid. They’re intelligent, they get the job done, and they are able to handle things like complex business processes, recursion, debugging, etc. These developmental practices are not harder than whatever they currently are doing, they’re just different. These developers usually fall into one of two camps – they’re either unaware of the concepts or apathetic. We need to speak to the former and just hope that the latter comes around eventually.
I gave a presentation earlier this year to our local .NET user group on unit testing, mocking and dependency injection. In talking with folks afterwards about the topics, I found a very disturbing trend. Most of them knew about unit testing. At a minimum they’d heard about it but quite a few were trying to use it and several mentioned that they’d even explored NUnit and/or MbUnit. You know why there was awareness?? MSTest. Because Microsoft had created their own unit testing framework and tools and threw their marketing muscle behind it, awareness of unit testing concepts spiked. But that’s where things went south. With mocking, there was a lot of misconception around mocking and dependency injection was a totally new concept to a large majority. I find these to be fundamental to testing in the real world since rarely do we work on systems that don’t have numerous dependencies. Since we have dependencies and we have to account for them for successful testing, they are either not testing or doing integration tests instead and just calling them the wrong thing. I honestly believe that this misunderstanding, this misuse is simply due to a lack of knowledge and visibility.
I believe MSDN Events are part of the solution. While at Alt.Net, I was talking with Chris Koenig about the marketing nature of these events. He was quick to point something that eluded me previously – these are 100 & 200 level events. They’re aimed at the lowest common denominator and an entry point for developers. These are the perfect vehicles for us to introduce these practices to folks. Now, I understand Microsoft is not a non-profit organization and they shouldn’t do something unless it makes business sense so I’m asking that we come up with a good BUSINESS reason to make these more of an outreach. Like the old E.F. Hutton commercials; “When Microsoft talks, people listen.” and we need to help them tailor that message so that we can expose these people to these concepts as early as possible.
Another part of the solution is our user groups. Microsoft spends a LOT of money every year to facilitate and fund these meetings so we need to leverage these to promote good development practices. Volunteer to give a presentation or a lightning talk or just start asking questions and get a dialog going. If you’re nervous, try teaming up for a presentation. Rather than arguing who is or isn’t capable of learning something, let’s start trying to figure out how to get the material out there and nurture those who do come along.
October 13, 2007
I’ve (mostly) enjoyed the stuff that I’ve done in WPF but I haven’t had a chance to dig into Silverlight quite yet so I’m really excited that we’re hosting a FREE Silverlight DevCamp on November 10th. Given the recent announcements and the fact that it’s cross-browser and cross-platform, I really believe there are some things coming out of Redmond that show they’re listening. Now it’s up to us to figure out the best ways to use them. In case you’ve not heard about Silverlight, here’s the standard pitch:
Microsoft Silverlight is a cross-browser, cross-platform plug-in for delivering the next generation of .NET-based media experiences and rich interactive applications for the web. It offers a flexible programming model that supports AJAX, VB, C#, Python, and Ruby and integrates with existing web applications. Even more, Silverlight supports fast, cost-effective delivery of high-quality and rich multimedia to all major browsers running on Mac OS, Windows and soon to be on Linux as well.
So join us for an all day event on Saturday, November 10th and get your learn on. We’ll have experienced developers to help answer any questions you might have and to show off a few of the cooler bits of the technology. We’re even going to build our own applications to compete for prizes. Bring your laptop, bring your ideas and let’s see what shakes out.
Event ID: 1032353469
November 10, 2007 from 8am to 8pm
15950 Dallas Parkway
Dallas, TX 75248
Register on Microsoft World Wide Events
October 9, 2007
So I’m back from what was described by a fellow attendee as “programmer heaven” and I’ve have to say I’d agree with him. Given the hosts and the attendees, it represented a chance to hang out with a number of folks that I previously only knew thru their blogs, a chance to meet new people with similar ideas and values as well as a great reason to spend a weekend in Austin. Little did I realize it would be all those things and so much more. At times it was a bit surreal; talking Silverlight and the DLR with Scott Hanselman, Scrum and process in the enterprise with Raymond Lewallen, or continuous integration and “build systems” with Jay Flowers I can say I had no problem stepping into a conversation with any of the attendees and found everyone receptive to a conversation. It was a great pleasure meeting so many people and I hope that the friendships that were formed this weekend continue to grow with time.
There has been a lot talk about the nature of the Alt.Net movement and I feel the need to weigh in on my position here. The “alternative” part of the name, to me, represents the alternatives to the main stream options presented by the vendors, i.e. open source. But it goes beyond that. It really isn’t so much about the tools themselves as the ideas and concepts behind those tools. Dependency injection, inversion of control, object relational mapping and acceptance testing have all led to excellent open source tools. The awareness of these concepts, let alone the tools, is something that is truly lacking in the .Net community as a whole. This conference was an open call to knowledgeable parties asking how we get this message out in a way that is accessible and visible to those who can benefit most from it. Yeah, there was some echo chamber in the discussion but overall what came out of the talks was valuable ideas. Ideas that I hope we as a community embrace and make a reality. I for one will be re-focusing my presentation topics in a direction that I believe will help share these ideas and bring the awareness up as a whole.
P.S. Jaime – if you happen to read this and come back thru Dallas, I owe you a dinner so give me a ring. 🙂