I've seen Test Driven Development work, so why not adjust it slightly and have the attendees (who own the requirements after all) drive the presentation? Today, at the in-between conference (a.k.a. Microsoft Community Summit 2008), I did just that. I had the attendees drive my four hour presentation. I did this in the Open Space room, and it not only fit with the theme of that room, but it worked great! As the attendees arrived, I handed them 3-5 3x5 cards - the cool ones from 3M that you can sort, stack, and stick to surfaces. Here are the topics (backlog items) that they came up with: - How do you customize work item types?
- (What) team size to justify the usage of Team System?
- What's new and improved in VSTS 2008 vs. VSTS 2005?
- Continuous Integration (x 3)
- What performance degradation (can occur) from extensive branching?
- Integration with external tools (e.g. Mercury Quality Center, Doors)
- TDD
- Multiple builds running at the same time
- How to limit CI build to only trigger when for certain check-ins (by location)
- Best practices
- How to customize Code Analysis
- What makes VSTS more beneficial than VS Professional?
- What is Team Foundation Server?
And my personal favorite: - I'm here to see if you're a good presenter because my company is thinking of bringing you in for a day to teach the team.
For those of you who attended my talk, here's a link to my notes and my worst practices presentation.
My final talk at VSLive! San Francisco this week was on one of my favorite topics - parallel development. In other words, dealing with the real-world situations where multiple developers are coding away on the same project, and even the same file. The first order of business was to have a few of the ex-Visual SourceSafers lay down on my couch so we could discuss their phobias and irrational urge to run to their "safe place" - a.k.a. locking. In all seriousness, we discussed the two locking models of TFS and then explored the many wonderful benefits of not using locks by default, known as shared check out. Most in the audience agreed that the benefits of not blocking each other with their routine development (for example, not locking .csproj files when somebody adds a new file) greatly outweighs the detriment of having to deal with a conflict that requires manual intervention. Of course, arguments can be made either way. I pointed out that there are four situations where conflicts can occur that may require auto/manual merging: - CHECK-IN - the most obvious; somebody else may have just checked in competing changes just before you
- GET - you may already have pending changes on one or more of the files you are trying to download
- MERGE - by definition; when you merge changes from one branch to another, the chances are good that you will have to resolve conflicts
- UNSHELVE - not so obvious, but this is basically like a GET, just coming from another location in TFS; unfortunately, Team Explorer doesn't know how to handle the detection/resolving of these types of conflicts, so look to the TFPT UNSHELVE power tool for help
Finally, we looked at setting up a source control folder structure that will support your teams promotion model (a.k.a. staging environment). I proposed a simple structure, that looks somewhat like this: Some explanations - Code holds code artifacts - C#, VB, SQL, WiX, etc.
- Documents holds snapshots of the SharePoint site archived at the end of each iteration, release/version, build, etc. (whatever your term is)
- Active development occurs in "Current", which you could name "Dev" or "Main" (although I prefer "Main" for integration)
- Under the "Current" folder you'll have folders for each high-level application/component in the system, including common, database scripts, build definitions, and even setup projects
- "Branches" are just that - QA, UA, RC, Release, and private branches (Bridges), etc.
If you'd like to have a look at my slide deck, you can find it here. 
That was the topic of our discussion today at VSLive! San Francisco. Unfortunately, in the short amount of time (75 minutes) we didn't get too deep into all of the tools and techniques, but I did get my point across: I feel that Team Foundation Server (TFS) can do it all, and you should strive to migrate your source/revision control system, requirements and defect tracking system, document managing system, automated build and deployment system, and even your custom process workflow over to TFS. That said, there are certainly situations where existing systems must be used. I identified two categories of such legacy software: - Politicalware - somebody important in the organization bought or built the system and you there are strong feelings about migrating away from it
- Guiltware - the organization spends oodles (that's a lot) of cash on said software, maintenance/support, training, etc. and they haven't seen their ROI (and they may never see it)
I don't know what to tell you about the above situations, except that running in parallel (not good) or integration (better) would be an option. That lead us to the discussion of building custom software to do one-way and two-way synchronization with said systems. We briefly walked through the TFS Migration and Synchronization Toolkit (found on CodePlex) and I demonstrated the TFS to TFS Migration Tool (also found on CodePlex) which uses the toolkit. I see Team Foundation Server as yet another great "grassroots" platform. Just like .NET was for the developers, TFS is for the team. So, I say get it installed no matter what, even if just for source control, which is the no-brainer. Once it's in-house, then work on migrating the work items, automated builds, and other systems over sooner, rather than later, so you can enjoy the end-to-end traceability, product quality reports, and process quality reports. If you'd like to have a look at my slide deck, you can find it here and my demo files here (you'll need to download the SDK and CodePlex toolkit and tool separately). 
For those of you who joined me at VSLive! this week in San Francisco, I had fun sharing many worst (or un-preferred) practices I've run into over the years. My talk broke them down into several areas: TFS installation, TFS configuration, team projects, work items, and version control. Hopefully I didn't make anyone feel tool uncomfortable when I highlighted your practice on the big screen! Actually, it was all in good fun. By highlighting Team System worst practices, we were able to define Team System best practices and preferred practices. If you'd like to have a look at my slide deck, you can find it here and my demo files here. Feel free to let me know about any other worst or worster practices you may know of. 
Last year I posted a note about how to integrate VSoft Technology FinalBuilder with Team Build. I really like FinalBuilder and think it's easy to use, compared with having to hand-jam the XML of MSBuild. With the upcoming version 6.0 of FinalBuilder, this integration becomes a snap, even including a Visual Studio add-in for configuring Team Build. Read this article for more information.
One of my students forwarded this to me this week. I thought it was hilarious. 
Ah yes, late August, time to go back to school - even for us adult geeks. Fortunately, David Starr has provided us an exhaustive list of must-read books, organized by developer, tester, project manager, and executives. ... nothing specifically on VSTS however. I'll have to bug him about that.
The great news just keeps on coming from Microsoft. After a flurry of Team System announcements and downloads recently, we have yet another set of Power Tools to play with. These tools are designed specifically for the Visual Studio Team Edition for Software Architects and provide the following capabilities: - View class library projects on the Application Diagram (AD)
- View references to class library projects as connections on the Application Diagram
- Create class library projects from the Application Diagram
- Create references to class library projects from the Application Diagram
- Synchronize properties between class library projects and their representative applications on the Application Diagram
- Create and use class library applications and references on the System Designer (SD)
Fantastic. We haven't seen much out of the Architect tools, except for the SDM SDK in quite some time. I'm looking forward to it. Download the CTP here. Note: you will also need to download Visual Studio 2008 Beta 2. If you have any feedback on these tools, please visit the Architecture & Design forum.
Not only did Microsoft just recently post Beta 2 of Visual Studio 2008 (Orcas) a few days ago, but yesterday Microsoft made a CTP of the next generation of Visual Studio Team System (codename Rosario) available for download. Craziness ... which do I spend my time with? It's like having two mistresses to pick from. Anyway, here are the details, if you want to start playing with Rosario: (keep in mind that it won't ship until some time [6,12,18?] months post Visual Studio 2008, so at least 2009): Finally, and most important, provide feedback to the team using http://connect.microsoft.com.
Over the past few years, a few of my clients have deployed Team Foundation Server Proxy to improve the performance of their remote/distributed teams. It boosts network performance by caching copies of source control files in a remote location, local to the developer needing the files but away from the main source control location. In short, the proxy helps each user avoid a costly download of the files to their workspace across the slower connection. So why wouldn't this work for Team Build? In today's VSTS chat, I asked if anyone had done this. I should have expected that Buck Hodges would have, and even blogged about it.
Still trying to decide if Team System is right for you and if you can afford it. I would say you can't afford *not* to have it. Check out this list of case studies from other companies and teams who agree with me. Thanks to Rob Caron, for putting together this consolidated list of the "top" Visual Studio Team System case studies. They support a wide range of propositions by showcasing real customers who have gone through the adoption process and have great stories to tell.
Microsoft just released their Team System Web Access Power Tool (formerly known as TeamPlain). This is a Web interface to Team Foundation Server. If you have team members that don't want Visual Studio/Team Explorer installed on their desktop, but they still want to participate with the project lifecycle, this is a great, web-based approach to getting everyone connected quickly/easily. Here are some of the features: - Add new work items or edit existing ones
- Work with any type of work item, including custom ones
- Add new work item queries or edit existing ones
- View, download, upload, check-in and check-out documents on SharePoint team portal
- View reports, export as PDF or Excel
- Browse source control repositories, download files, view changesets, diffs, histories, and annotated views
- View build results, start or stop builds
- Search for keywords in work items
- Authentication Modes: Integrated Windows Authentication or Forms Based Authentication (Recommended to use with SSL)
Read more about it in Brian Harry's blog posting.
This week Microsoft released the Visual Studio Team Foundation Server – Project Server 2007 connector as a CodePlex project. The project has been up for a few weeks, but is now being broadly advertised.
The TFS-PS2007 connector is designed to integrate the project management capabilities of TFS with Project Server 2007. It's been developed by the Visual Studio Team System Rangers in response to significant customer demand for a connector solution. Future versions of Team System will have native integration with Project Server, in the meantime this Connector solution is the best way to integrate the two Microsoft products. This solution builds on the previous PS2003 VSTS Connector, published on GotDotNet.
I just learned about this neat editor for creating and editing Windows Installer packages (.msi files) and merge modules (.msm files). Orca is just one of many cool installer tools by Microsoft. It provides a graphical interface for validation, highlighting the particular entries where validation errors or warnings occur. This KB255905 article explains more.
Orca is part of the platform SDK and locating the correct download was difficult - a lot of redirected pages and dead ends, but I found it as part of the Vista SDK download as well as the Windows Server 2003 SDK download. Once you install the SDK, look for Orca.msi and install it separately.
Here is a screenshot of running Orca on the Orca.msi file ...

