Stanford Computer Science Professor John Ousterhout presents his views on software design at Google. Lots of good nuggets in this including the idea of deep classes. As he notes in the talk some of his ideas go against the advice you get from folks like Martin Fowler and Sandi Metz, who might tell you to limit the number of lines of your classes and methods. My colleagues at NewHaven.io point out software is more art than science in its design, so both approaches can work. You just need the experience to know which one to use.