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 managementHeroku pioneered the Platform-as-a-Service (PaaS) model, introducing concepts like git-based deployments and buildpacks that became industry standards., 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 fileThis development philosophy, popularized by Tom Preston-Werner at GitHub, forces developers to think about user experience before implementation, often resulting in cleaner, more intuitive APIs. 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 37signals37signals (now Basecamp) famously built their project management tool to solve their own internal collaboration problems, embodying the "scratch your own itch" philosophy of software development., 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.