What are the best practices for developing an EA?

 
While developing more and more EAs, I'm starting to realize that I don't have a solid foundation for building them, so I want to learn and ask about the best practices.