Monthly Archives: February 2010

Civilization V

2010 is going to be the best year EVER!
I absolutely love the Civilization series. My megalomaniacal side is released without constraints. There are a million ways to play this game and win, but my favorite is racing through the technology tree. I typically spend the majority of the beginning years claiming as much space as I can and just defending. All the while, I’m pumping everything I can into tech.
I not only have a goal to beat the game, but I love to ‘race against time’. It makes me happy to discover technology WAY ahead of what happened in real history. Once I’ve conquered the tech tree, I take my advanced weaponry, culture, and diplomatic advantages out on the rest of the world. Most of my cities start churning out tanks, missiles, and bombers, while a select few build the remaining wonders.
The most frustrating part of the game for me is utilizing land. My OCD won’t let me overlap cities and at the same time I use up every available spot regardless of its value.
If you love this series or want to find out more, keep on an eye on this space.

STL Innovation Camp

Brian Blanchard is a fellow St. Louis-based colleague and friend. He has been working hard to organize a St. Louis Innovation Camp. I have the good fortune to present tomorrow at 11am on the UMSL campus. My topic is What is ALM and why do I care? and will be about the importance of process in a small development team or startup and will present Team Foundation Server as a tool to support these processes. Learn more at

My First Blog Video – Intro to Branching

I decided to try to create a video to blog about some of the new features in VS 2010.
In case you prefer to read a blog post rather than watch it, I’ve included the transcript of the video below:

"Hi. My name is Jeff Fattic. In this first video of my ALM with TFS series, I’m going to discuss branching. This demonstration is being recorded using the Visual Studio 2010 Beta 2 VPC which can be downloaded from MSDN.

Branching is an extremely beneficial feature of software configuration management systems. The primary benefit is enabling parallel development efforts through isolation. I think organizations using TFS are often intimidated by the idea of parallel efforts, so I wanted to create this video to at least address the ease of creating a branch in TFS.

I will be using the Source Control Explorer window for the majority of this demonstration. In my example scenario, the folder labeled MAIN is where the initial solution was added to source control. In my branching strategy (of which there are several), MAIN is the most stable version of the application. No active development is allowed in MAIN and it is highly protected by quality gates like a nightly build that executes a suite of automated unit tests. Some teams will opt to apply other quality gates and set security on this folder.

Above MAIN, notice the folder named Dev1. Two of my developers are completing work on another feature that will be released to QA shortly. I don’t want to start coding my feature and potentially put their code in an incomplete or unstable state. Therefore I am going to create a new development branch for two other developers and myself to work in.

First, I’ll right-click MAIN and select “Branching and Merging” and then “Branch…”. The Branch from MAIN dialog window appears. Notice the textbox labeled “Source Branch Name:” is prepopulated with the server location of the MAIN folder. I’m then presented with the option to branch from a particular version such as a particular date. In this case, however, I’m going to select “Latest Version”. Next, it requires I specify a target branch location. I want this branch to be another development branch so I will put it parallel to Dev1 by entering “$/TailspinToys/Dev/Dev2”. Finally, I can enter a description and then click “Branch”.

Notice the new icon representing branched folders. A somewhat hidden new feature of TFS 2010 is the branch properties window. Go to the properties window by right-clicking the folder and selecting Properties… from the context menu. From here you can define an owner or elaborate on the description. You can also visualize the parent and child branches directly related to the selected branch. Finally, you can also set security – say to prevent Team A from accidentally using the new dev branch.

I’ve now created what amounts to a snapshot copy of the contents of MAIN. This allows my team add new features or resolve bugs without stepping on each other. Merging branches, which I’ll cover in a future post, allow me to sync changes between branches with a lot of control.

Like branching strategies, there are several ways to organize your physical folders as well, but I think this is the most flexible. The first decision I usually have to defend is the generic naming of my development branches, however I’m a big believer in reusing development branches. Feature development ends when it is released to production (the release branch). This frees up my branch to be used by another feature. After all, it has been reverse-integrated with MAIN on its way down to a release branch. I know others often archive branches, but I’ve never seen anyone pull from them. They are quickly outdated and the last version of that branch should be retrievable by getting the specific changeset created when it was reverse-integrated to MAIN.

Recommended branching strategies can be found on CodePlex at I strongly agree with the guidance that organizations should begin with the Basic Branching Strategy. It can be difficult to dive into something that is too complex and end up with unused or frequently outdated branches. It’s also strange that so many organizations I’ve worked with think there systems require something way more customized and complex. Usually this indicates problems elsewhere (poorly organized solutions and/or overly coupled architecture) and branching won’t really resolve them although it might hide them for a brief time.

My name is Jeff Fattic and thanks for watching my video. Look for more details on branching and other cool features in Visual Studio 2010."

The FEAR of improving software development

I recently completed my trip to Kansas City for the “Drive Your Development Tour” (aka the VSTS Road Show mentioned in my previous post). We had a good turnout at the event and a lot of great questions during and afterward. I hope those of you in the Minneapolis region can make it out!
I know it’s not cool to edit your blog post after they’re published, but Clint recently posted some pics from our events.
  • This is Kevin kicking off our STL event.
  • This pic shows Lee listening to me discuss static code analysis (or something), but probably really thinking about some cool new BDD stuff he’s working on.
  • This one is a bit strange, but apparently this is the part where I was educating them on the finer points of salsa dancing.
It’s really encouraging to see software development groups really starting to take process and the tools that enable them seriously. It’s great to talk to people about the adoption challenges whether they are going Big-A Agile or, as usual, some hybrid. Some discuss the challenges in getting management to understand the value of investing in tools and others talk about the fear developers have of weighty processes. These are valid concerns, however I think a lot of it boils down to a fear of change. I know we all fear change in our own way, but I’m always surprised to see it in our industry. I believe its important those of us in software development continue to embrace the changes that will push us forward.
Finally, The Visual Studio 2010 Release Candidate is on its way to the public. I encourage everyone to check it out. From what I can tell so far, performance is much improved. Here are some links regarding the RC and some of the differences since Beta 2…
I’m committing myself to blogging about as many of the new features in VS 2010 as possible. I’ll also try to include process guidance where appropriate. So, please let me know what features interest you and what process challenges you are encountering.

VSTS 2010 Road Show – St. Louis

Thanks to everyone for coming out last week to see the VSTS 2010 Road Show in St. Louis. (I guess I’m not really on the road yet, huh?) I hope people found it beneficial. I was disappointed that I ran out of time as I often do when talking about Team System. It’s just so HUGE and affects so many people in the organization! Besides that it’s been a big part of my life for almost 5 years now so I’m pretty passionate about it.Here is the combined slide deck for those interested…