October 10, 2019

A Philosophy of Software Design


John Ousterhout, Professor at Stanford


I already read this book two times and probably I will do many more, the idea of teaching design to people is very interesting. I like the idea that software development is in most aspects related to creative work like painting and music. Specially, the design phase is really difficult to master and probably to teach as well.


Working code is not enough


  1. You need to practice! A lot!

  2. Define semantics to eliminate exceptions. Minimize the number of places to handle exceptions

  3. Try to find big abstraction! Depth is more important than length

  4. Classes should be deep! Information hiding is good

  5. Error that people make the most: too many, too small, too shallow classes

  6. You should make the common case, really really easy

Tags: design software