Microsoft (and others) had announed that its Fall Professional Developer's Conference (PDC) would be October 2-5, in Los Angeles. Yesterday, they canceled the event and are in the process of rescheduling it.
From their site:
We are currently in the process of rescheduling this fall’s Professional Developer Conference. As the PDC is the definitive developer event focused on the future of the Microsoft platform, we try to align it to be in front of major platform milestones. By this fall, however, upcoming platform technologies including Windows Server 2008, SQL Server codenamed “Katmai,” Visual Studio codenamed “Orcas” and Silverlight will already be in developers’ hands and approaching launch, which is where we’ll focus our developer engagement in the near term. We will update this site when we have a new date for the PDC that is better timed with the next wave of platform technologies.
Today's chats were well attended, with many experts and well over a hundred guests. The quests came fast and furious, with some great answers given by the experts. It seems people are really anticipating Orcas (and Rosario) for those features that didn't make it into v1.
I have captured the entire transcripts (both expert and guest chats) in this PDF document (for the 10am PST chat) and this PDF document (for the 4pm PST chat).
Note: this is the raw content, copied and pasted from each chat, so you are getting it "as is".
Pack up your compilers and IDES, because it's camping time in Portland!
Portland Code Camp 3.0 is back May 19th and 20th!
Location: Washington State University - Vancouver, 14204 NE Salmon Creek Ave, Vancouver, WA 98686
Visit the site for more information.
Join members of the Visual Studio Team System product group to discuss features available in Visual Studio Team Foundation Server, Team Editions for Architects, Developers, Database Pros, and Testers. In addition, discuss what's new in the in the Visual Studio code name “Orcas” Beta 1 releases for Team Suite and Team Foundation Server.
Join the chat on Friday, April 27th, 2007 from 10:00am - 11:00am Pacific Time | Add to Calendar | Additional Time Zones
Yesterday, Microsoft's Developer Division (DevDiv) released beta 1 of Visual Studio "Orcas", which corresponds with the Connected Systems Division’s beta 1 release of the .NET Framework 3.5. Soma blogged this yesterday morning. Visual Studio "Orcas" enables developers and development teams to rapidly create Software + Services on the latest platforms, including the Web, Windows Vista, the 2007 Office System, and Windows Server "Longhorn".
As usualy, one of the most common questions about Orcas is, "When will it ship?". Well, here's Microsoft's official/public timeline:
Orcas Beta 1 will ship "Before TechEd Orlando in early June." - done! (see below)
Orcas Beta 2 will ship "In the North American summer."
Orcas RTM will ship "Before the end of the year."
BTW you can download the ready-to-go VPC images here (Team Suite) and here (TFS) of Orcas.
Just to catch you up, Microsoft's Team Foundation Server v1.0 (released March 2006) only works with WSS 2.0. WSS 2.0 is the old version. WSS 3.0 is the new version, and launched with Microsoft Office 2007. It's full of great new features, but alas TFS won't integrate with it naturally. Even installing TFS SP1 won't get you there.
Thanks to Brian Keller, a Technical Evangelist for Team System, who has published a document on how to integrate TFS with WSS 3.0. As Brian explains, keep in mind that this is a "release candidate" of guidance that will eventually be posted to MSDN.
Now I've heard of a lot of things, but an RC of a guidance document?
I'm a bit late to the party, but I wanted to recognize a couple of cool 2007 Jolt Award winners ...
In fact, here are all the winners.
Recently, Microsoft and IESC Geekcorps have teamed up to send Microsoft developer experts to participate as volunteers in the “Access to International Markets Through Information Technology” (AIM-IT) project in Lebanon. They are currently in search of volunteer experts with expertise in Visual Studio 2005 Team System & Team Foundation Server, as well as MS Solution Framework, and general software development project management.
Those that volunteer with Geekcorps on this project will receive airfare, accommodations, insurance and a living stipend – all paid for by Microsoft. Volunteers’ only out-of-pocket expenses come from any incidentals or personal purchases. Arrangements will be made for you to travel from home to Lebanon (a passport is required) and you will be met at the airport by a program representative. The project’s duration will be approximately 6 weeks.
If you are interested in learning more about this opportunity, visit this page.
If you are running Vista and VS 2005, you need to install this SP1 update.
It's referenced by KB929470, and you can download it here.
Thank you to my friends at Basta! for recommending me as an alternate speaker for the Frankfurt .NET User Group meeting last week. Thomas "Teddy" Sohnrey was the coordinator (and my interpreter at times).
The topic was Effective SCM using Visual Studio Team System, and I enjoyed sharing my approaches and best practices to the many software developers in the room.
Of course, what I will remember most about the evening is the venue: Microsoft's office in Bad Homburg, and the free beer in the break room!
As you know, Visual Studio Team System tracks many different work item types, such as requirements, tasks, and bugs. Many agile teams like to use "sticky notes" to post on the wall to organize their backlog of requirements and tasks and plan their iterations. Even Joel on Software's company is doing this.
Since I have no life when I travel, I wrote 3M yesterday to see if they manufacture Post-It note sheets that can be fed through a laser/inkjet printer ... and they do!
They come in 25, 100, 300 or 500 sheet quantities and I checked a couple of sites, such as CDW, #1 Online Catalog, and Computers Unlimited. The prices range from $0.40 to $0.85/sheet, which might be cost prohibitive. Another cool option might be to use the stackable/sortable cards from 3m, although they are not sheet-fed, some printers might be able to "grab them". They come in a few different sizes.

