What are the principles which I use when I'm developing something?
My personal approach for projects is usually reuse as much as possible, not inventing the wheel again, use existing and working solutions. Glue those together using Python. First making simple prototype, after everything seems to be working, adding key exception & error & retry (etc) handling. After that doing some basic optimizations if required. If optimizations are simple, like caching data, I'll do it anyway. But I don't do premature or complex optimization, if it's not required. You could say that I'm following KISS plan efficiently and quite well. Simplest, reliable, working solution. That's what we need. There's no point what so ever over engineering stuff. With this approach I usually get things done much faster than many guys who start building everything from scratch and make extensive documentation which isn't read ever by anyone. I'll usually document bare essentials, which describe how application is used. If more details are needed, it's better to read the source than have extensive (and often outdated) documentation.
End user stuff
If application is meant for normal end users, then user experience, easy installation, configuration and maintenance are first priorities. I especially emphasize clear user interface with enough information and intuitive design. My primary goal is that the users wouldn't need any documentation at all. When you run the application, it should be clear how it works and what it does.