The Server and Tools Business (STB) Group, of which Developer Division is a part, runs a program called Frontline that gives us product folks an opportunity to literally be on the front line of interaction between Microsoft and our customers. I spent the week in Customer Service and Support (CSS), shadowing the Visual C++ support engineers that deliver phone support to customers. The intent of the program is to give folks in other areas of the STB business a first hand view of customers, the issues they have with our products, and their experiences in resolving those issues.
I actually began my career in developer support, so I can't say I was hugely surprised by the issues today's Visual C++ developers are facing. It is, however, interesting to see how the state of the art of customer support has evolved in the 10 years since I worked the phones for Borland's developer tools. The Microsoft CSS staff has pretty sophisticated tools and systems at their disposal for call routing, case management, knowledge base searching, and the like. Also, the growing complexity of software has led to support engineers becoming more specialized in their scope. So, for example, if you call in with an issue trying to use a Win32 API function from VC++, the first line call router must determine if the issue is VC++ or the API because the tools and SDK teams are handled by different CSS teams. Of course, all of this modern developer support stuff tended to make me feel like a coder fossil...
[cut to scene of Steve on his front porch in a rocking chair]
"Why, sonny, back in my day when we picked up the phone we didn't know whether the caller was going to ask about C, C++, Pascal, assembler, DOS, Windows, DPMI, TSRs, or something else. And we didn't have this new fangled 'world wide web' to find answers, either! And nobody had ever heard of 'search engine technology.' We had books! And we had 'grep'! Oh, and while I'm at it, pointers consisted of segments and offsets, and they were annoying! And data structures bigger than 64k were annoying too! And when you wrote to a null pointer, by God, your interrupt vector table let you know about it! But we were thankful! And did I mention it was up hill both ways to and from work everyday!? You crazy kids, driving around in your flat memory models and your protected mode and your multiple threads! Bah!"
[back to reality now]
Anyhow, one of the things I really gained a new appreciation for is the insane levels of complexity some customer problems can have, given all of the possible moving parts involved. For example, one case we handled dealt with the 64-bit C++ compiler not liking some multibyte Katakana characters when used in comments on the Japanese version of Windows XP under the Shift-JIS codepage. "Um, okay," I'm thinking to myself, "how do you reproduce that one? First, learn Japanese..." Actually, I learned that CSS has some good international resources to leverage in situations like this, but it gives you an idea of the complexity.
In another case, a customer called trying to use some classes from the .NET Framework 2.0 from VC++. We had to explain that the product was still in beta and not yet officially supported by CSS, but we still tried to give him a few pointers and places he could go to get answers (like the newsgroups).
All in all, I'm happy with my experience this week, and I think only good things can come from STB product folk spending even a little bit of time on the front lines.