<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: dragonair</title>
    <description>The latest articles on DEV Community by dragonair (@dragonair).</description>
    <link>https://dev.to/dragonair</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4245309%2F8473bb5f-141a-418f-ab4b-494fa4df619c.png</url>
      <title>DEV Community: dragonair</title>
      <link>https://dev.to/dragonair</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dragonair"/>
    <language>en</language>
    <item>
      <title>SPC charts people actually keep using</title>
      <dc:creator>dragonair</dc:creator>
      <pubDate>Sun, 15 Nov 2026 03:36:05 +0000</pubDate>
      <link>https://dev.to/dragonair/spc-charts-people-actually-keep-using-1j4n</link>
      <guid>https://dev.to/dragonair/spc-charts-people-actually-keep-using-1j4n</guid>
      <description>&lt;p&gt;A quality manager once showed me two binders. One had 14 months of control charts, all beautifully complete. The other had charts that stopped after three weeks. Same process, same operators. The difference was that the first chart had &lt;strong&gt;limits computed from the right subgrouping&lt;/strong&gt;, so the chart only alarmed when something real happened. The second alarmed constantly for reasons nobody could act on, and the team quietly stopped plotting.&lt;/p&gt;

&lt;p&gt;That is the whole game: a chart that cries wolf gets abandoned, and an abandoned chart is worse than no chart because it manufactures the impression of control.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pick the chart by how the data arrives, not by preference
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Data&lt;/th&gt;
&lt;th&gt;Chart&lt;/th&gt;
&lt;th&gt;When&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;One measurement per period (batch, shift, destructive test)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;I-MR&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;You cannot form a subgroup&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Small subgroup, n = 2–9&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Xbar-R&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Most machining, filling, assembly cells&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Larger subgroup, n ≥ 10&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Xbar-S&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Where you can afford the data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Defectives (pass/fail per unit)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;p / np&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Inspect-and-sort processes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Defects per unit (count)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;u / c&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Rework counts, surface defects&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The mistake I see most: using an I-MR chart on data where five consecutive parts come from the same setup. Individual points then include both the common cause you want to detect and the natural within-setup variation, and the limits get wide enough to hide everything. Subgroup first, chart second.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rational subgrouping is the actual decision
&lt;/h2&gt;

&lt;p&gt;A subgroup must be &lt;strong&gt;homogeneous&lt;/strong&gt;: every unit in it produced under the same set of conditions (same operator, same shift, same lot of material). Variation &lt;em&gt;within&lt;/em&gt; the subgroup should be short-term common cause only. Variation &lt;em&gt;between&lt;/em&gt; subgroups is what the chart is designed to detect.&lt;/p&gt;

&lt;p&gt;Consequences people miss:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Subgrouping across a shift change makes every shift change look like a special cause.&lt;/li&gt;
&lt;li&gt;Subgrouping across two cavities mixes a tooling effect into the noise.&lt;/li&gt;
&lt;li&gt;Taking 5 parts from one tray documents the tray, not the process.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Limits need enough baseline
&lt;/h2&gt;

&lt;p&gt;Twenty-five subgroups, minimum, before you trust the limits. With fewer, and especially when the process was struggling, you have computed limits from variation that includes special causes — a process that then looks "in control" because the limits are inflated.&lt;/p&gt;

&lt;p&gt;And the corollary that causes fights: &lt;strong&gt;do not recalculate limits to make a signal disappear.&lt;/strong&gt; Recalculate when there is a &lt;em&gt;documented, permanent&lt;/em&gt; process change (new tool, new material lot policy, new machine). Otherwise you are redrawing the target around the arrow after it landed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Run rules: use few, use deliberately
&lt;/h2&gt;

&lt;p&gt;Nelson rules 1–4, or Western Electric 1–4, catch most real shifts. Running all eight rules on a small chart produces alarms at a rate that destroys trust. Pick the rules that correspond to the failures this process actually has, and write down which ones you enabled — an auditor will ask.&lt;/p&gt;

