Program Interfaces, Patterns and Anti-patterns

Next running

30 Jul - 6 Sep
5:00pm-6:30pm Tue/Fri


San Francisco



Apply for this course

One of the most important roles of senior engineers and architects is to define the boundaries between programs. This must be done thoughtfully, with a firm understanding of what is being abstracted, and foresight of evolving needs.

Unfortunately, these skills are typically learnt the hard way. This course is our attempt to rectify that, providing a tour of program interfaces, patterns and anti-patterns through the lens of a system that participants build themselves in and between classes.

We cover many specific API designs in detail, but the ultimate objective is broader: participants should leave with greater confidence that their own API designs will stand the test of time.


  1. Command Line Interfaces
  2. GraphQL Implementation
  3. Data Modeling
  4. Data Model Implementation
  5. CLI Implementation
  6. Library/Module Design
  7. Network Endpoint Design
  8. Module Implementation and Packaging
  9. Network Endpoint Implementation
  10. Data Formats and Serialization
  11. Supporting Binary Protocols
  12. Graph Query Endpoints

Projects and exercises

To make the ideas covered in this course more concrete, participants will build out a system for hosting code snippets, along the lines of Each class will involve discussion of principles interleaved with application of those principles to the system implementation. The project may be completed individually or in small groups, and any mainstream language can be used for all but one class (which requires JavaScript).

Assumed knowledge

This course assumes 1-2 years of work experience as a software engineer with some exposure to a mix of program interfaces.

Available sessions

30 Jul - 6 Sep
5:00pm-6:30pm Tue/Fri
San Francisco

This course will next be taught by

Oz Nova

Oz is the lead instructor at Bradfield, and most frequently teaches Algorithms and Data Structures, Computer Architecture, Databases, Operating Systems and Distributed Systems. Prior to co-founding Bradfield, he worked for a decade as a software engineer and engineering manager, including as CTO and Co-founder of Topguest (acquired by Switchfly) and