Preface: Anyone who knows me well in person knows that I am very much a man with opinions and am not afraid to share them with people. However, I usually hate positioning my opinions in the public domain in written form, because I know that while I tend to rant passionately, I also re-evaluate constantly, and hate to be tied down without room to manouver and change my mind if I find myself mistaken. Expressing ones frustrations off the record orally over beers or what not is one thing, but in this age of instant no-cost transmission and duplication, and with resources like the Wayback Machine always looming over ones shoulder, the truth is that once you put something out there in written form, you can never really take it back. As such, I've always tried to steer clear of that kind of writing in this blog (in fact made me reluctant to ever start a blog at all) and for the most part have succeeded, focusing on the technical and verifiable and injecting my opinion and commentary in the form of style and sass here and there rather than outright diatribe.
However, I just responded to a survey Microsoft sent out to Certified Professionals, and found myself getting things off my chest in a little "how can we improve" box that was clearly not intended to take on this kind of dialectical heft. Since it's been written already, and I don't think there's anything surprising or unfair about my opinion, I think I will put it up for you all to read and debate if you'd like. (It appears as I sent it in the survey, with the exception that I've added some hyperlinks for your amusement.) Enjoy!
As someone who uses a lot of Microsoft products at work and at home across several machines and platforms, the lack of care in some install processes has been a major irritation. Despite Ballmer's famous rant, Microsoft continually alienates developers by wasting their time with broken or overly obfuscated installer hoops to jump through for the privilege of using the software, and no improvements are made in this area because Microsoft recognizes people using development-related tools are technical enough to figure out, handle and put up with it.
One example is the difficulty installing SQL Server 2008 on Windows 7, your much-trumpeted new flagship operating system which is deserving of its praise. Unfortunately, SQL 2008 RTM won't install properly on it; SQL 2008 SP1 is required. However, though there are four different install packages for SQL 2008 Express, only ONE of them has been updated with SP1 and it's the most limited, containing only the database engine itself. (This is very frustrating when you download a 500 mb file that's supposed to contain everything and then leave your internet access for the weekend only to find you can't install it!) Furthermore, one can't just use the SP1 base installer to get the database engine running and then run the RTM Tools or RTM Advanced Services installer to add features to the instance, because someone decided that it doesn't matter what's actually available to the install package being run, it'll only be able to add features to an instance based on what was available when it was first installed! [Note: I made that a link for you blog readers because it explains the problem, but the solution suggested in it doesn't work in this case.] So the "best" way I found to get SQLX08 working on Windows 7 with SSMS is to install the RTM and let it FAIL, (which will still have installed Management Studio just no working database engine), and then install the SP1 base overtop. That's outrageous! Why haven't those installers been updated with SP1 by now, let alone why wasn't it done immediately when SP1 came out!
Visual Studio 2008 is another example of a horrible install process. I rely on the features and fixes of VS 2008 SP1, as well as features exclusive to Team Edition, as well as features exclusive to Database Edition. There is NO full VS08 SP1 download nor any way to slipstream the service pack into your initial install, so every developer in the Microsoft sphere is stuck going through the lengthy VS08 RTM install process and then going through the even lengthier VS08 SP1 patch process when in all sanity the latter should be eliminated by now. Furthermore, the only way to get the features that are unique Team Edition and Database Edition all into one VS instance is to install Team and then install Database overtop of Team. (It's critical that one do this BEFORE doing SP1, however.) So basically I have to install Visual Studio 2008 three times just to get the environment I want. That's pretty much a whole day wasted needlessly, any time I have to set up a new or refreshed development environment.
I recently started doing development for Surface. This is a fantastic, exciting new piece of technology that is somewhat crippled by, once again, making the software process difficult for developers. The Workstation Edition of the Surface SDK will only work in 32-bit Vista. My workstation at work is 64-bit Server 2008, and all of my machines at home are 64-bit Windows 7. Surface development can't even be done on a VM or via RDP, as it often requires Direct3D, and performance would be unusably horrible even if that worked in those scenarios. So I was forced to repartition one of my Windows 7 machines and dual-boot it with 32-bit Vista just to be able to write apps for Surface while not tethered to the physical Surface table. Being forced to create an entire dedicated root-level operating system just to run one program is an awful user experience, and already feeling at home in my Windows 7 partition and faced with the prospect of rebooting just to work on my Surface apps, well that's destroyed my multitasking and my willingness to do Surface work will suffer as a result.
These are just a few examples of a consistent pattern of carelessness with installers for developer and server tools. Other examples that come to mind are having to disable Software Restriction Policies in order to install VS 2005 SP1 (because the install is so large that the hash check literally can't be calculated without running out of the RAM the system gives the hash check process), and a bug in the SQL Server 2008 Enterprise x64 installer where it would ignore the specified installation folder and look for files it had just placed there in the default folder instead, thus failing install. I'm sure I have a lot more examples that just aren't coming to mind at the moment but these are already far too many.
Microsoft has positioned itself as an industry leader in software development and data management, and has a number of excellent software products that support that position. It's obvious, however, that not enough attention has been spent looking at what us often blindingly loyal members of the developer community are put through in order to get all that software into a usable state. Until progress is made in that area, experiences writing applications on any Microsoft app stacks will continue to be bitter ones.
-------------------------------------------------------------------------
Edit: Some have expressed some curiosity about whether or not I got a response to this from Microsoft, and how positive or negative it was... While the survey I answered was not the kind designed to generate two-way communication, I did hear from a Developer Advisor/Evangelist at Microsoft Canada whom I've had the pleasure of meeting at a number of conferences (and who apparently reads my tweets), who sent me a couple of encouraging DMs:
Nice post! Clearly, there's more work that we need to do. BTW, if you have questions, please drop me a line; 555-555-5555(redacted)
Thanks man. I hate speaking up, as I know those who hear and care (MS evangelists like you, thx btw) aren't the ones coding that stuff!
Any feedback is good feedback. Don't ever be afraid to let me/us know what's on your mind. We can/need to do a lot better.