We may happen to implement things in the wrong way and see an expected output, which may break or degrade the performance of the application later. I planned to blog the best practices i come across everyday and from resources i follow. Also i'll be more than happy if you can contribute to this project or correct me through comments: 1. Do not prefix managed bean EL expression every-time with a specific scope: Sometimes it's good to not specify scope when referencing managed beans in expression language. Never prefix for default servlet scope (requestScope, sessionScope and applicationScope). By prefixing the scope you bypass the JavaServer Faces managed bean facility(handles creation and initializing of managed beans). When scope is prefixed it will only look for in-memory objects and does not instantiate managed beans possibly throwing an NPE. ADF specific scopes (backingBeanScope, viewScope and pageFlowScope) should've a prefix. These scopes are handled by the ADF c...