Tuesday, 20 January 2009

Community Courtyard at Detroit MSDN Developer Conference

CommunityCourtyardBlackThis Thursday, I’ll be in Detroit at the MSDN Developers Conference (MDC) where I’ll be facilitating something called the Community Courtyard. The idea for Community Courtyard was spawned while Doc List and I were facilitating Open Spaces at PDC in Los Angeles last October.

I’ve facilitated Open Spaces in parallel with a traditional conference successfully in the past, but Open Spaces struggled at PDC. Doc and I examined what was working and what wasn’t and set about discarding what wasn’t working. When we were through with our examination, we were left with an approach that was inspired by Open Space Technology, but was not a full representation of that approach.

We were approached by Bob Familiar about putting together an Open Space track for the MDC events. We shared our thoughts with Bob and he was totally open to our suggestions. Doc and I tried to name it something trippy like “Parallel Process”, but Bob wisely suggested the more approachable, and descriptive, name of Community Courtyard.

So what is a Community Courtyard? It’s whatever you want it to be. Seriously, when you look at the conference agenda and notice a topic is missing that you are interested in, you can put it on the agenda for the courtyard. Whoever shows up is going to be interested in the topic, so even if you only talk to one other person, the conversation is almost guaranteed to be productive.

MSDN_DC_white_2 Personally, I think of the courtyard as a public speakers lounge. For years, I’ve had fantastic conversations with smart interesting people in the speakers lounge at events. Unfortunately, the attendees couldn’t participate in these great conversations. I want to change that.

I’ll be asking speakers to hang out in the courtyard when they are not presenting, or preparing their presentation. Also, instead of gathering at the front of the room after a session to talk to the speakers and ask questions, speakers can now invite attendees to join them in the courtyard to continue the discussion.

It is my hope that the Community Courtyard become a fixture at developer events big and small. I believe strongly that even the most tightly run event needs to make space for serendipity. We need a place at Code Camps and corporate conferences where attendees can seize the moment and talk with each other about what matters most to them at that moment.

I’ve already facilitated the Community Courtyard at the Atlanta MDC, and I had a blast. I know Doc is facilitating many of the other events. If you haven’t yet attended a MDC in your area, there are still a few remaining:

1/22/09 - Boston, MA

1/22/09 - Detroit, MI

1/26/09 - Dallas, TX

2/23/09 - San Francisco, CA

Come join me in Detroit. If you can’t make it to Detroit, then attend one of the other events. I recommend you do so. The content for these events is top notch, but the people you will meet are even better.

See ya’ in the Motor City,

++Alan

 Thursday, 15 January 2009

It’s a Major Award!

On January 1, I was pleased to receive an email with the subject “Congratulations 2009 Microsoft MVP!” It is nice to be recognized for my contributions to the Microsoft developer community. I’ve made a lot of friends and learned plenty by traveling around and giving talks, as well as helping organize developer events.

If you are unfamiliar with the Microsoft Most Valuable Professional program, you can read up on it here. Personally, I was overwhelmed by the show of support that I received from my peers when I announced my receipt of the award on twitter.

If you go here you can see what I’m talking about. It goes on for a few pages. I feel a bit like George Bailey in that my wealth and my reward is the amazing group of friends I’ve made.

The MVP award is for the contributions I made in the previous twelve months. I am not obligated to make any further contributions, but who am I kidding, now that I’ve found my Tribe, I can’t seem to stay at home.

Gratefully,

++Alan

 Wednesday, 14 January 2009

Tools Still Matter

Last week, I facilitated the Open Spaces at the awesome CodeMash conference. The theme of the Open Spaces was “Techniques Not Tools.” While I certainly agree with the sentiment, I still believe tools matter.

In my professional development, I work in .NET 1.1 using Visual Studio 2003 and I assure you there are limitations imposed by the tools. I am still able to build software that I am proud of, but it could be easier.

I’m currently setting up a new development VM and I thought I would share the configuration settings I use. I start by installing Visual Studio Team System 2008 Development Edition. I probably don’t need anything more than the Professional Edition, but there are some tools in the Development Edition that have been useful in the past.

I immediately install SP1 before I even launch Visual Studio. Once I launch VS, I choose C# developer settings. After the incredibly long wait, the UI appears and I make my way straight to Tools –> Options.

image

Under Environment/General, I uncheck animate environment tools.

image

Next, under Environment/Startup I select “Show empty environment.”

image 

Under Projects and Solutions/General, I set the “Visual Studio Projects Location” to C:\Development.

image 

Next I go to Text Editor/All Languages/General and turn on Auto List Members, turn off Hide Advanced Members and turn on Parameter Information. I also turn on Line Numbers and turn off Navigation Bar.

image

In Text Editor/All Languages/Tabs I set indenting to Smart, Tab Size and Indent Size to 2 and select Insert Spaces.

After closing out of the options dialog, I go to Tools-> Import and Export Settings where I import Brad Wilson’s Dark Consolas theme for VS2008. I will frequently tweak the font size depending on whether I am doing a presentation, but in general, I use the defaults from Brad’s settings file.

Now it is time to close Visual Studio and install Tortoise SVN and reboot. After the reboot, I install Visual SVN and Resharper. Both of these tools cost extra and both are more than worth the money. Because I don’t do any commercial development on this VM, I could install the personal edition of TestDriven.NET, but I have found that I get value from the emotional reinforcement of watching the green line grow in the Resharper Test Runner.

The last step in setting up a clean Visual Studio Install is to launch the IDE, go to View –> Toolbars and turn off all the toolbars. You will have to do this multiple times because different toolbars are active at different times. You do not need toolbars, and they are probably slowing you down. Learn the keystrokes. You will be a more productive developer as a result.

