Link gates with close control and quick decisions. Keep the ball within playing distance, lift the head to pick the next gate, and change direction sharply between them.
Scatter several gates (pairs of cones about a metre apart) around a 20x20 yard grid. The player dribbles through as many gates as possible in a set time, not repeating the same gate twice in a row. Keep the ball close, head up to choose the next gate, and change direction sharply. Count the gates and beat the score.
This is an exercise for the eyes rather than the feet, and treating it as close-control work misses what it uniquely does. In a fixed weave the route is known, so a player can stare at the ball the whole way and still complete it perfectly. With gates scattered around an area, the next target has to be chosen while the ball is still moving, which forces the head up by necessity rather than by instruction.
That matters because head-up dribbling cannot really be coached by asking for it. Telling a young player to look up while he is concentrating on his feet produces a glance and then immediate reversion. Designing an exercise where he cannot succeed without looking produces the habit itself.
The decision should be genuine, so gates need to be numerous enough that there is a real choice and spread widely enough that the wrong one costs distance. Four gates in a tight square gives a player a route he memorises in thirty seconds.
Sharp changes of direction between gates are what keep the control demand high. Drifting in a lazy curve from one to the next means the touches stay comfortable, and the exercise becomes a jog with a ball. Insisting on a definite cut at each gate keeps both halves of the drill honest.
A progression worth using once the pattern is easy: call the gate colour or number as the player approaches, so the target changes mid-run. That removes any possibility of planning ahead and makes the scanning continuous rather than periodic.
Save it to your private drills, then change the animation, adjust positions, swap equipment, or drop it into a session block. Or start from a blank pitch and build your own.