When I wrote my Underwater Nav course it was in response to ALL of the agency ones that I could find and frankly, for newer divers, they are all crap if taught as written. The sad thing is that there are many instructors who don't take the initiative to learn to navigate properly themselves.
I took a PADI UW Nav class taught by the book and I struggled. Then I found a mentor who took me on a 1 hour dive covering a lake where we used to do checkouts. I just followed along and watched what he did. Or tried to. He did many things that I never saw. But I knew we made 7 course changes, some swims were more than 10 minutes in midwater without seeing the bottom. Never once surfaced to check if were were on course. Vis was 10-30 feet depending on where we were in the lake. We came back to within 5 feet of where we started.
Then he explained this wizardry. How he had developed his nav skills.
Initially, all of these were done as a buddy team with a buddy who was just as committed to developing the skill. Change off tasks so each can do any of them. Watching depth, time, air. Noting features. Using the compass.
Before any of these, your buoyancy and trim need to be good. You need to be able to hold depth in the water column.
1. Start with small segments and nail those. 4 fin kicks, 8 fin kicks, 1 minute, 2 minutes, etc. Reciprocals, triangles, squares, etc.
2. Make precise turns! Not looping lazy ones. - this requires excellent buoyancy and trim. Yo-yoing or getting vertical throws your turns off.
3. Prepare for the turn as you approach it. Change the bezel before you reach the turn point.
4. Note the point you make the turn.
5. Observe a point or landmark, if possible, and note it mentally, in wetnotes, or on a slate.
6. When you note a turn point or landmark, turn around and look at it from the direction you'll be returning from! It may look very different from the back or side.
7. Make maps as often as possible. They don't need to be works of art but you should be able to look at them and know exactly what they convey.
8. Learn to make use of a line and reel. You can use these in low vis or to verify and hold a heading.
9. Learn to measure and judge currents by swimming the legs of a square and noting the effect of current on them. This is not rocket science but it takes some patience and observation skill development.
10. Practice, practice, practice,
I wrote my basic Nav course to include all of these. It had 6 dives, and we often did them in shallow water, 30 ft or less. Students would end up with 8+ hours of bottom time because NDLs and air allowed it.
Every skill was based on acting as a team, sharing the task load, and switching off skills so that each got to practice.
Communication was stressed over and over as well as excellent buddy skills.
I had students come back after the class and say that they had others ask them if they were DMs or instructors because of their navigation skills. All I did was give them a foundation, and they ran with it. They had fun while working on it and discovering new things in the same places because they were now looking, seeing, and registering new items.
Few people will be able to swim a 100 ft, let alone yard reciprocal without some serious deviation the first time they try. They need to learn how their kicks and body position affect this. Or judge on the surface how the wind will have an effect.
In setting up a course on a "featureless" lake or quarry bottom, I used 3ft/meter long lengths of PVC pipe shoved into the bottom with a piece of reflective tape around the top. Easy to set up and carry, can tie off a line to, and won't float away.
I used cave-diving cookies and arrows for directions and to mark paths.
None of this will make someone a good navigator overnight. But enough practice starting like this and they can become the wizard.