Microsoft is out to prove a point with Windows 7. I can see the message clearly: "See, we can deliver on time; and earlier than most expected. And to top it all off, we did so without drastically changing the OS. That 'polished' OS you're looking at... yeah, it's Vista; 'Vista-point-1' to be exact. Sure, we tweaked it; but that's just to prove another point: Microsoft software isn't about bloat." I could probably go on for a while, but the signs are all there. Sinofsky has done a great job taking the Windows team under his wing. I've been very happy with some of the decisions they've made. As a matter of fact, I'm hoping to see some of the same changes on other fronts. Enter Internet Explorer.
IE8 is a big flop in my book. Don't get me wrong, it's my default browser and I love the enhancements; but it's just hiding the real, underlying problem: the foundation. I apologize for the analogy, but you can only mold a pile of crap so many ways before it just starts falling apart. Arguably, the same can be said about Windows, but Windows 7 has really given it a refresh. It's hard to explain how much better Windows 7 feels. I have to say I'd liken it to the first day I got Windows Vista, to be honest; but the key differentiator there is that I had quality hardware that was up to the challenge and no legacy software or devices to be concerned with. I'm not the "normal" user, of course, and I feel bad for those who had bad experiences. It's not because the software is bad, it's because your circumstances around which you experienced it were wrong. Not that Microsoft isn't to blame, tho; but I'm getting way off topic. It's time for a major change with IE.
I remember seeing some early concepts around IE8. At first glance, I was confused at a few of the ideas -- I'm thinking of one in particular -- but after I paused to really mull it over, it hit me. The power users would have at their fingertips would be astounding. There's a common root to the booming growth of Google and Firefox. This is exactly what Microsoft would've seen with this feature. Guess what: that feature never saw the light of day. As a matter of fact, I don't even know that it made it past that slide deck. Admittedly, the idea was rough, but it had some real potential. What's funny is that I just read something about the same concept being applied to another browser. *sigh*
Before IE8 beta 1 hit the streets, I saw another slide deck about what would be included in IE8 and 9. At first, I was excited, but it didn't take long for that to wear off. I actually began to question some of the decisions. There was (once again) one feature loved, but then I started to wonder if it even made sense. Depending on whether the team takes a left or a right out the gate will be the deciding factor for that feature... if it's still even a possibility. IE8 was pushed back so much that the IE9 time frame and feature set is completely out of the picture for what I saw. It's too bad; I was looking forward to a few quick revs. At the same time, this could be perfect timing.
Opera's doing it's thing, although I'm not sure why it even bothers; Apple's giving Safari on Windows a go, but not doing well; Google's got juice, but I don't think they have the right talent-mix to succeed; and Firefox is leading the pack against IE, but hasn't really made any significant innovations and is growing more by perception than anything. Microsoft (read: IE team), the browser market is yours to lose [which you're doing]; but it's also yours to dominate. Take a step back. Review the history books. There is one constant in what drives the up-and-comers of today. See that and feed into it. The world is asking for simplicity, speed, and all-around usability. IE8 isn't the answer. IE9 could be. You can do better. I know it; you know it.
Whether you've heard about Visual Studio 2010 and .NET 4.0 or not, you should really be watching the 10-4 show on Channel 9 . As you have probably guessed, the show talks about what to expect in Visual Studio 2010 (version 10.0) and .NET 4.0. The episodes I've seen cover things like ASP.NET, AJAX, parallelization, and overall enhancements to the VS IDE. Admittedly, I'm behind a few episodes, but that's just par for the course While each of these has been valuable on its own, I have to specifically call out episode 5, Code Focused in Visual Studio 2010. This episode talks about three things: code navigation, test-driven development (TDD), and extending the VS editor.
These first two areas, code navigation and TDD enhancements, are taking a page from the Resharper bible. If you haven't used Resharper, yet, you're seriously missing out. Resharper is the one VS add-in I can't live without -- GhostDoc isn't too far behind, tho. The first thing we're getting is the ability to highlight all references of an variable. This doesn't sound all that exciting, but it's really nice to see without having to look, if that makes sense. To top it off, you can bounce between these references with simple keyboard shortcuts.
Bouncing between variable instances is neat, but let's take it up a notch. If you're digging into new code, figuring everything out can be a true feat. To help us move down this path, VS10 is giving us the ability to view the hierarchy of calls related to a specific method/property. The call hierarchy tells you everthing that calls your code block and what your code block calls. This is going to make understanding code a lot easier. We're still short of my desired end-goal of having an automatic sequence diagram generated, but at least we're making steps in that direction.
From a productivity perspective, one thing I love about Resharper is that, if I need to open a file, I don't need to know where it is, I simply need to know its name. VS10 is bringing this to everyone. A simple shortcut, like Ctrl+T, and a dialog pops up, waiting for you to type in the file name. You can type a partial name, mycla to get MyClass.cs, or use the Pascal-casing and type MC to get MyClass.cs or MyComponent.cs. Pay attention to how much time you spend in the solution explorer. Imagine cutting that in half, if not more.
The TDD-based enhancement really isn't about TDD, but it does support TDD very nicely. Basically, the idea is, when you're writing code, you want to dig in to the real logic, not go around creating domain objects and data access layers. To support this, you just start typing. If you need a customer class, you just reference it in code. VS will tell you it doesn't know about that class, but this is where the feature comes into play: it'll give you the option to generate it. The same thing happens when you add properties and methods. VS will generate the stubs for you. This lets you focus on one method at a time, without having to divert focus to figure out how third party code needs to work. This is all about decreasing the noise, in my opinion, which is very hard to do sometimes.
The last thing the episode covers is something most people will probably underappreciate: the new WPF-based editor. Despite what people think, this isn't about flashy graphics. Nobody wants text to fly across the screen as we type it. There are two concepts here: (1) simple animation can go a long way to enhance user experience; and, (2) WinForms is now a legacy technology and WPF provides so many enhancements that it just makes sense to bring this to developers, making it easier to build and extend on the #1 development environment in the world. Everytime I think about this, I fall back on Resharper. Now that it's so easy to do amazing things with the editor, what is the Resharper team going to be able to give us? What is the community going to be able to give us? I can't wait to find out.