Finishing up, I install the Web Deployment Projects, Power Commands and the VS Command Shell extensions. Finally, I close the toolbox because every time I accidentally mouse over the damn thing, it slows me down. ;-)

Productively,

++Alan

 Saturday, 01 November 2008

Recent Adventures in Podcasting

I managed to continue my quest for over-exposure at two events in the month of October.  If you have any interest in my take on software development, conferences and developer community, then check these out.

First, I sat down with Andrew McNeil of the FoxShow over breakfast in Mesa, AZ. Andrew and I were both speaking at the Southwest Fox Conference for Visual FoxPro developers. I thought the conversation came out well:  FoxShow58SWFox.mp3

Next, I sat down with Chris Williams for his Nine Questions series. Chris sent me a list of questions to answer back in June, and I never responded. While he had the video camera in hand at PDC, we sat down to do the video interview. Again, I'm happy with the outcome:

Cheers,

++Alan

 Sunday, 03 August 2008

The Paradox of Simplicity

In agile development, it is common to hear people say "do the simplest thing that could possible work." This is a corollary to YAGNI or "you ain't gonna' need it." I don't hear many of my fellow developers outside of the agile movement arguing with those sentiments. It seems we can all agree that we should not exert effort beyond solving the specific problem at hand.

There is, however, contention about what the implementation of such pragmatic simplicity looks like. As a .NET practitioner of agile development, it is common for me to write tests before implementation code. I often write interfaces which have only one implementation. I may use an inversion of control container, an object-relational mapper and other infrastructure utilities which appear to add unnecessary complexity to developers with a different outlook.

One of the most glaring anti-patterns for simplicity in my view is the SQL data source. It seems very simple and pragmatic to some because it allows the developer to quickly create a forms over data application which will deliver value to the client. While I agree that there is tremendous immediate benefit in using the SQL data source for the initial delivery of value, there is also a tremendous cost down stream.

In my view, the SQL data source represents all that is flawed in RAD (rapid application development) tooling. It allows the developer to quickly get data into and out of a database into and from the user interface. It also tightly couples the data access implementation to the user interface making future changes very difficult to implement. Fundamentally, tools such as the SQL data source represent the software equivalent of a Rube Goldberg machine where each bit of functionality relies intimately on the implementation details of it's neighboring components.

The core problem in software from my experience is not the delivery of the initial version of any functionality. The core problem is that that I and the customer never know when or where the code will need to change, but we know for certain that it will change. Enabling change therefore becomes a top priority along with delivering value.

If I deliver value up front while discouraging later changes to the code, then I have not actually delivered value. I have in essence paid with a credit card. The cost of changing the code must be paid later with interest. This phenomena is commonly referred to as "technical debt."

In my agilist mindset, I view the avoidance of technical debt as an essential element of simplicity. High coupling and low cohesion are too high a price to pay for immediate gratification. Furthermore, I have found that once I become experienced with the tools and practices of agile development, there is little cost, if any, to building changeability into my implementation from the start.

Kind regards,

++Alan

 Monday, 30 June 2008

Get on the Bus Y’all!

Have you heard about DevLink? It’s a can’t miss conference happening on the campus of MTSU in August. What’s that you say? You live in a more northern climate, and you don’t want to fly or drive? Well, listen up now, ya’ hear?

You can ride the DevLink Bus from as far north as Michigan and enjoy the company of your fellow software developers. Details and costs are still being finalized, so please register your interest by submitting the form so we know how many people to plan for.

Happy trails,

++Alan

 Wednesday, 25 June 2008

Speaker Idol Talk at TechEd

While I was in Orlando for TechEd developers earlier this month, I participated in competition called Speaker Idol hosted by Carl Franklin. Contestants had to give a five minute presentation on a topic of their choice. I chose to explain Test-Driven Development (TDD). I also made the decision not to give a demo in such a short time.

I made it to the finals where I came in as the runner-up and won a BlackJack II Windows Mobile phone. Eric Shupps won a speaking slot at next year's TechEd with an excellent talk that included a well executed demo.

I have embedded a clip of my talk below. You can download the clip here, or watch the entire Speaker Idol finals here.

Cheers,

++Alan

 Sunday, 01 June 2008

Agile Development Birds of a Feather at TechEd Developers

As part of the TechEd Developers conference this week in Orlando, Fl, I'll be facilitating a discussion of the pros and cons of eXtreme Programming and other agile development practices. We'll be discussing what has worked for us, and what hasn't.

BOF857 Agile Development, Tenets of XP: eXtreme Programming

Wednesday, June 4 6:30 PM - 7:30 PM, N330 D

Using various tenets of XP can provide the impetus to make your development process more agile. Agile is a discussion point: what do you do or want to try to do to add Agility to your development process? We throw around a few ideas regarding processes such as SCRUM, Continuous Integration, Pair Programming, regression testing/tracking metrics, code generation, Team System, and others. Everyone can share whatever has worked and what they are working on. This is a forum to exchange workable solutions to faster development with near perfect execution on fast development cycles.

Birds of a Feather (BOF) sessions are interactive discussions rather than presenter-focused lectures. This is perfect for me because I am not an agile development expert. I am an imperfect practitioner of agile practices. I'll be moderating the discussion, but I fully expect there to be smarter, more experienced people in the room to enlighten the rest of us.

If you'll be at TechEd Developers this week, please join me on Wednesday evening at 6:30 for what I hope will be a lively discussion.

++Alan