The choice between using the functionality of the application's platform (Java EE or .NET), calling one of several available external libraries, or writing code on your own involves numerous factors. When you write your own code, you control its quality. If some alternatives come in the form of external libraries, start by looking at the licensing terms. Next, judge the usability of the library or the platform API and the library's compatibility with your system. Elements with diverse naming conventions are an open invitation for disorder and style abuses. Other compatibility areas you should investigate include error handling, memory management, multithreading, and build management. Finish your examination by looking into the library's dependencies, quality, and support.