Designing interaction is like designing a river.
Most importantly, the river should be well constructed—allowing water to flow freely down its path.
It should also be well landscaped. Its banks should be lined with beautiful trees, its stones should be clean and interesting, and its water should be pure.
Some rivers should be swift and unremarkable. Others should flow more slowly, allowing users to appreciate the beautiful scenery.
Not every user will have a well-constructed raft, so any rapids must be forgiving.
Additionally, it is important how users arrive at the river, and where they go when they leave.