Occasionally I'm asked about the business value of VSTS and TFS. I think it's pretty obvious, but I guess others need more convincing than just my word.
I've pulled together some links below that will help with this.
I was honored to learn that I had achieved the Bronze, Silver, and Gold awards for 2006.
Thanks to all of you who read my blog, attend my classes, and generally listen to me ramble on about Microsoft's tools and technology. Without you I wouldn't have these giant coins to carry around!
Join members of the Visual Studio Team System product group to discuss features available in Visual Studio Team Foundation Server, Team Editions for Architects, Developers, Database Pros, and Testers. In addition, discuss what's new in the latest Community Technology Preview (CTP).
Join the chat on Wednesday, February 7th, 2007 from 10:00am - 11:00am Pacific Time.
Over the years, we've had a few clients automate their build process by using Final Builder by VSoft Technologies. Much like Team (Foundation) Build, Final Builder is a powerful build & release management tool. Unlike Team Build, Final Builder has a slick UI allowing a build master to quickly design the builds.
Last summer, a new Final Builder version (4.2) was release which included more support for MSBuild and Team Build tasks. With that version, and following the guidance in this article, you can get the two products working together!
It looks like I'll be speaking at BASTA! in a few weeks.
I'll be delivering two regular sessions:
And one full-day workshop:
I just ran across my Visual Studio 2005 Team System book in Hungarian. Very cool!
Check out the Interbook.hu site for more information. I'll see if I can't get a copy.
I just received my letter from Microsoft welcoming me back to the Microsoft Regional Director program for the 2006-2007 period. Thought I'd share.
I'm proud to be one of the folks acknowledged for making Visual Studio 2005 the thing of beauty that it is.
Congratulations to all recipients!
This has happened to us a few times, so I'm sure we're not alone ...
You go to configure your Unit Test project for Code Coverage, but your test run configuration is missing. In other words, you click Test - Edit Test Run Configurations - and see "No Test Run Configurations Available".
Solution: Add a new item at the solution level (not to the test project!) and select a Test Run Configuration as the template
And a few more bugs and annoyances.
1) When you implement an application (i.e. Web Service) from the Application Diagram, you are not prompted to check the resulting project to source control. Workaround: Add it yourself manually from solution explorer. Nothing too difficult to do, just would be a bit more consistent with the rest of the 'new project' functionality in VS2005.
2) When you implement a Web service from an Application Diagram, the resulting code doesn't contain a reference to System.Xml. I know that this isn't a bug... But it seems wierd, since you so often use Xmk in XML Web services.
3) When you implement a unit test, using the right-click method from the code, there can be problems if you're dealing with XML. If you are passing a System.Xml.XmlDocument as a parameter, the unit test converts it to an XmlNode. These are much harder to deal with, since in a unit test, you may want to just load the XML from a file. But the problem goes very deep into Visual Studio, since the return type of a Web service is converted from XmlDocument to XmlNode. Yet they are NOT interchangable.
4) Team Foundation Server seems to sometimes slow to an absolute crawl, with processor utilization hitting 100% for 10 - 15 minutes at a time. Generally, this is when you attempt to check in a solution to TFS from a client. We have our TFS on a standalone box, set up according the setup guide. We must be missing some optimizations somewhere. The web server and SQL Server processes compete for processor time, pushing it up to 100%. Something's wrong.
5) When adding Unit Tests to a class, you can simply right-click a method and choose "Create Tests". It prompts you for the language, file names, etc. - but not the path. The new project is tucked away under My Documents\Visual Studio 2005\ ... which is an annoyance, if you like to tuck all your related projects in sub-folders under a common solution folder -- or if you just plain hate My Documents. Fix: First create a Test Project, by right-clicking your solution. Then when you
Here's the latest round of bugs and annoyances on our weekend of discovery:
- When you copy/paste an application prototype, or drag and drop a saved to toolbox prototype, it overwrites your Class Namespace with the name of the new application
- Speaking of copy/paste in the application designers, you can't use the keyboard - Ctrl+C and Ctrl+V, you have to use the mouse.
- Can we hide the labels of our Web app and Web service endpoints by default?
- When you rename the DefaultSystem1.dd (deployment diagram) to a better name, such as MyDeployment.dd, it doesn't seem to take right away. It seems like you have to save/reopen the document.
- Semi-related to the above, the deployment report always seems to read “Default“, no matter what I name the AD, LDD, or DD.
- When the validation of a deployment diagram finds “warnings“, these then become “errors“ in the deployment report.
- It seems that Visual Studio is applying my "Clean Build" source control policy when checking in Distributed System Designer solutions, which don't have any code to "build". You can always override the policy constraint; but, this is a pain.
|