The Vision Thing

Early in my career at Microsoft, I was part of one of the biggest development disasters at Microsoft (no, not Windows Vista), called WinFS. WinFS was an attempt to bring the benefits of schema and relational databases to the Windows file system. I never worked directly on WinFS but since I was part of the SQL Server organization during that time (I worked in Reporting Services), I got to see it from birth to death. I won't go over all of the specifics here but if you want some of the gory details, the Wikipedia article has a pretty good overview of the technology specifics. The WinFS effort was started around 1999 as the successor to the planned storage layer of Cairo and died in 2006 after consuming many thousands of hours of efforts from really smart engineers.

I suspected from early on that the project was doomed to failure. What made me think this? Because when I would ask anyone involved with the project the question "What is it?", I would get a very different answer. Some people would say that it was the database embedded in the operating system. Others would say that it was XML in the database. Other answers included a SQL-based file system, an object/relational mapping layer, rich storage for Office apps, a file system metadata indexer, .NET in the database, etc. It's not that these weren't useful technologies (many of them shipped outside the WinFS project), it's that there wasn't a singular vision driving the project to completion. Because no one could identify the essence of the project, it made it really hard to make any decisions about what should or shouldn't be included.

So, why do I bring this topic up? Because I think it provides a barometer for other projects that may be headed towards certain doom. If you can't boil down what your project is about (and everyone is be able to say what it is) then it's probably not going to be successful. I would argue that even a single, incorrect goal is better than a wide variety of semi-correct goals. You can always change the course of a team headed in a unified direction but trying to corral a team headed in every direction is pretty much impossible.