Thursday, January 15, 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, January 14, 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, November 01, 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, August 03, 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, June 30, 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, June 25, 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, June 01, 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

 Thursday, May 29, 2008

TechEd Developers Tweetup

It's time for TechEd 2008. This year the conference has been split into separate weeks for IT Pros and developers. I will be attending the developer edition next week in Orlando. This is my fourth consecutive TechEd conference, and the first I've paid for personally. That's right, this conference is so valuable, I'm willing to pay out of my own pocket to attend.

This will be the first time I've been to a large conference since joining Twitter. Twitter has been a great tool at smaller events for meeting up with people and spontaneously organizing outings to restaurants, bars etc.

Hunter French created a Twitter group on the TechEd Connect site. If you will be attending either week of TechEd, I encourage you to join the Twitter group so other tweeple at the event can keep up with you during the conference.

In the group, I have created a Tweetup (Twitter Meetup) event for Wednesday, June 4 at noon in the dining area. Everyone interested should join us. I'll print up some signage, but if you just look for the people obsessively typing on their phones, you'll find us. Use this link to add the event to your calendar.

Here are the people that I follow on Twitter that are planning on attending TechEd Developers. If you are attending and I didn't list you, please add a comment with your twitter handle.

@wbm @bencarey @jfollas @dcampbell @pandamonial @jmcwherter @mhouston @lespaulrob @aaronlerch @keithelder @arcanecode @gblock @dougt @glengordon @jeffreypalermo @joefeser @ardalis @saraford @darcy_lussier @OdeToCode @MobilityMatters @shanselman @jjulian @careypayette @scottcreynolds @laurelatoreilly

I look forward to meeting the people behind the 48x48 pixel avatars. See you in Orlando!

++Alan