&lt;p&gt;A practical default set:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;One point beyond 3 sigma&lt;/li&gt;
&lt;li&gt;Nine points on one side of the centre line&lt;/li&gt;
&lt;li&gt;Six points steadily increasing or decreasing&lt;/li&gt;
&lt;li&gt;Two of three consecutive points beyond 2 sigma&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Everything else is a judgement call, and a chart full of judgement calls gets ignored.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reaction plan or it is decoration
&lt;/h2&gt;

&lt;p&gt;Every chart needs a written one-line answer to "what do we do when it alarms?" — who is called, what is checked first, what is quarantined. If the answer is "we look at it at the weekly meeting", the chart is documentation, not control.&lt;/p&gt;

&lt;p&gt;What made the binder chart work: an out-of-control signal had a named owner and a 30-minute response window. The chart was not more sophisticated. It was &lt;em&gt;actionable&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Practical setup checklist
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Chart type matches the data type and subgrouping&lt;/li&gt;
&lt;li&gt;[ ] 25+ baseline subgroups, all special causes resolved or documented&lt;/li&gt;
&lt;li&gt;[ ] Limits marked with the date computed and the baseline period&lt;/li&gt;
&lt;li&gt;[ ] A named owner and a reaction plan&lt;/li&gt;
&lt;li&gt;[ ] Rule set written on the chart&lt;/li&gt;
&lt;li&gt;[ ] Xbar charts paired with an R or S chart — never Xbar alone&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Trying it quickly
&lt;/h2&gt;

&lt;p&gt;If you want to check a chart's limits against your own numbers before rebuilding a spreadsheet, &lt;a href="https://www.6sq.com/etools/spc/" rel="noopener noreferrer"&gt;SPC control chart calculator&lt;/a&gt; takes the subgroup data and returns Xbar/R limits, Cp/Cpk, and the run-rule violations. Runs in the browser, nothing uploaded.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: I maintain 6SQ Tools, free browser calculators for SPC, MSA, DOE and reliability. The chart selection and run rules above follow the AIAG SPC manual and Nelson's original 1984 rule set.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>spc</category>
      <category>codequality</category>
      <category>statistics</category>
      <category>manufacturing</category>
    </item>
    <item>
      <title>Gage R&amp;R in five minutes without opening Excel</title>
      <dc:creator>dragonair</dc:creator>
      <pubDate>Sun, 15 Nov 2026 03:07:16 +0000</pubDate>
      <link>https://dev.to/dragonair/gage-rr-in-five-minutes-without-opening-excel-2a25</link>
      <guid>https://dev.to/dragonair/gage-rr-in-five-minutes-without-opening-excel-2a25</guid>
      <description>&lt;p&gt;Most Gage R&amp;amp;R arguments are not about the math. They are about the study design: parts that do not span the tolerance, operators who can see the previous reading, and a report where the %GRR number was computed against the &lt;em&gt;process&lt;/em&gt; variation while the drawing calls out a &lt;em&gt;tolerance&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Here is a routine that survives an audit.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Design first
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;10 parts&lt;/strong&gt;, chosen to span the specification — deliberately including good and bad ones. Ten parts from one hour of production span almost nothing, and a gauge always looks brilliant when the parts are identical.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;3 operators&lt;/strong&gt;, the ones who actually run the gauge on the floor.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;3 trials each, randomised.&lt;/strong&gt; Parts re-presented in a different order every round, identification hidden.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;10 × 3 × 3 = 90 readings.&lt;/strong&gt; Yes, it is tedious. A 5 × 2 × 2 study (20 readings) produces a confidence interval so wide it cannot distinguish a good gauge from a marginal one.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The design has to be blind: if the operator can see the value from the previous trial, you are measuring their memory, not the gauge.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Two numbers, one denominator
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;%GRR&lt;/code&gt; is a ratio, and the question is &lt;em&gt;what it is a ratio of&lt;/em&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;%EV  = 100 * (repeatability)      / denominator
%AV  = 100 * (reproducibility)    / denominator
%GRR = 100 * sqrt(EV^2 + AV^2)    / denominator
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The two acceptable denominators:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Denomintor&lt;/th&gt;
&lt;th&gt;Use when&lt;/th&gt;
&lt;th&gt;Typical threshold&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Tolerance&lt;/strong&gt; (USL − LSL)&lt;/td&gt;
&lt;td&gt;The part is judged against a spec limit&lt;/td&gt;
&lt;td&gt;under 10% good, 10–30% marginal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;6 × process sigma&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;You are studying the measurement system on its own&lt;/td&gt;
&lt;td&gt;same bands, different meaning&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Pick &lt;strong&gt;one&lt;/strong&gt; and state it in the report. A gauge that is 8% of tolerance but 28% of process variation is a real and common situation — and it is not a contradiction, it is two different questions. The gauge can be fine for sorting parts and useless for SPC, because SPC needs to see variation the gauge is currently hiding.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Number of distinct categories
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ndc = 1.41 * (part variation / GRR variation)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Under 5 means the gauge cannot resolve the process into enough levels to be useful for control charts, no matter what %GRR says. This is the number that catches "good %GRR, useless gauge" cases.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. The three mistakes that invalidate the study
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Parts do not span the process.&lt;/strong&gt; If part-to-part variation is tiny, GRR/part-variation explodes and %GRR looks terrible for a perfectly good gauge. Fix the part selection before you fix the gauge.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Operators are trained during the study.&lt;/strong&gt; A study run right after a refresher measures a trained state that will not exist next month. Run it cold.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reading order is not randomised.&lt;/strong&gt; Drift, warm-up, and fixture wear all masquerade as reproducibility.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. What to do with a marginal result (10–30%)
&lt;/h2&gt;

