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)