# API Driven Development ## Introduction to API Driven Development - **Presenter**: Kenneth Reitz - **Overview**: The talk focuses on API-driven development, highlighting how it benefits developers and enhances productivity. - **Heroku Introduction**: Heroku is introduced as a web platform that abstracts server management, making application deployment easier. ## Open Source Contributions - **Request Library**: Kenneth discusses his contribution to the open-source community, specifically the "Requests" library in Python, which simplifies HTTP requests. - **HTTPBin**: He also developed HTTPBin, a web service for testing HTTP clients. ## Service-Oriented Architecture (SOA) - **Traditional Development Issues**: Kenneth explains common issues in traditional development where components are tightly coupled, making iterative changes difficult. - **SOA as a Solution**: He advocates for Service-Oriented Architecture (SOA) where different components or services are decoupled, making them easier to manage and scale. ## Building for Developers - **APIs as First-Class Citizens**: APIs should be designed with developers in mind, treating them as first-class citizens in the development process. - **Readme-Driven Development**: Kenneth recommends starting development by writing a README file that outlines how the API will be used, allowing developers to think from a user’s perspective. ## Pragmatic Development - **Problem-Driven Development**: The best way to solve problems is by experiencing them firsthand. Kenneth shares examples, such as GitHub and 37signals, where products were developed to solve the founders' own problems. - **Simplicity Over Functionality**: Kenneth emphasizes that a simple, easy-to-use API is more valuable than one packed with complex features. ## Closing Thoughts - **Simplicity in API Design**: Simplicity should be prioritized in API design, ensuring that it is accessible and usable for developers. ## Q&A Session - **Service-Oriented Architecture**: Kenneth discusses the challenges of transitioning a codebase to a service-oriented architecture and the importance of doing so early if scalability is a concern.