8.3.0.10
Lecture 14: Kent Dybvig on Software Design
- Create a straightforward design 
- Choose appropriate data structures 
- Write clear, concise, well-polished code 
- Religiously maintain abstraction barriers 
- Learn to love rewriting and discarding code - Rebuild the foundation when necessary 
- Generate code when possible 
- Use DSLs when appropriate 
- Test thoroughly 
- Benchmark 
- Document (functionality and design)