Here is an amazing and complete article written by a guy from Ubi Montpellier. he introduce the concept of rationalization in game design but also get throught a lot of key ideas usefull to improve the core experience. A must read !