This is the most important of all points.
Don't set goals for your students.
Ask students what they want to do, and help them achieve that goal.
If they don't know what to do, give suggestions of interesting things they could do.
Once they have a goal, just help them learn everything that is needed to achieve that goal
If they don't have a goal, any attempt to learn is a total and complete waste of time.
This is because the universe of potentially useful things that can be learnt is infinite, and no human can ever learn everything.
The only solution, is to try and learn only what seems necessary to reach your goal, and just try to reach your goal instead.
This approach is called backward design.
Also, setting overly ambitious goals, is a good idea: the side effects of ambitious goals are often the most valuable thing achieved.