&lt;p&gt;Do not immediately buy a new gauge. In order:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Check the fixture and the clamping method — most repeatability problems are seating problems.&lt;/li&gt;
&lt;li&gt;Check whether the operators use the gauge the same way (same datum, same force, same number of readings averaged).&lt;/li&gt;
&lt;li&gt;Only then consider gauge capability itself.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A gauge that is 15% of tolerance with the fixture fixed is usually 22% with it broken.&lt;/p&gt;

&lt;h2&gt;
  
  
  Doing it without a spreadsheet
&lt;/h2&gt;

&lt;p&gt;I keep a browser calculator for exactly this loop — &lt;a href="https://www.6sq.com/etools/grr/" rel="noopener noreferrer"&gt;Gage R&amp;amp;R / MSA&lt;/a&gt; — paste the 90 readings, get %EV, %AV, %GRR, ndc, and the by-operator breakdown. No signup and the numbers never leave the tab, which matters when the readings are a customer's parts.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: I maintain 6SQ Tools, free browser-based quality calculators. The thresholds above follow the AIAG MSA reference manual (4th ed.); the routine is what I use before trusting any capability number downstream of the gauge.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>codequality</category>
      <category>statistics</category>
      <category>manufacturing</category>
      <category>measurement</category>
    </item>
    <item>
      <title>Your Cpk looks great and the process still fails</title>
      <dc:creator>dragonair</dc:creator>
      <pubDate>Sun, 15 Nov 2026 03:04:19 +0000</pubDate>
      <link>https://dev.to/dragonair/your-cpk-looks-great-and-the-process-still-fails-59ik</link>
      <guid>https://dev.to/dragonair/your-cpk-looks-great-and-the-process-still-fails-59ik</guid>
      <description>&lt;p&gt;A capability index is a ratio:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Cpk = min(USL - mean, mean - LSL) / (3 * sigma)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Everything in that formula is unambiguous except &lt;code&gt;sigma&lt;/code&gt;. Two different sigmas are in common use — the &lt;em&gt;within-subgroup&lt;/em&gt; (short-term) one and the &lt;em&gt;overall&lt;/em&gt; (long-term) one — and they can differ by 50% on the same data. Swapping them is the single most common reason a capability study reports a comfortable number for a process that is visibly struggling.&lt;/p&gt;

