Daily Archives: May 2, 2006

Lessons in Visual Studio Express

I’m in the training room this week delivering a course and during the breaks I’ve been catching up on my blog reading. I cam across this post by John Montgomery about the challenges involved with keeping the feature set (or concept count as he termed it) low in a tool like Visual Studio Express in order to keep it approachable.

The problem got me thinking about how you could create an inductive experience for non-professional developers which allowed them to learn one feature at a time and build upon their previous experience. The Guidance Automation Toolkit is a piece of technology allows enterprise developers step through a series of steps in a recipe to build something that you would find in your typical enterprise system, but I wonder if this, or something like it could be used to “team my dad how to cut code”.

What I am thinking is when you download the product on the left hand side of the screen you would have a “Lessons” tool window which lists out the lessons that are currently available to you. It wouldn’t give you any options to do lessons where you haven’t established that you have the requisite skills (so as not to overwhelm folks). As each lesson was completed it would be evaluated against a dependency graph of lessons to determine what new lessons could be made available – the graphic below illustrates what that map might look like.

Each lesson that is completed is illustrated in green, and lessons that are available to be completed are in orange. The red ones are ones that based on the dependency map would be too much to take in at that particular point in time.

LessonMap

The lessons themselves would be for fun/useful things as John suggests and rather than having a static lesson map the lessons could be out of the web somewhere and could be expanded overtime. When you select a lesson it would download a little VSI file and run it and that would give you the starting point for the lesson.

Eventually the system could be opened up and third party content publishers could build lessons which snap in to the overall lesson map

Of course – you could always just implement clippy.

Who cares whether you throw exceptions or return status codes?

Readify does apparently. We have a technical mailing list internally that most of the technical folk in the company are hooked up to. Chris Hewitt reflected on the fact that he usually tells people to throw exceptions when something exceptional happens – but that this advice didn’t necessarily jive with the advice from Microsoft.

The fact that I now have e-mails in my Inbox from people like Greg Low, Clarke Scott, Scott Baldwin, Rob Sanders, Rocky Heckman, Luke Drumm, Paul Glavich and Darren Neimke on the subject is probably some indication of passion generated by this seemingly simple subject.

Of course, nothing in software development is ever that simple and when you have the likes of Raymond Chen and Joel Spolsky weighing in on one side of the argument and the .NET Framework as a body of code serving as evidence for the other you can bet that this is something that we are going to be debating for a long time to come.