views:

49

answers:

4

Is it performance, scalabilty, maintainability, usability or what ? What is it that you always strive to achieve while creating a good software or application and why ?

I always prefer maintainability above anything. It's ok if its not otimized or has great user interface - it has to be maintainable. I'm sure each one of us would have something very important to say here. Whole idea is to gather as many as perspectives for improvement in software development.

+4  A: 

There's a false premise here: that you want to optimize only one single aspect.

You need to strike a balance, even if that means none of the aspects is perfectly optimised.

For example, your suggestion of striving for maintainability is futile if the usability suffers so much that no-one wants to use your product.

(It could even be interpreted as a little bit selfish, putting your priorities for an easier life over those of the customer.)

Similarly, when I see people striving to get the fastest possible performance out of a component, when there is little customer-need for that... frustrating when they are impacting maintainability, or missing the opportunity to improve security.

Oddthinking
+1 for the selfish part – that was my immediate thought as well, when I read that they want to have maintainable code for themselves but for the users (who usually outnumber developers) just a crappy UI. Might be nice for in-house libraries; definitely wrong if you want to sell stuff :-)
Joey
+1  A: 

It has to do what the customer wants it to do

It doesn't matter how fast, how efficient, how maintainable or how testable a piece of software is if it doesn't do what the customer wants then it's no use to them

David Sykes
A: 

A good usability for the end user and some elegance in the code for the fellow developers that might have to work on the same project.

marcgg
A: 

Readability.

If code is readable it's easier to understand! Things like performance optimizations can come later if required after profiling your code.

I think all the other 'goals' you mention can be built on providing you have a readable -and therefore understandable - codebase

Ben Cawley

related questions