I am currently about to redesign a running, special purpose and German language social networking web application. The current version is so messed up that we decided to start from scratch. I don't want to run into all the problems again so I have been thinking and reading a lot about:
- Scalability
- Maintainability of the code
- Performance
I argued in a blogpost that for the architecture of our system I would use exactly the order of importance like posted above meaning:
scalability >> maintainability >> performance
Those results where kind of surprising to me since I always thought performance is key essential for creating scalable systems.
- What are your thoughts on the importance of these three factors?
- I also argued that for achieving them one needs to do careful planning and design beforehead. Do you have any other must have advices?
I believe it should be
Scalability / Performance
For me scalability is a special kind of performance problem. Performance also include response time. But I would rate scalability as more important as response time. Especially for a social network. But both are kind of close together in this compare.
In general performance problems are something you best deal with if they appear. If you try to optimize your code for a problem you did not encounter you most likely will just waste your time. What you could do, is to simulate user traffic on the page to force performance problems to appear.
Maintainability
Most important for me is maintainability because it is more expensive. There was a post on the stackoverflow blog about that but I can not find it right now. Performance problems can mostly be solved if you just buy better/more hardware and throw it at the problem. Hardware is relatively cheap and constantly dropping in price. Really expensive is coding time of programmers.