Who does Microsoft talk to when they have questions?

In the comments to my “What’s coming up in C# beyond Whidbey”, RichB makes the following comment:

I sometimes wonder who Microsoft ask for these opinions. I suspect it’s internal Microsoft developers and Wintellect/DevelopMentor trainers.

With all due respect, these type of people are not your average C# programmer. In the 3.5 years I’ve been coding in C#, I’ve yet to work with anyone who wasn’t bothered about E&C.

This is an interesting topic, and Rich brings up another topic that I’ll touch on a bit later.

There are three sources that we use for this sort of information. The first is a small group of users that we meet with on a regular basis. This group is a rough cross-section of our target users, and there are no internal Microsoft developers on it. IIRC, we have one person who is a trainer.

The second source is by talking with customers through email, on newsgroups, at user groups, and at conferences.

A third source of data is the information that we get by watching C# users program in our usability lab. We can examine, for example, whether a specific C# user programs in a way that E&C would be beneficial.

The feedback we got around E&C has been fairly polarized. There is one group who feels the way Rich does, and really wants E&C. There is another group that actively doesn’t want E&C, as they feel that it encourages the wrong kind of programming. And then there’s a group in the middle who typically see the value of E&C but don’t think it’s critical.

Rich also brings up another interesting point. Given two features of equal utility, we will try to favor the one that can only be done by Microsoft, and not by a third party.

In the case of refactoring, however, there are two considerations:

  1. Because the C# IDE has very good information about your code, it can do a better job at refactoring, and provide features such as cross-project rename.

  2. Refactoring can provide a large increase in productivity. While it’s true that users can buy a third-party add-in, many customers have told us that they expect Microsoft to provide features such as refactoring, and not force them to buy a third-party tool

I hope that makes it a bit clearer. We are hoping to do some things to expand the group from which we gather such feedback.

