Reuse of code libraries or frameworks through Application Programming Interfaces (APIs) has become central to software development. Software developers favour reuse over re-invention since reuse increases productivity and the quality of the resulting software. Making use of APIs, however, present several challenges to both novice and expert software developers. In this two-phase project, I began with a user study to identify and understand the challenges developers encounter when learning how to use APIs. In the second phase, I propose new ideas, techniques, and tools to assist software developers make use of APIs.