|
Wow! I was going to post that exact point. I agree completely. Anyone who doesn't understand that simply has not done much desk top development.
"In the final analysis, secularism is little more than another religion the first amendment should be protecting the American people against."
|
|
|
|
|
Well, as of the time of this posting, I'm the only vote for maintainability. I voted it because... no matter how well you think you konw your users... no matter how many features you put in there... your code WILL change. Period. Fact. And the original coders may or may not still be there to help out. So you have to be able to change it in a way that won't introduce a ton of bugs or totally break everything else.
Remember, even if you win the rat race, you're still a rat.
|
|
|
|
|
Is it possible to start an iterative development process by starting with Maintainability? The "ilities" (Maintability, Scalability, etc.) are considerations that should be addressed throughout the design and development process; with desktop applications though, do you not have to start with what the user sees, in order to get feedback on what the application should do?
What a piece of work is man, how noble in reason, how infinite in faculties, in form and moving how express and admirable . . . and yet to me, what is this quintessence of dust? -- Hamlet, Act II, Scene ii.
|
|
|
|
|
John Kuhn wrote:
with desktop applications though, do you not have to start with what the user sees, in order to get feedback on what the application should do?
No, that should be done before you start coding.
|
|
|
|
|
Perhaps you should design, code, design, code, ..., N, N + 1... times during your development process, going back to the user(s) at the start of each iteration to make sure you're on track and they're in agreement.
What a piece of work is man, how noble in reason, how infinite in faculties, in form and moving how express and admirable . . . and yet to me, what is this quintessence of dust? -- Hamlet, Act II, Scene ii.
|
|
|
|
|
Yes, I agree, and practice this.
Dave
|
|
|
|
|
John Kuhn wrote:
do you not have to start with what the user sees, in order to get feedback on what the application should do?
No, you need to be thinking of maintainability throughout the design. For instance, what if you design your UI first, get feedback, and realize you got it all wrong? If you took maintainability into account when designing, you'd probably have accounted for the fact that the UI might change, and it would be easier. If you wrote the UI first and just threw everything else in, then you might have to gut your whole app when the UI needs an overhaul. (I've been there. )
Remember, even if you win the rat race, you're still a rat.
|
|
|
|
|
Navin wrote:
For instance, what if you design your UI first, get feedback, and realize you got it all wrong?
It seems like that would only happen if you were working in isolation, and had never met with the user(s) in the first place. Certainly, in the design of a complex system, one would start with basic things, like identifying the business model, use cases, entities, items, things, scope, etc. However, after all of the abstractions have been captured an modeled, and the system's architecture is fairly firm, you have to show people something... and most people can't envision their future work flow by looking at UML diagrams, so you show them screen shots and sequences of events using "artifacts" that they can relate to. As I said earlier (or perhaps implied) maintainability is something we try to build in -- as a work habit as a coder -- and as an overall goal of system architecture.
Navin wrote:
If you wrote the UI first and just threw everything else in, then you might have to gut your whole app when the UI needs an overhaul.
That's definitely not what I was suggesting, but you are correct -- many of us have, in the course of our careers, designed, built and deployed small apps that were intended for a single purpose, that are easy to use, but even you, as the original author, have no idea why the @#$% you wrote it so poorly all those years ago.
What a piece of work is man, how noble in reason, how infinite in faculties, in form and moving how express and admirable . . . and yet to me, what is this quintessence of dust? -- Hamlet, Act II, Scene ii.
|
|
|
|
|
John Kuhn wrote:
It seems like that would only happen if you were working in isolation, and had never met with the user(s) in the first place.
You'd be surprised. Even major companies like Microsoft have to change their UIs from time to time (think VS 6.0 vs. VS.NET., or Windows 2000 vs. Windows XP) Beta testing, communicating with users and the like can give you a rough idea, but you never know for sure until your app is actually being used for its intended purpose.
Or, more commonly, you may have mistaken who your users really were going to be. Perhaps a completely different set of users started using your product and you didn't anticipate their particular needs.
Remember, even if you win the rat race, you're still a rat.
|
|
|
|
|
Navin wrote:
but you never know for sure until your app is actually being used for its intended purpose
If that were true, all software would fail immediately upon deployment; I suggest that everyone should adopt an iterative design & build process, so that users are involved throughout. No one should ever go from talking to users, to building, testing and coding, straight to release, without talking to them and showing them what you're doing and letting them use it a bit so that you get feedback on what's right and what's wrong. And while it's true that no product is ever perfect at the time it's deployed, users give you feedback on what they SEE in front of them, and what they are able to do with it. If you get such feedback, you can immediately incorporate it into a an application in which most other factors were considered during the system design and architecture.
Navin wrote:
Even major companies like Microsoft have to change their UIs from time to time
And they do this based on feedback about products that were put through extensive usability testing in the first place.
Navin wrote:
you may have mistaken who your users really were going to be. Perhaps a completely different set of users started using your product and you didn't anticipate their particular needs.
If that happens, which I suppose it does, then the mistake was not that someone didn't work with users, but that the market analysis was bad and the wrong target market was identified... or in a corporate setting, that someone worked with executives & managers instead of the actual end-users.
What a piece of work is man, how noble in reason, how infinite in faculties, in form and moving how express and admirable . . . and yet to me, what is this quintessence of dust? -- Hamlet, Act II, Scene ii.
|
|
|
|
|
John Kuhn wrote:
Is it possible to start an iterative development process by starting with Maintainability?
It is definately possible. My favourite way is by doing test-first (or test-driven) development. If you haven't tried it yet, my recommendation is that you do. If you have ever been involved in a project lasting for more that a year and have seen the problems that arise, you will soon be blessed.
|
|
|
|
|
Do you think that test-driven development alone can ensure maintainabilty? Isn't it possible to produce code that, while passing through unit tests, etc., is still not intrinsically maintainable? As I suggested elsewhere in this thread, maintainability is a design goal and a good coding practice, but it is not the principal aim of developing a particular system, is it?
What a piece of work is man, how noble in reason, how infinite in faculties, in form and moving how express and admirable . . . and yet to me, what is this quintessence of dust? -- Hamlet, Act II, Scene ii.
|
|
|
|
|
John Kuhn wrote:
Do you think that test-driven development alone can ensure maintainabilty?
If you are using TDD the way it is supposed to, then it is my beleif that you will automatically end up with code that is easy to maintain. If it's not, then you'll do some refactoring until it is. Your tests will tell you that all things are working fine dispite of the changes. Refactoring is a natural part of TDD and if you have complicated code then TDD says that you should (not may) make it simpler.
I'm not saying that other options are not important. If you want to sell your application it better be easy to use! But as mentioned by someone else in this forum, if you have code that is easy to maintain you can easily accomplish all other things on that list of options. But if it's not easy to maintain you'd better do all other things on the list correct from the beginning.
|
|
|
|
|
I suppose that we will have to agree to disagree; not that I think testing is irrelevant, or that maintainability is not incredibly important; on the contrary, they both play an important role in my daily work.
However, that you will "automatically end up with code that is easy to maintain" seems like a leap of faith. Maintainability exists at many levels throughout the project life-cycle, and has as much to do with code comments, coding style, and testing (the role of the individual coder and his or her work habits) as it does with a high-level perspective on systemic design issues and the interaction between components of a system (the role of an architect).
Overall, it is my true belief that the latter of these two, good system architecture or design, is the most important factor, since everything else follows from that.
(Please also note that my earlier line of making small assertions, followed by a series of queries was somewhat disingenuous; I was simply trying to provoke a discussion, in which I succeeded, since we are still talking about these issues nearly a week and a half later.)
What a piece of work is man, how noble in reason, how infinite in faculties, in form and moving how express and admirable . . . and yet to me, what is this quintessence of dust? -- Hamlet, Act II, Scene ii.
|
|
|
|
|
But by the time any serious maintenance needs to be done you'll long gone, so why bother with maintainability... thats some other poor suckers problem.
|
|
|
|
|
You must have been fired from every company I've ever worked for.
What a piece of work is man, how noble in reason, how infinite in faculties, in form and moving how express and admirable . . . and yet to me, what is this quintessence of dust? -- Hamlet, Act II, Scene ii.
|
|
|
|
|
Software Zen: delete this;
|
|
|
|
|
Although I think that ease-of-use should follow from good looking UI.
What a piece of work is man, how noble in reason, how infinite in faculties, in form and moving how express and admirable . . . and yet to me, what is this quintessence of dust? -- Hamlet, Act II, Scene ii.
|
|
|
|
|
How so? Good looking means "pretty", and it has nothing to do with usability.
|
|
|
|
|
It depends on your universe of discourse; in this case, we're talking about desktop applications. In this context, is it not true that when someone says "good-looking UI", they are usually referring to one that is clean, neat and well-designed? Is is not also true then, that those kinds of user interfaces are intrinsically easy to use?
What a piece of work is man, how noble in reason, how infinite in faculties, in form and moving how express and admirable . . . and yet to me, what is this quintessence of dust? -- Hamlet, Act II, Scene ii.
|
|
|
|
|
John Kuhn wrote:
In this context, is it not true that when someone says "good-looking UI", they are usually referring to one that is clean, neat and well-designed? Is is not also true then, that those kinds of user interfaces are intrinsically easy to use?
I'd agree with you there John. I yo-yo'd between easy-of-use and good-looking UI before choosing the latter; a good looking UI (by my standards) is an easy-to-use UI!
Cheers,
Paul
|
|
|
|
|
John Kuhn wrote:
Although I think that ease-of-use should follow from good looking UI.
Ummmm - not at all, no sirree, uh-uh, dead wrong, sorry, next contestant please.
It's true that butt-ugly UI's can't be easy to use, but fuufy "graphics uber alles" Uis can be harder to use than anything.
|
|
|
|
|
Perhaps a good-looking UI needs to be more narrowly defined. As you state, poor UI design can be difficult to use; but a good-looking UI is not necessarily an extremely graphical UI, either. There are, of course, many web sites that fall into this category: visually pleasing, but nearly impossible to decipher as a user interface. On that point, perhaps those should be counted as "Graphic Art" and not "User Interface" -- for is it not true that the words "Good Looking UI" imply that it is an interface designed for users? And, if so, wouldn't a "Good Looking UI" be intrinsically useful? Take for example the Windows Media Player. Is it not good looking? And does its simple, good-looking interface not benefit ease of use?
What a piece of work is man, how noble in reason, how infinite in faculties, in form and moving how express and admirable . . . and yet to me, what is this quintessence of dust? -- Hamlet, Act II, Scene ii.
|
|
|
|
|
John Kuhn wrote:
Take for example the Windows Media Player. Is it not good looking? And does its simple, good-looking interface not benefit ease of use?
Windows Media Player is an example of simple, good-looking interfaces falling short on ease of use. When I started with Windows Media Player, I tried to open a music file. There was no Open File, just an Open Location. I clicked that and got a dialog to open a web location with no browse button. I did finally got the music to play by opening windows explorer and double clicking on the file, but I was annoyed that I had to do it. To be easy to use, a program should provide the options that people are used to having and in the places that they are used to looking for them.
Nathan Holt
|
|
|
|
|
Are we both referring to Windows Media Player 9? Perhaps you should switch to compact mode.
Even in "full" mode, you have basic controls that you would have on a portable MP3 player or walkman, everything discloses its own function with tooltips, there's online help... Not that I think WMP is the best software ever for multimedia, but it covers the bases.
But then again, that's just my opinion, I could be wrong.
What a piece of work is man, how noble in reason, how infinite in faculties, in form and moving how express and admirable . . . and yet to me, what is this quintessence of dust? -- Hamlet, Act II, Scene ii.
|
|
|
|
|