Today I want to talk about the difference between going to the bathroom and causing armageddon.

Take this Visual Studio build menu. I use it all the time. It has some pretty options:
- Build Solution: build any updated code in this solution
- Rebuild Solution: completely clean all my built code and rebuild my solution
- Clean Solution: completely clean all my built code
Replace Solution with [subproject name] and you get the rest of the options. An important thing to note here, too is that none of these options come with confirmations — I click, and it happens.
This menu is a horrible, horrible thing because it places two options which vary greatly in their impact right next to each other: “build” and “rebuild/clean”. I use “build” all the time — I update some code, and I need to build the project so I can test. It’s nice and helpful that it comes with a keyboard shortcut. No real difficulty here. Well, what if I’m only working in a subproject and don’t need to go through the full build script? Well, there’s no keyboard shortcut for that (I might be able to define one, and I haven’t looked, but the principle is still the same), so I need to click the menu option. That’s no biggie. Wait. I misclicked on “rebuild”. Oh, I’m still good, it’s only going to rebuild my project. Phew. Wait. What are you doing? Why are you cleaning everything? What the hell is going on? CTRL-BREAK! CTRL-BREAK!
See, the glory of this menu is the other option: the “Project Only ->” submenu. If I click “rebuild” or “clean” on the sideproject that’s displayed, Visual Studio goesand will rebuild/clean not only the project itself, but all of its dependencies. If you have a lot of shared code (like the solution I’m working on does), it all gets blown away and rebuilt. If I want to rebuild only the project I’m in, I have to use the “Project Only” menu. This misclick can cost me anywhere from one to three hours of my day (depending on how long it takes to build everything from the ground up, or how quickly I can mash CTRL-BREAK).
In a fit of rage after doing this again about 20 minutes ago, I likened this menu to putting a “launch nuclear weapons” button right next to the “flush the toilet” button. I flush the toilet all the time. I’d imagine other people who use the same restroom as I enjoy the fact that I don’t leave the toilet unflushed. I don’t, however, want to cause global thermonuclear war. And even if I accidentally pressed the button, I’d expect to be asked again, just to make sure I really wanted to end the human race.
Anybody have anything to keep me busy for another two hours?

One Comment
MonoDevelop uses F8 for build everything and F7 for build current project. And it runs on you-know-what. ;)
Wait, F7 is close to F8 too. :-o
Post a Comment