The Web Gambit

Thoughts on Web Development

Monthly Archives: April 2007

Team Foundation Server backlash

There has recently been a backlash against Microsoft’s Team Foundation Server.  Team Foundation Server attempts to be a one stop shop for the following:

  • Source Control
  • Task/Bug management
  • Build management
  • Test management

The consensus seems to be that it doesn’t do any of these things particularly well. 

With regards to source control, speed is everything.  Especially when you have a geographically distributed team.  TFS fails here because it is optimized for local networks but crawls miserably over an Internet connection.  Also equally important is accessibility.  TFS requires a Team Edition of Visual Studio and Team Foundation Client Access License. Without a free version to help begin adoption rates, it is difficult to justify the cost.  Additionally, there is no option for anonymous source access using TFS, making it an unlikely choice for open source projects.  I know of many open source projects that chose Google Code over CodePlex for this reason alone.

One aspect of TFS that many users rave about is the Task/Bug Management.  Being able to tie changesets to tasks on a project plan can be a huge boost for a project manager/development lead.  However, it can be overkill for small teams.  My experience with the Work Item tracking is that it becomes cumbersome within small teams and the Work Items quickly become meaningless as the project reaches a rhythmic development process.  This can be very dangerous and lead to a false perception of the project ‘s status if Work Item tracking is the only visible metric of the project’s progress to the project’s sponsors.

With regards to Build Management, TFS lacks out of the box support for Continuous Integration.  This is a major flaw because TFS fails to accommodate many organizations that have thrown their weight behind CI.  Also many users have an existing base of nAnt scripts that they have been using for builds.  Without no integration or easy migration options, TFS becomes difficult to integrate into such environments.  I know of someone who actually has his MSBuild scripts internally execute his nAnt scripts because his organization was migrating to TFS and rewriting all of the existing nAnt scripts in MSBuild simply wasn’t an option.

Finally, with Test Management, TFS is still very unproven.  Most QA groups have a lot of difficulty justifying even basic automated tools and typically use either a suite of small scale testing tools or one large testing platform from IBM, Borland, or HP.  If TFS included basic integration with some of these existing testing platforms, it would be much easier to justify the cost of the product.

My opinion is that if you are modernizing a large development group or if you just migrated over to Microsoft .NET from another platform, Team Foundation Server can be very attractive.  However, it is very difficult to integrate into existing teams that already have a working system in place because it generally falls short in one or more of the four aforementioned categories.


The Spartan Developer

I watched 300 for the second time last weekend and it got me thinking about the effectiveness of a small group of highly talented individuals versus a much larger group of modestly talented individuals.

For those who haven’t seen 300, it is an adaptation of the Battle of Thermopylae and chronicles the last stand of a highly trained elite group of 300 Spartan Warriors against the Persian Army which numbered more than 300,000+ troops.  Using both the terrain and their superior fighting skills, the 300 Spartans (and 700 Thespians) were able hold back the Persians for three days and give the other Greek City-States enough time to prepare for a more effective defense.

Being the uber-geek that I am, I couldn’t help but draw parallels to the current shift in software development to move towards smaller, more effective teams of talented developers, versus the older practice of building software by using hordes of weaker developers.  With Agile practices quickly supplanting traditional Waterfall methodologies, smaller teams are becoming more common in the software industry. Even larger projects are broken out into smaller pieces that are built by smaller teams.  Inevitably, a smaller team would require all of the team members to be very talented as even one sub-par team member can weaken the entire team.

Let’s call these highly talented individuals, the Spartan Developers.

So how do you recognize a Spartan Developer?  One way to is to find out how they learn to become better at their craft.  A good start on the subject is from the preface of Steve McConnell’s Code Complete.

Based on this diagram, a Spartan Developer stands out due to their experience and their willingness to learn.  Their tools are magazine/internet articles, technology references (books or websites), software engineering books, and programming specific books.

However, I find this diagram to be slightly incomplete, and I would add one more piece near the bottom.

User Groups and Conferences are some of the best places to meet Spartan Developers. No craft can be fully learned and understood without some effective demonstration.  Also a Spartan Developer understands the people component of software and knows that networking and learning from others is crucial to success in one’s career.  Finally, a Spartan Developer likes to work with other Spartan Developers, because they know that their success is built on the success of their team as a whole. Just as Spartan Warriors relied on their Phalanx to be an effective force, a Spartan Developer relies on his teammates to get the job done.

Dallas Code Camp 2007 Summary

The Dallas Code Camp held today turned out to be a great success. All of the volunteers did a great job despite some jolts and the event came together quite well. Initially we thought the attendance numbers would be low, but we were able to fill most of the rooms to capacity (some actually went over). Below is a summary of my thoughts on each of the sessions that I attended.

