3 Principles of Great Software Program Layout