Part II: The solution explorer and windows forms


Thanks for all your comments. On the basis of those comments, we’ve decided not to
change the current behavior. There are two things I’d like to bring out.

First, thanks to Jacob for mentioning that you can set the default behavior. One of
the problems we have with VS is that there is lots of functionality that people don’t
know about. I’ve added this to my “Things that people don’t know about list”. So,
if you want to change the default, right click and choose “open with”. This works
for both Windows forms and ASP projects.

The second concerns options. There were several comments that say, “make it an option,
so people can choose”, and then Monte Hansen said, “I think there needs to be a gatekeeper
for project-level options and if it were me, this one wouldn’t make it”.

I agree with that sentiment. In some cases, you have to provide flexibility – for
example, if you had a feature that said “braces must go on the line after the if statement”,
you would make lots of people unhappy. That would be a Bad
Thing
.

But there are other cases where adding an option is is the simple way out – either
because a team can’t agree on what should or shouldn’t be there, or because the team
hasn’t worked hard enough on what the customer wants (these may really be the same
thing – not knowing your customers well enough). It’s easy to say “let’s make it an
option”, but in a product like Visual Studio, there are already too many opaque options.
There may be some interesting ways of fixing this – like making the options that pertain
to a window actually be accessible from that window – but in the category of options,
fewer is already better.

I was looking through the options in VS2003 for one where I could say, “Does anybody
ever set this option”. I had just read Mark’s comment:

One feature that disappeared between 2002 and 2003 that really drives me nuts,
was that when you changed between document tabs the project tree view would update
to select the current page you are viewing

and what do I find? Under “Projects and Solutions”, there’s an option named “Track
active item in solution explorer” that I think does what Mark wants. We didn’t take
the feature away, but we did do a good enough job of hiding it that it appeared that
it was missing. That’s a good indication of why “make it an option” can be a bad choice
– we put effort both into coding something, making it an option, and then testing
it, but we hide it so that our users get little benefit from it. Many times the effort
to do this just isn’t worth the return, as an unfound option is no different than
a feature that doesn’t exist.

We had a similar situation back when I was on the C++ compiler team. User asked
us for more information to help them find problems in their code, and there were a
number of situations that the compiler could identify. Unfortunately, in many cases,
the compiler would warn on perfectly reasonable code, and since many people compile
with “warn as error” on, we couldn’t make them level 2 warnings, as it would break
lots of existing code.

So we made them level 4 warnings, but the result was that since the default was level
2, almost nobody got any benefit out of the work that we did, so we stopped adding
new ones.

Thanks again for your comments

Comments (7)

  1. Kevin Dente says:

    Here here. Rampant optionitis is the path to the dark side. Quicker it is, more seductive.

    :)

  2. Mark says:

    Thanks for the help Eric. After working with 2002 for so long, I thought I knew pretty much all of the options, or at least how to configure it to suite my needs, I never saw the "Track active item…" option, though.

  3. Ian Griffiths says:

    I would urge you not to fall into the trap of thinking that just because lots of people don’t know that an option can be configured that *nobody* knows it can be configured.

    You say "an unfound option is no different than a feature that doesn’t exist", but the crucial thing is to realise that this is only true per-user. For users who have found the feature there’s a big difference!

    Some people like to invest a lot of time in learning what the tools they use do. Some don’t. I would hate for the feedback from the latter to penalise the former.

  4. Mark Levison says:

    Eric,
    Thanks for showing us the "Track Active Item" option. This has been driving us nuts since we started working with VS .Net 2002. Our dev team has a built a large framework to support the applications we are building. It has always driven me nuts to have the folders open, just because I checked one parameter in a file.

    Don’t avoid *useful* options, we’re software developers after all, we enjoy plowing through the options dialog.

    Cheers

  5. Eric says:

    Ian,

    I agree with you about options in general, but I think we’ve done a poor job in that area. A feature that only 0.5% of the users find does add some utility, but not as much as a feature that everybody could benefit from.

    Thanks for your comments.

  6. Dan Haligas says:

    Eric,

    A little off topic but collapse all would be nice on the solution explorer. It of course can be acheived via a macro today, but I would rather have it part of the solution explorer. We have 30+ projects in our solutions and the first thing we do is collapse them all.

    Also because of the 60k build issues, etc. in vs.net adding a copy to for the entire solution would be nice. We have acquired an add-in from PSS to do this, but again this should be part of the tool.

    I am sure I could think of more.

    Dan

  7. I second the vote for the ability to collapse the solution explorer tree. I work in the c++ IDE, and have over 100 projects in my solution.

    I know that there are macros that can accomplish this, but it would be nice if it was ‘built in’.