.NET Generics with Ken Byrd

This was a very interesting session giving an overview on how to use Generics in .NET 2.0. While I had initially used Generics for simple tasks like converted untyped ArrayLists into Type-specific Lists, I had only gone so far with them. Ken’s talk gave me an overview of the true power of generic lists with regard to Swapping, Sorting, and Finding. These are options I can immediately use in my daily job as we end up working with strongly typed lists quite a bit.

C#3.0 Overview with Tim Rayburn

Tim Rayburn is a very energetic speaker with a great ability to entertain as well as inform. I have known him as a friend and colleague for the past year after attending his talk last year on Biztalk. This year, he gave a talk on C# 3.0 that gave a good sneak preview of some of the cool features coming to C# including Implicit Properties, Implicit Variables, Object Initializers, and Extension methods. The talk was great because Tim made no use of PowerPoint and simply wrote code during the whole session. I was initially dubious of the usefulness of some of the more obscure Ruby-like concepts which seemed ripe for abuse in future development. However it all made much more sense when I got the full overview of LINQ later in the day since it seems that much of C# 3.0 was built specifically for LINQ. Tim’s talk provided a great foundation which made the LINQ concepts far easier to understand.

Software Development Chalk Talk with Dave McKinstry

Dave McKinstry held a small session with a group of developers to discuss the Software Development Process and share our experiences with it. Dave is a development process consultant for Notion Solutions and he is also the first development process consultant I’ve heard of. After speaking with him, I can immediately see the value in bringing someone like him in to evaluate and advise a company on their development processes. During the discussion we touched on Agile, CMMI, RUP methodologies and shared our experiences with them. It was interesting to hear other people’s perspectives on dealing with development teams and share some common “war stories” from the software development front. I have often become very pessimistic about the development processes at companies I have worked for in the past due to many bad experiences with poor process management. But after speaking with other developers facing the same issues, I realized that it’s only a matter of time before things get better. Dave also reaffirmed this thought as he said he has definitely seen a progression from chaos towards order happening in the industry. I look forward to a future with less pointy-haired bosses.

Developer Productivity with Dave O’Hara

Dave O’Hara is a friend and mentor who has an amazing arsenal of productivity tools at his disposal. He’s also very energetic and engaging and has a great style of keeping his presentations very hands on. For his session, Dave focused on showing developers the use of DevExpress’s CodeRush for Visual Studio.NET. Despite having some technical issues and borrowing another attendee’s laptop, he pulled off his demo spectacularly and got a very positive response from the crowd. I had been using CodeRush for a while, but I realized after Dave’s talk that I probably only use about 2% of its total functionality. Hopefully with all of the cool shortcuts and mnemonics Dave showed, I can start harnessing CodeRush a bit more. Considering what I saw today, I’d be happy if I could even use 10% of its total capability.

LINQ Overview with Claudio Lassala

LINQ is a new technology from Microsoft that will be introduced with C# 3.0 that will integrate SQL-like queries directly into the compiled language. While I had read overviews and blog posts about LINQ before, this talk really gave me a sense of how broad LINQ really is. I had initially thought that LINQ was really just a substitute for dynamic SQL and was likely to incite more religious debates with the Stored Procedure camp. But Claudio Lassala gave a talk that completely changed my perspective on LINQ. Claudio showed that LINQ can be used for collections and other data-related objects within C#, effectively making error-prone objects like DataSets and DataTables obsolete. By providing the strong typing of typed datasets without the extra maintenance and overhead, LINQ will absolutely change the face of data access and manipulation on the .NET platform. Tim Rayburn mentioned in an earlier user group meeting that one would be wise to choose an ORM that integrates with LINQ to be future proof and I full agree with him. LINQ will greatly reduce the complexity of Data Access and make building the data layer of an application much easier. In addition, Claudio was a wonderful speaker that brought great energy and enthusiasm to his session. I was so impressed with his presentation that I had to stay for his second session as well.

Design Patterns with Claudio Lassala

Design Patterns are often introduced to CS students in very vague and abstract concepts. I have always found it difficult to grok a particular pattern without seeing some code which implements it. But often the implementing code is too complex to truly express the concept behind the pattern. However this was not the case with Claudio’s examples. By illustrating the patterns with simple classes (my favorite was the singing and dancing Frog class), Claudio explained the usage of patterns like the Facade, Decorator, Factory, Template, and Iterator patterns. Additionally he showed an implementation of the Iterator pattern which literally “faked out” a foreach loop in C# to make the underlying object being iterated upon behave like it was a collection even though it actually was not. This talk was very informative and I would love to see a longer version from Claudio at some point in the future.

Thanks to Omar Villareal of DDNUG and Toi Wright of DAUG for helping to organize such a great community event.

IntelliTXT is worse than Snap Previews

