I had to reinstall my home computer's 64-bit XP Pro because it had become essentially useless (seems to be doing much better now), and in the process I found out that recent installers for Windows Live Messenger don't install on 64-bit XP Pro. They just don't.
I know the dev lead on that team, so I gave him a piece of my mind on that.
Instead I'm using Windows Messenger from the XP SP2 install. I worked on that code, I was the lead developer for that release on that product. I made the painstaking modifications to Windows installation to get it working, ported the code my team had been working on for months and months, went through the assorted nightmare overhead of being a part of that mammoth release. We spend more time than I like to remember combing through every line of code by hand and with automated tools trying to make sure there was no security bugs. We changed and fixed a lot of code to make that happen, the devs working with me kicked butt and took names.
I logged in and things worked. Lots of features missing relative to Windows Live Messenger, but it is usable. The people I IMed with tonight don't know I was on a much older version, and didn't care. I watched the working set for it, and felt a lot of pride and how tiny it is an how few resources it takes away from the actual primary usage of the computer.
Then it reminded me of a pet peeve that I have about traditional desktop applications, and as I related this peeve to friends I realized I should write about it.
Why does any application on the planet ever take any time whatsoever to shut down? There is one good reason: the user has some data that needs to be protected. That's it, that's the only reason. You should make sure you save the data, let them know what's going on if it is going to take more than half a second, save their data, then get the fudge out.
If there's no data, just. shut. down.
I've worked with teams that demanded that we ask permission from servers that could be on the other side of the planet with heavy packet loss whether we were allowed to shut down. No, just get out.
I've worked with people who want to make sure that the process exits by having the program execution perfectly work its way until the end of the main function, and slide off the end in the glorious sunset of well designed code. No, just get out.
I've worked with people who want to do some amount of memory sanity checking even on the retail builds that are sent to customers, rather than just the debug internal builds. No, just get out.
Program startup should be instant (I'm talking to you, Adobe) and should be all about getting useful UI in front of the user as quickly as possible. Microsoft Office apps are awesome at this, so good you don't even notice it anymore. Launch any Office app next to an Adobe product. Hell, launch all of the Office apps next to Photoshop at the same time. Twice.
But that is relatively understandable (only relatively) next to taking any time whatsoever to shut down. The user wants you gone, do the minimum cleanup you can get away with and then call ExitProcess(). If you're doing any more, you're sacrificing the user experience for... what again?
No, just get out.
Comments