Comments (24)

  1. I can vouch that I did a series of usability activities over the internet for a Whidbey feature with Placeware. My contact in Redmond would give me a task or two to complete in Whidbey, and would then take a screen recording as I did it. She took notes on all my thoughts on things as I moved through the activity, and I actually did see tangible results from all this.

  2. Panos Theofanopoulos says:

    > Given two features of equal utility

    You did not count how often you do need the Refactoring. IMHO i will rarely use it on a daily basis and perhaps sometimes weeks can pass without even touch it.

    OTOH E&C will be (if and when C# makes it available) used by my team on a daily basis solving many of bugs, or testing edge conditions.

    Add to this

    1)Refactoring makes life easier but you *can* refactor your code without it

    2)Many (if not all) refactoring actions require a full rebuild before they can be used, narrowing its RAD features

    3)Fails on complex projects, where none of the coders of an application have write access to all the source code

    makes me strongly disagree that Refactoring and E&C are "of equal utility" as you said

  3. koffer says:

    Yeah,to the last opinoin_ Refactoring

    I eagerly need Microsoft to integrate the AspNetMenu, DateTimePicker to the Asp.net .

    Cause when I need this two web controls,there is some strange question on these!

  4. RichB says:

    Panos Theofanopoulos wrote:

    >Fails on complex projects, where none of the

    >coders of an application have write access to

    >all the source code

    In a complex application with several developers it is easier to use a source control system which doesn’t lock all files whenever a developer is working on a file.

    Many source control systems support this way of working:

    Perforce (used by Microsoft, but called SourceDepot)



    SourceGear Vault

    and even Visual SourceSafe can do this.

    You tend to need a good Merge tool to support this type of development – I’ve found the Perforce merge tool lacking a little, SourceGear have historically never shipped a merge tool. SourceSafe’s merge isn’t bad actually, but the best is Araxis Merge.

  5. Panos Theofanopoulos says:

    RichB :

    I dont mean file locking, but commit rights. Some developers can only read some assemblies source code but not write. We use Subversion but i think every source control systems support this (i do know that CVS does)

    > You tend to need a good Merge tool

    I agree, that makes the total time of a medium multiproject change to take 8-9 mins instead 10 before refactoring. Total save time in a month (in my case) 10-20 mins. Not a big deal IYAM

    Bottom line is that MS did evaluate Refactoring vs E&C based on the feelings of some user group without actually consider the total save time of those features.

  6. There is a great lyric in a Jay-Z song titled "99 problems" that goes something like:

    If you don’t like my lyrics you can always hit fast forward.

    This is not the first time this notion has appeared in music, or in other arenas of the public consciousness, but it emphasizes the point I am trying to make regarding E&C in C#.

    Basically, put it in, and turn it off by default. As long as the feature doesn’t impact performance (it shouldn’t) or the stability of the system, then people shouldn’t complain. They can always opt to not use it. Since the CLR itself has to be modified to handle E&C, many debugger interfaces for many managed languages are going to benefit from this. You can always have the IDE not expose the feature by default (turn it off for C# developers and on for VB developers).

  7. Wade Beasley says:

    I guess instead of MS Employees polarizing on the E&C issue, maybe they should listen to what the customers (.Net Developers) want. If there is a need then this makes good sense from a marketing point of view. Just my thoughts.

  8. I’ll reiterate here somewhat based on what I posted on jaybaz’s blog…

    You can’t go under the assumption that E&C is used for code development by sloppy developers. I work as a contractor and a big part of 3 month gigs is "bug bashing." I can be a lengthy processes getting to a point in the application under the right circumstances to find a bug, and it would be very helpful to be able to make inline tweaks because some jerk forgot to test for a null value (or something like that) without having to stop, make the fix, rebuild, run, navigate all the way back to the point of previous failure and re-test.

    Sure, you can use E&C as a crutch, but the same argument can be made for refactoring. Any productivity tool is a good one. That’s just my $.02. Thanks for even listening to feedback on these blogs, I think that’s great!

  9. Michael says:

    I believe E&C to be more important than Refactoring: The debugger and its interfaces for E&C need to be supported (extended) by Microsoft. A plugin or third party AFAIK can’t extend the debugger/CLR to support E&C.

    Refactoring on the other hand can be performed by any plugin. The interfaces in VS.NET as well es the CodeDOM and assembly metadata provide all knowledge necessary.

    I think this is a decision, which is simply made wrong. May be the effort for Refactoring is less than for E&C so its implementation was commercially easier to do?

    The other part, which strongly makes me believe that refactoring is wrong as used is that refactoring should only be performed via a case tool as visio, rational xde or may be microsofts next gen tool. The reason for this being that the refactorings supported on current Whidbey builds are simple and not enough compared to other tools and their support.

    Just my €0.02 on the decision.

  10. B.Y. says:

    You geeks, spell things out ! At least once. I read the whole post and all the feedbacks and still don’t know what this "E&C" thing is.

    I thought about it and came up with "Edit and Continue", which seems to fit the context. And if I’m right, I could guess it only because I code in C++ and accidentally used that feature before. For someone who’s never used it, you’re creating a lot of confusion here.

  11. Douglas Husemann says:

    Only point I would like to make.

    VB.net team supported generics some forms of refactoring, Partial classes. and Edit and continue.

    nuff said.

  12. Panos Theofanopoulos says:


    Now that VS2005 has been delayed, VC# team has more than enough time to deliver E&C also 🙂

  13. Louis Parks says:

    "Refactoring can provide a large increase in productivity. While it’s true that users can buy a third-party add-in, many customers have told us that they expect Microsoft to provide features such as refactoring, and not force them to buy a third-party tool"

    No offense, but many customers have also said that they expect E&C to be built in. I’d guess it’d be harder for a third part to do E&C, so it seems to make more sense for Microsoft to do that and let third parties (since they already have) do refactoring for now. Alas, Microsoft disagreees.

  14. Jeff Key says:

    Wow, this is really surprising to me. In the 3 or so years that I’ve been doing .NET full time, the only people I’ve heard complain about not having E&C are VB guys, and this was really only after .NET first went gold.

    I’m not a language bigot and I don’t particularly buy the argument that E&C is used by sloppy programmers, but let me ask you folks this: If you have good unit tests, why do you need E&C? No offense, but I have a hard time buying the "it’s really deep in the app". If that’s the excuse, you need better unit tests. The age of the monolithic application is long gone; if you can’t unit test your application, don’t blame Microsoft.

    Given the choice between refactoring and E&C, I (and probably most people I know) would take refactoring in a heartbeat. It would make us more productive.

    E&C can cause more problems than it solves. You’re messing around in a stateful world, so the code you edit could very well not be operating in the context of the error you’re trying to fix. Consider the following class:

    class {

    int _someField = 0;

    double _someOtherField = 0;

    public void DoSomething() {


    if (_someField > 5)




    int result = YetAnotherMethod();




    result isn’t what you expect. So you go in the code, remove the call to SomeOtherMethod, or move it after the if statement, or whatever, then start execution back _at the beginning of the method_. Still the wrong answer. You then remove the call completely, run the _method_ from the start again and you get the correct result. Hooray! You continue on, assuming this bug is fixed.

    Oops! You didn’t know that YetAnotherMethod was altering the state of the object, which gave you the correct result on your third pass in the method because of this altered state. If you were to run the app from the beginning again, the method would fail because the nature of the state you created while "editing and continuing" could never be reproduced outside of that context!

    This is a very simple example. I’ve seen this happen back in the VB days. A lot.

    If you want to be more productive, make testable code, don’t count on voodoo magic to save your ass, because it won’t.

  15. Panos Theofanopoulos says:


    Since refactoring is so much powerfull, how long will take to "refactor" VB E&C to C# E&C ?

    One hour, two, one day or one week ?

    When/If will be delivered, you are free not to use it

    PS. The feature is called Edit & Continue and not FixSomeBug & Continue. You may not use it for debugging only

  16. Troy Taft says:

    Remember that refactoring is primarily of interest to those who do TDD (Test Driven Development) and test their software with automated tests (like with NUnit). Without a good set of tests already in place, refactoring is extremely difficult. It is probably more important to start testing first, and then after that is in place try refactoring. At that point, you will probably find that refactoring is more fun than Edit & Continue ever was. For more info see Kent Becks Extreme Programming Explained book. C# is an excellent tool in the hands of the extreme programmer. I’ve been refactoring with VB .net and C# for about two years now. It’s powerful.

  17. > If you have good unit tests,

    > why do you need E&C?

    There’s a reason companies hire contractors: they either don’t have enough perm people, budget reasons (capital vs O&M), or they don’t do things correctly themselves. I see a lot of the latter any any case and it results in huge bug hunts. In a perfect world, yes…there would be a great architecture up front and lots of unit testing being done before people check things into VSS. But that happens in the minority of cases – it’s not a perfect world. Iterative development doesn’t always turn out picture perfect like an MSDN sample. All I’m doing is giving my own customer feedback telling the C# team that edit-and-continue would be helpful and a nice productivity tool. Whatever comes of it – fine. Either way, I still love C#, plus I’m paid by the hour. 🙂