Starting with the datum reference frame and working outward is how I do it now
Most people learn GD&T by memorizing symbols. It doesn't work that way in practice. You read a drawing backwards from assembly, not forwards from feature. I picked up the ASME Y14.5 standard twenty years ago and still get tripped up by material condition modifiers on complex datums. The standard is dense and deliberately vague in places. That's by design, not accident. It forces you to think about what the drawing is actually saying instead of copy-pasting callouts from a previous project. Here's the thing nobody tells beginners: GD&T isn't a language for designers. It's a language for inspectors and machinists. If your drawing can't be measured by someone holding a CMM probe or a surface plate with a dial indicator, you've written a poem, not a specification.
The core concept is simpler than the textbooks make it seem. You define how a part sits on a gauge, then you control the features relative to that position. Datums are theoretical exact planes and axes. They don't exist in the physical world. The part contacts actual surfaces that approximate them. Your job is to make sure the approximation is good enough that the part functions in its assembly. For position tolerances, the modifier M (maximum material condition) gives you bonus tolerance as the actual size departs from MMC. This is the single most useful tool in the standard. A shaft called out at Ø50 M means the position tolerance applies when the shaft is exactly 50. If it's manufactured at 49.8, you get an additional 0.2 of diameter in position tolerance. That bonus tolerance is free manufacturing margin that usually pays for itself immediately. The flatness callout caught me once on a hydraulic manifold block. I specified 0.02mm flatness on a 300mm face with no datum reference. The inspection department flagged it as unmeasurable without a primary datum plane. I'd assumed the surface plate would serve as the implicit reference, but GD&T doesn't work on assumptions. I went back and added a F (free state) modifier notation and clarified that the measurement reference was the mating surface plane. That single clarification saved three days of argument with the QA team and one rejected shipment.
Profile of a surface is where most people burn through their tolerance budget. It controls form, orientation, and location all at once. When you apply a profile tolerance with no datums, you're essentially calling out form only within a thick envelope. That's often not what you want. I've seen profiles applied to cylindrical features where the designer meant true position with a cylindrical tolerance zone. The profile callout was technically correct but practically useless because it allowed the feature to float anywhere within a much larger zone than intended. Here's a counter-intuitive point about datum simulation: the three-point contact rule for a primary plane is theoretical. A real surface plate has finite flatness. When I'm setting up a part for inspection, I always check whether the actual datum features are large enough relative to the tolerance being controlled. A small circular datum feature with a tight position tolerance will naturally wobble in the inspector's fixture regardless of how perfect the part is. The fix is usually a larger datum feature or a tighter datum feature tolerance, not a looser position callout. Threaded holes deserve special attention. The effective groove diameter of a thread is not the same as the basic diameter. When you call out position on a threaded hole, the tolerance zone needs to account for the thread engagement. A 6H tap drill doesn't produce a hole at basic diameter. The position tolerance should reference the major diameter or the pitch diameter depending on function. I specify position on the minor diameter for shear-critical applications and on the pitch diameter for bolt clearance. Getting this wrong means either stripped threads or assembly interference, and neither shows up until final test.
Get the Full Details

GD&T breaks down when you apply it to cast or forged parts with irregular surfaces where datum establishment is ambiguous. The standard assumes relatively stable, machined features for datums. For cast housings, I fall back to pattern tolerances and functional gauge testing rather than trying to force a full geometric tolerance stack. There's no shame in this. GD&T was developed for precision machined components, not rough castings. Using it where it doesn't fit just creates a false sense of control. The bonus tolerance calculation under RFS (regardless of feature size) is straightforward but rarely used correctly. Most people default to M on every position callout without thinking about whether bonus tolerance is actually needed. If your assembly has fixed-position fasteners with zero clearance, M gives you nothing because the feature size can't depart from MMC. In those cases, RFS is the only correct choice and applying M creates a false sense of flexibility that disappears at assembly time. For concentricity versus runout, I use total runout almost exclusively. Concentricity requires point-by-point measurement at the CMM and the results are heavily dependent on how the part is mounted. Runout is measured with the part rotating in its own datum setup, which is closer to how it actually operates in service. The only time I specify concentricity is when two cylindrical features must share a common axis independent of their orientation, like bearing seat diameters on a common shaft.
A practical workflow that works: start by identifying the assembly interface features. These become your datums. Work inward to locate the features that depend on those interfaces. Control orientation before location where possible because orientation tolerances are cheaper to hold and easier to inspect. Save profile tolerances for complex contours where individual dimension calls would create an impossible measurement chain. And always verify that every tolerance on the drawing has a corresponding measurement method that doesn't require guesswork. The biggest waste of tolerance budget I see is stacking orientation and location controls on the same feature. A perpendicularity callout to a datum and a position callout to the same datum are redundant. Keep the position tolerance and remove the perpendicularity, or use a composite position tolerance that controls both the overall location and the feature-to-feature relationship in separate tiers. Composite tolerances are underused and they solve this exact problem cleanly. Download the ASME Y14.5-2018 standard from the ASME website if you need the complete reference. The free samples online cover the basics but the full document is worth the purchase price if you're doing this regularly. The ISO GPS standards are the international equivalent and are more modular but less widely adopted in North American manufacturing.