Simplicity is a Feature

Cory Benfield @Lukasaoz https://speakerdeck.com/lukasa/simplicity-is-a-feature

The big take away:

Simplicity is about defaults

Build your software in library

Example: multipart http upload

3 levels

  • low level
  • features
  • simplicity

low level - eg httplib

  • don’t try to “help” - give user complete control
  • to the point of letting people do “invalid” stuff

feature level - eg urllib3

  • users no semantics of the problem, but don’t need to understand every detail
  • still have quite a bit of control
  • only support valid cases

simplicity level - eg requests

  • this should be the default if someone searches how to do something
  • does not have to support all valid use cases - 80% is fine, to keep it simple
  • lots of defaults, to make it easy for users
  • “do the right thing”
  • allow user to drop to level 2 - requests has an object giving access to urllib3
  • can do multipart file load in one logical line!

80%

  • understand the domain
  • see what most users are doing
  • solve the problems for most people
  • you can’t make everyone happy all of the time, but you can make some people ecstatic!

requests like libraries

  • flask is the requests of web serving