When I’m drawing a picture or just taking it with digital camera all I think is how good the picture will look like, how to compose it. If people I show it to will like it or not. When I design software it is a little bit different. It’s even more difficult when client needs something for his special purpose, customized etc. and also would like it to be flexible enough to resell it as a product.
When I take the approach of sticking to all the special needs that client has towards the product it could make it to complicated to customize for anyone else, even impossible to do so. If I take the road of making everything so flexible to accommodate everything client needs and also being ready to resell in a future, design could go crazy and I’m not event saying how long could development take (as I don’t know, but it would be much more then simple way).
So, compromise, meet somewhere in the middle. But how? Design flexible but don’t go crazy. Get ready for a lots of changes and client conversations. Communications is absolutely must have. Iterative development, testing and customer feedback. Don’t come up with 1000 pages design in front. Create some prototype and show it to the client.
If you are religious, pray, if you are not, learn how to be more patient. If this still doesn’t work for you and you end up being stressed like never before, make a career adjustment and switch to work in a library 🙂