Minimal interface: only what clients need. Stable: avoid adding/removing methods frequently. Clear: names and behavior are unambiguous.