I think I found something even more annoying than Snap Previews.


In this situation, when you mouse over the word "Rayman", this dialog comes up offering you web information, images, and even a Live Search of the term. And the worst part is that the IntelliTXT engine will pick random words in an article/blost/forum post and transform it into this javascript mouseover.

I’ve stopped reading sites like Tom’s Hardware and Anandtech as it has become clear to me that the creators of those sites have gone ad-happy with the IntelliTXT on every single page of the site.

I understand that there are blockers out there for this stuff, but I think the latest update to IntelliTXT has just gone too far in my opinion. If you’re using IntelliTXT on your site, I would advise you to consider something less obtrusive.

SearchDotNet Browser Integration

Greg blogged about the availability of an IE Search Provider for the SearchDotNet filtered search engine that I mentioned earlier. Use this to add SearchDotNet to your managed list of search engines in IE.

For Firefox fans, you can find the Search Engine integration here. That same site has many other search engines, but unfortunately doesn’t have dedicated URLs for each one. Mozilla really needs to redo that page and make these engines more accessible.

Bringing women into Computer Science

The New York Times had a great article talking about the current shortage of women in Computer Science courses around the country and what different universities are doing to increase their numbers of incoming women. This should continue, as there are many examples of very successful women in software and I hope to only see more in the future.

However, it’s no secret that Computer Science enrollment in general has been down ever since the dot-com bust. Comp Sci is often perceived as a dead end major that only leads to programming jobs that will likely be outsourced some day.

This couldn’t be farther from the truth. InformationWeek recently reported that more U.S. Workers have IT Jobs than ever before. So things are even better now than during the late 90’s boom.

While many in the industry are actually elated about the lack of new Comp Sci graduates to compete with, the long term outlook is actually far worse. Hiring a good developer has now become an exercise in frustration. As the number of qualified candidates goes down, the quality of the software produced must also go down. This means more buggy code, longer hours as a result, and poor quality software which will only continue to give our industry a bad reputation.

I think every developer out there should work to change this perspective that development work is easily outsourced, menial, and ultimately insignificant. Do your part to change the perception of our industry so that young people want to go into it and have rewarding careers.

Twitter, the unlikely flagship app for Ruby

After seeing Jason’s recommendation to try Twitter and speaking with my colleagues at the latest DDNUG meeting, I decided to give Twitter a shot. It seemed fairly simple to start with and highly addicting for quickly posting simple stuff without writing a full blog post.

However it didn’t take long to see what everyone is complaining about. Twitter is slow. It’s clearly a victim of its own success, but this could have some repercussions for the Rails community as it basically proves that Ruby on Rails does not scale well beyond certain limits in its current form.

Twitter’s definitely not a victim of their Rails environment choice, but seems to be more a data architecture problem. Friendster ran into similar problems back in 2003.

I’m sure the Rails community will figure a way to deflect this bad PR, but to really compete with the Enterprisey heavy-weights like J2EE and .NET, they better come up with a way to scale better before they become the next PHP.

Search Engine for .NET related topics

I was listening to the recent DotNetRocks podcast with Dan Appleman where a specialized filter search engine was created by Dan for .NET related content. It searches about 60+ sites that are devoted to .NET related content. Using this site I was able to find content I never would have found through using Google alone. I highly recommend checking it out when you get a chance.

Becoming more ALT.NET

Dave Laribee had a great post where he has coined a new term for .NET Developers called ALT.NET. An ALT.NET developer is always looking for a better solution and is willing to go outside the .NET community to find new solutions.

Being ALT.NET means that you don’t simply take what Microsoft spoon feeds you and wait until a tool/solution is wrapped in Microsoft goodness before you use it. However, once Microsoft does emulate your tool/solution, you make a serious attempt to conform to their solution if it meets your needs better.

Here are some of my definitions of what is to be ALT.NET:

What are you doing right now to become more ALT.NET?

Dallas Code Camp v2

The 2007 Agenda for the Dallas Code Camp has just been released! It will again be held at the Microsoft Campus in Irving, TX. I went last year and the event was a huge success. I would highly recommend any .NET developer in the Dallas area to attend the event on Saturday, April 21, 2007. Space is limited so I would advise registering as soon as you can.

Code Camps are free events for developers to get together and attend sessions and “chalk talks” with other local developers. They’re a great place to network with other locals and learn about the latest and greatest technology offerings. And they give out great prizes too.

This year my friends Tim Rayburn and Dave O’Hara are both giving presentations on C# 3.0 and WPF respectively. Dave’s presentation on WPF during the .NET community launch was especially lively so I’d expect the same from him during the Code Camp. And Tim’s been playing with C# 3.0 quite a bit so I expect a great discussion from him as well.

Hope to see you there!