That’s my priority when I build stuff: Make it work. Make it pretty. Make it fast.
Work: it does what it’s supposed to do and adds value to the user.
Pretty: it’s easy to use and looks good.
Fast: there’s no performance bottlenecks and the software is scalable and easy to extend.
I’m a programmer but I also want my software to look good and be easy to use. The last thing I worry about these days is performance. Not because performance isn’t important but because it’s usually not a problem until you have enough users and you will never get enough users unless you focus first on the other two.
Ten years ago my list would probably have been: Make it work. Make it fast. Make it pretty. Or even with “fast” being number one.
Not that I’ve ever been a performance freak, tweaking stuff to win an extra millisecond, but there was a time when I was obsessed with doing the Perfect Extendible and Reusable Software Design. My education is software engineering (I have a masters degree) and when I was fresh out of school (which I was 10 years ago) I used to spend a lot of time drawing class diagrams and object interaction flows and lots of other paper stuff that didn’t take me anywhere closer to a working program. I even wrote huge requirement specifications.
Make it work. Make it pretty. Make it fast. That’s my list. What’s yours?