(or at least, my personal take on it!)
Over the last couple of months, I've been interviewing candidates for a couple of different roles at Microsoft at a rate of almost one a week. Interviewing is definitely something of a skill, both for the interviewee and for the interviewer. A good interviewer doesn't ask random questions, even if it seems that way - they're trying to get a candidate to reveal enough about their character, skills, temperament and awareness that they can determine whether they'd be a good hire for the team.
I enjoy the mental stimulus of being on either side of the desk for an interview: as an interviewer, the challenge of trying to get through the mask that people sometimes put up to find out where someone's real talents and weaknesses; as an interviewee, the process of finding out more about yourself and the areas where you personally need to develop. Either way, it's a process of continual learning.
One thing that surprises me is how many potential new hires fall into the same "traps". I don't try to catch people out or set trick questions, but I see people who don't do themselves justice in the way they present themselves. Here are a few ways I see people shooting themselves in the foot, based not on any individual candidate but a broad aggregation of the perhaps 15-20 interviews that I've conducted in the last year:
In general terms, it's in both the interviewer and the interviewee's interest to determine whether the person is a "good hire" or a "bad hire". No matter how much you want a job coming into an interview, pretending to be someone you're not (more technical than you really are, more interested in a certain type of work than you really are) to land a position doesn't lead to satisfaction in the long run, when you wind up getting bad performance reviews because your skills just don't mesh with the requirements of a role. On the other hand, if you can find a job that really matches your interests, skills and goals, you'll have great fun doing it and naturally excelling in it.
One of the great joys of my role at Microsoft is that I get to work with some really cool partners who are building next-generation applications on our platform. Right now there are perhaps eight companies that I'm working with intensively on launch showcase applications that are built using Windows Presentation Foundation. Having customers who get our bits early and start building on them long before we release is critical, naturally, because it means we get good feedback on whether we're building an attractive platform and where we have rough edges (bad) or hitherto underexploited sweet spots (good!). As Nick Kramer notes, bugs that are reported by you get greater weight since we know they're issues that are hit in the real world.
I'm therefore delighted to link to one of my showcase customers, iBloks, who as I write this are in the middle of demonstrating their product in public for the first time, as part of our mix06 conference. This small start-up has come out of nowhere with a fantastic mash-up application that takes full advantage of WPF. Their application allows you to create custom iBlok modules containing photos and videos and set to music that you can mix yourself. It's a great example of how WPF blends 2D and 3D graphics, animation and media together - they themselves claim that our technology has halved their time-to-market. Here's a screenshot to whet your appetite:
But a screenshot really doesn't do full justice - take a couple of minutes out and see a full demonstration of this product, shown by Julia Miller, their CEO.
The first release of iBloks will be available broadly this summer - in the meantime, check out their website where you can sign up to be notified when it's available.
Taking a momentary breather from the joys of Windows Presentation Foundation, I wanted to point to this excellent MSDN article on testing applications for compatibility with Windows Vista.
Some of you may remember that at the PDC in 2003 one of the first "Longhorn" demos we did was of a twenty-year old DOS application (Visicalc, if memory serves correctly), so it should be clear that maintaining compatibility is important to us. Nevertheless, the introduction of security features such as User Account Control, IE Protected Mode and User Interface Privilege Isolation are definitely the kind of things that can break unwary applications, let alone other obvious changes such as updated version numbers and the need to support 64-bit editions of Windows that are becoming increasingly prevalent. This white paper has a suggestion for a thirty minute compatibility check, as well as overviews of each of the major changes that could potentially break applications and links to further information. Well worth a quick read if you're in the business of shipping quality software.
By my reckoning, the most recent Feb 2006 CTP of WinFX represents the eleventh public release for Windows Presentation Foundation. (And I'm going to step out onto a limb and conjecture that we've probably got just three or four CTP-style releases to go before we release WinFX.) Most of these releases have of course come with a variety of associated paraphenalia, including SDKs, developer tool extensions and even dependent applications such as Microsoft Max or Expression Interactive Designer.
Moving from release to release is an inexact science. It doesn't take a mathematical genius to figure out that there are hundreds of combinations of different build histories on machines out there, and inevitably (since the setup process is also beta) there can be bits of cruft left over on machines after one element or another is installed. The comments on the entry I wrote to announce EID are a good reminder for us here that we've not cracked this yet. I can't offer a panacea, unfortunately - it's the price we all pay for being early adopters of a new system-level component that integrates tightly with the rest of the operating system - but I did want to offer some tips to try and mitigate the worst of the pain and help people get their machines clean. (Not that this will be of any comfort, but it's not any easier internally, where there are daily builds from multiple build labs to deal with!)
It's probably safest to uninstall all of the above just to be sure, making sure you leave the WinFX Runtime Components until last.
I've seen occasions before where one or two older files can get left over in these directories that can fool installers such as Expression Interactive Designer, or worse, can prevent newer versions from being installed. In particular, if you see files such as PresentationCore.dll, PresentationFramework.dll or WindowsBase.dll, that should act as a warning sign to you that you've got some left-over cruft. Make sure you don't just randomly delete the content of these directories unless you're sure that the uninstallers have done all they can do - you start to edge into completely unsupported territory at this point, since it's hard to troubleshoot a system in this state.
That's all the tips I can think of for now. I'll update this entry as appropriate over the next day or two with any corrections or additional suggestions. I'll sound like a faceless corporate automaton if I apologize for any inconvenience caused, but I do mean it! In an ideal world we'd do a better job in the installer of cleaning up old installs, but that would really detract from the purpose of CTP releases, which is to get regular updates out to the developer community without imposing a heavy burden on the developer team. I hope this post at least helps to explain the trade-off, even if it's still not all that pleasant for us in the trenches.
Digg links to this year's Vincent Flanders Awards for the worst-designed web pages, and there's no contest for my personal favorite - the Association of International Glaucoma Societies. It's hard to know where to start: the fact that the page takes nearly twenty seconds to load even with my 6MB broadband connection, the Pythonesque heads that pop up from above the menu bar, the spinning globe reminiscent of some Austin Powers evil mega-corporation, the animated Flash medical image that's over 4.5MB in size (might hit 50K at the outside as an animated GIF), and of course the operatic Glaucoma Hymn ("Glaucoma! Glaucoma!"). What's not to like? I'm almost ready to join the society right now just to save it from bankruptcy due to bandwidth charges when Digg and Slashdot have finished their maulings.
Still, they look like they have a good time at their meetings...
My only serious point in a vague attempt to make this posting somehow relevant to the general subject matter of this blog is that user experience matters. The introduction of WPF brings great power to allow you to build almost any kind of user interface, but with that power comes responsibility.
One of the greatest benefits of Windows in the early days was the harmonization it brought to different applications. I used to have all the WordStar command keystrokes memorized, but switching to another word processor or application meant starting from scratch. Every application had their own shortcuts and keys to bring up menus or command structures, and there was no consistency between them. The ability to take many of the basic memes in Word and apply them to Excel was a great step forward. Since WPF makes it easy to restyle and replace the visual template for any Windows control, the importance of good design and careful thought about usability applies even more than ever. There's plenty of scope for innovation, but great care needs to be taken to ensure that it doesn't come at the cost of ease of use or accessibility.
I'm sad to say that I expect to see some applications that go to far and become the "Glaucoma! Glaucoma!" of the Windows world - slow to load, hard to navigate, and full of unnecessary frippery that distracts from the purpose of the application itself. On the other hand, I look forward to seeing applications that apply these technologies wisely to allow far better navigation and visualization of data. I had the privilege to meet with Mary Czerwinski of the VIBE research team last week to see some of the amazing work they're doing in this area, and I'll share more about that in another post.