&lt;h2&gt;
  
  
  The two sigmas
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Within-subgroup sigma&lt;/strong&gt; is estimated from the spread &lt;em&gt;inside&lt;/em&gt; each rational subgroup:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sigma_within = Rbar / d2        (for subgroup size n, look d2 up in a table)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It deliberately ignores drift &lt;em&gt;between&lt;/em&gt; subgroups. It answers: &lt;em&gt;if the process stayed exactly where it is right now, how much would individual parts scatter?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Overall sigma&lt;/strong&gt; is just the sample standard deviation of every measurement pooled together, &lt;code&gt;s&lt;/code&gt;. It includes the drift between subgroups. It answers: &lt;em&gt;what did the process actually produce over this period?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The first number feeds &lt;strong&gt;Cp/Cpk&lt;/strong&gt; (and Cpk is sometimes called a "short-term" index). The second feeds &lt;strong&gt;Pp/Ppk&lt;/strong&gt; ("long-term" or "process performance"). ISO 22514 and AIAG's SPC manual both keep the distinction; a lot of homegrown spreadsheets do not.&lt;/p&gt;

&lt;h2&gt;
  
  
  A worked example
&lt;/h2&gt;

&lt;p&gt;25 subgroups of 5 parts, specification 90–110, observed mean 101:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;sigma within (Rbar/d2)&lt;/td&gt;
&lt;td&gt;1.2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;sigma overall (s)&lt;/td&gt;
&lt;td&gt;1.8&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Cpk = min(110-101, 101-90) / (3 * 1.2) = 9 / 3.6  = 2.50
Ppk = min(110-101, 101-90) / (3 * 1.8) = 9 / 5.4  = 1.67
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Same parts, same specification, two numbers that look like two different factories. The gap is the drift: the process mean wandered between subgroups, so the long-term spread is larger. Cpk 2.50 says "capable when centred and stable"; Ppk 1.67 says "but it is not staying centred and stable".&lt;/p&gt;

&lt;p&gt;Which number do you show a customer? Both — side by side. The gap itself is the diagnosis. If &lt;code&gt;Cpk &amp;gt;&amp;gt; Ppk&lt;/code&gt;, you have a stability problem, not a capability problem, and no amount of process tweaking will fix it until the drift is found.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three checks before you quote either number
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Is the process in control?&lt;/strong&gt; Capability indices assume a stable process. Run the control chart first. A Cpk computed on an out-of-control process is describing an average of several different processes, which is not a thing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Is it roughly normal?&lt;/strong&gt; Cpk is a ratio of distances measured in standard deviations, so it inherits the assumption behind that denominator. For clearly non-normal data (cycle times, flatness, anything one-sided and bounded at zero) either transform the data or use a percentile-based capability measure such as &lt;code&gt;Ppk&lt;/code&gt; on Box-Cox transformed values — or report the fraction out of spec directly and skip the index.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. How many parts?&lt;/strong&gt; A confidence interval on Cpk with 20 measurements is enormous — roughly ±0.4 at Cpk ≈ 1.3. If the decision is "ship or not", the interval matters more than the point estimate. AIAG suggests at least 25 subgroups of 4–5 for a study you can defend in an audit.&lt;/p&gt;

&lt;h2&gt;
  
  
  The trap in the spreadsheet
&lt;/h2&gt;

&lt;p&gt;Most capability templates compute &lt;code&gt;s&lt;/code&gt; from the whole column and call it Cpk. That produces a &lt;em&gt;Ppk&lt;/em&gt; with a Cpk label — which is why so many supplier reports claim 1.67 while the receiving inspection finds defects. If your template has a single &lt;code&gt;STDEV()&lt;/code&gt; over all the data, it is not computing Cpk.&lt;/p&gt;

&lt;p&gt;Check the row count, then check which sigma the formula actually uses. You can reproduce both numbers in a browser here if you want to compare against your own template — &lt;a href="https://www.6sq.com/etools/cpk/" rel="noopener noreferrer"&gt;Cp/Cpk process capability calculator&lt;/a&gt;, no signup, and the data stays in the browser tab.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: I maintain 6SQ Tools, a set of free browser-based quality/statistics calculators. The statistics above follow AIAG SPC and ISO 22514 conventions; the tool is what makes the two-sigma comparison a 30-second check instead of a spreadsheet archaeology project.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>statistics</category>
      <category>codequality</category>
      <category>manufacturing</category>
      <category>data</category>
    </item>
  </channel>
</rss>
