Sunday, April 01, 2018

Why Is Stanford Everyone's Dream School

https://www.youtube.com/watch?v=ajFq31OV9Bk

John Ouserhout : Creating Great Programmers with a Software Design Studio

What are the Secrets?

o A few (somewhat vague) overall concepts

- “Working" isn’t good enough: must minimize complexity

- Complexity comes from dependencies and obscurity

- Classes should be thick

- Generic is simpler than special-purpose

- Comments should describe things that are not obvious from the code

- Define errors out of existence

- The Martyr Principle

0 Only constructive in the context of code reviews
0 Course is more about red flags than recipes

He recommends the Parnas paper (CMU) on decomposition.
The point? Don't decompose the problem based on a flow-chart - you'll end up up with something that's not maintainable. Rather, start with a list of difficult design decisions which are likely to change. Then, design your modules to hide these decisions from each other.

No comments: