Integrate all the source of code on frequent basis to avoid later conflicts of code. It helps to have a clean builds. This can achieved through tool like, capable SCM tool like Git, Automated compilations and build tools like, Maven, Gradle, Chef, Jenkins. Automated testing tools & technologies like, JUnit for Java code, Jasmine for Javascript/UI code OR any other form of automated testing e.g. using selenium. One of the CI policies, that can achieve better results, is to never leave a build in broken state.