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

 Thursday, 29 May 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

 Sunday, 18 May 2008

How I Found My Tribe on Twitter

I've been using Twitter since 11:04 PM October 25, 2007. I quickly found it to be useful and entertaining, like a group IM client or IRC. But Twitter is different than previous "group chat" tools. I've been struggling with what exactly is different, and I think I've finally put my finger on it.

The people I interact with on Twitter are my tribe. I like the word "tribe" because it connotes a shared identity. My Twitter Tribe are a "we" and an "us". I suppose this is how sports fans feel about their fellow fans, but I've never had this experience before, or at least not to this degree.

It was Rands who introduced the idea of tribes in Twitter to me. He does an excellent job of explaining some of the game-changing social networking hacks that Twitter provides, but he misses something that I've been trying to come to grips with. Twitter has provided a new sense of belonging in my life.

Because Twitter is an "opt-in" social network, it self selects for like interests. I don't follow people because they are "famous", but because I'm interested in what they have to say. What was unexpected at the start was that I became engaged with the people themselves, and not just their insights and wit. For instance, when I got into Joe O'Brien's minivan this weekend, I immediately realized it was the same vehicle that had been stolen and recovered. I only knew this piece of Joe's personal history because he had twittered it. I remember the feeling of relief I felt when he announced, on Twitter, that the police had recovered his family's primary vehicle.

Beyond all the productivity, entertainment and publicity benefits of Twitter lies this fact: I love the people in my Twitter Tribe. If you're uncomfortable with the "L Word", then please accept that I feel emotionally connected to them, even if I've never met them. When I do meet people after following them on Twitter, I have an urge to hug them like a reunited friend.

Twice now I've had the opportunity to meet up with members of my tribe that I hadn't met previously, and the experience was seamless. I didn't "think" I knew these people. We knew each other. We were already an "us"; a tribe. At the Indianapolis Code Camp last month I met around ten people I knew through Twitter and it reinforced my feeling about the power of Twitter.

This past weekend at the Cleveland Day of .NET I met easily twenty people that I knew through Twitter and followed that many more new people I was introduced to. This was a very emotional experience for me. You see, I am part of a small demographic of social or extroverted computer nerds. There aren't that many people like me who are geographically close. Not enough to call a tribe, anyway.

Through Twitter I can connect with this demographic of people all over the world, and maintain constant contact. Twitter bridges the gaps between conferences etc. where people in my niche gather socially. Because of Twitter, I am in touch with "my people" all the time. The sense of belonging and acceptance is unprecedented in my experience.

There are many ways to use Twitter. There is no "right" way to use this simple service. I have stumbled into one particular habit of use. I am not resorting to hyperbole when I say that the effect has been life changing. Your mileage may vary, but from conversations I've had, I know I'm not the only one experiencing these effects.

I always demo Twitter at the start of my presentations these days as a way to encourage audience members to continue the conversation and learning outside the session. Perhaps I should include a warning "This service could lead to serious emotional attachment and meaningful relationships resulting in a fulfilling sense of belonging. Proceed with caution."

Peace,

++Alan