Job shops, in the most basic sense, sell three things:

  1. Expertise
  2. Capability
  3. Time

Skilled, experienced machinists on the shop floor operate machines of varying capabilities over a finite amount of time to produce goods. The common denominator? Time. The price of finished goods is largely based on how long it takes to make them, which is largely based on how much labor and machine time are involved.

Finished goods have the basic pricing structure of:

Materials + Direct Labor + Machine Time + Indirect Costs + Markup = Price

Capacity planning, in its most basic form, consists of forecasting hours of available machine time and billable labor. Having a good forecast of availability of each gives shops a flexible point of deviation - when things change, as they always do, production scheduling processes become more agile.

What not to do when capacity planning

Many businesses get basic capacity planning wrong. Common errors include:

  • Assuming all workers are always at 100% efficiency from the moment their shift starts to when they clock out.
  • Assuming equal capacity each month i.e., not accounting for the amount of workdays in each month, holidays, seasonal trends, etc.
  • Not accounting for absenteeism.
  • Not accounting for machine availability and maintenance.

What's much worse than the mistakes listed above? 👇

no_plan

6 steps for capacity planning with direct labor hours

1. Review direct labor staffing

Add up all of the direct labor that can "earn" hours on jobs across all departments and shifts for a normal work day. Direct labor can be considered the action of machining parts that will be sold.

The labor hours should not include indirect labor - overhead, material handling, maintenance, etc. 

Say I have 8 full-time and 2 part-time employees split between two shifts as shown in the table below. 

Alias # Title Hours % Direct % Indirect
Employee A 1 Floor supervisor 8.0 45% 55%
Employee B 2 Senior machinist 8.0 90% 10%
Employee C 3 Machinist 8.0 60% 40%
Employee D 4 Sales 6.0 0% 100%
Employee E 5 Admin 8.0 0% 100%
Employee F 6 Floor supervisor 8.0 60% 40%
Employee G 7 Senior machinist 8.0 100% 0%
Employee H 8 Machinist 8.0 100% 0%
Employee I 9 Sales 8.0 10% 90%
Employee J 10 Admin 4.0 0% 100%

Notice not all employees are at 100% direct labor. Perhaps Employee A, the floor supervisor on the AM shift, is responsible for managerial duties such as planning, quoting, raw material ordering, coordinating between subcontractors, etc. Employee B, a senior machinist, has some billable time taken up by training Employee C, a new hire, who is not yet fully productive. Employee D is responsible for marketing and sales.

What's important in this step is to account for all employees and labor, and then making a realistic adjustment for direct labor based on the individual's day-to-day responsibilities.

2. Determine earned hours

It's not as simple as "if someone has an 8-hour shift and they're supposed to be machining, that's 8 hours earned." 

Let's say each employee gets a 15-minute break every 4 hours. They also start each shift with a 15-minute meeting and end with 15 minutes of turnover and cleanup. There's an all-hands meeting every Monday that lasts 30 minutes. Taking all of that into account, hours earned are roughly 6.9 per worker per shift.

8 hours - (15 mins x 2) - (15 mins x 2) - (30 mins / 5 days) = 6 hours and 54 mins = 6.9 hours

6.9 hours / 8 hours = 0.8625 = 86%

We can add another column in our spreadsheet that adjusts for hours earned.

ALIAS HOURS % DIRECT % INDIRECT EARNED
Employee A 8.0 45% 55% 86%
Employee B 8.0 90% 10% 86%
Employee C 8.0 60% 40% 86%
Employee D 6.0 0% 100% 86%
Employee E 8.0 0% 100% 86%
Employee F 8.0 60% 40% 86%
Employee G 8.0 100% 0% 86%
Employee H 8.0 100% 0% 86%
Employee I 8.0 10% 90% 86%
Employee J 4.0 0% 100% 86%

3. Adjust for absenteeism

Include an overall rate for all forms of absenteeism: paid leave, FMLA, sick leave, unexcused absences, etc. For example, if my shop's average absenteeism rate is 5%, I will apply a 95% average availability across the board in my capacity planning, as showing in the righthand column below.

ALIAS HOURS % DIRECT % INDIRECT EARNED ABSENTEEISM
Employee A 8.0 45% 55% 86% 95%
Employee B 8.0 90% 10% 86% 95%
Employee C 8.0 60% 40% 86% 95%
Employee D 6.0 0% 100% 86% 95%
Employee E 8.0 0% 100% 86% 95%
Employee F 8.0 60% 40% 86% 95%
Employee G 8.0 100% 0% 86% 95%
Employee H 8.0 100% 0% 86% 95%
Employee I 8.0 10% 90% 86% 95%
Employee J 4.0 0% 100% 86% 95%

4. Adjust for efficiency

This adjustment is purely for planning purposes. Some businesses want to plan for 100% efficiency to see what the upper limits of capacity can be. Others prefer to make an adjustment to reflect unplanned events. We'll use an efficiency of 95% for our capacity planning.

ALIAS HOURS % DIRECT % INDIRECT EARNED ABSENTEEISM EFFICIENCY
Employee A 8.0 45% 55% 86% 95% 95%
Employee B 8.0 90% 10% 86% 95% 95%
Employee C 8.0 60% 40% 86% 95% 95%
Employee D 6.0 0% 100% 86% 95% 95%
Employee E 8.0 0% 100% 86% 95% 95%
Employee F 8.0 60% 40% 86% 95% 95%
Employee G 8.0 100% 0% 86% 95% 95%
Employee H 8.0 100% 0% 86% 95% 95%
Employee I 8.0 10% 90% 86% 95% 95%
Employee J 4.0 0% 100% 86% 95% 95%

5. Adjust for OEE

This one may be harder for some shops to stomach. Overall Equipment Effectiveness (OEE) of 100% means that only good parts are produced, at maximum speed, with no interruption. So quality, performance, and availability are all at 100%. If that's the case, your shop is a mythical unicorn and I congratulate you heartily.

Even the best shops don't have an OEE of 100%; data shows top shops are around 95-97%. Accurately accounting for resource availability just makes the planning process more accurate. I've added a 90% OEE adjustment to our capacity matrix, as shown in the righthand column below.

ALIAS HOURS % DIRECT % INDIRECT EARNED ABSENTEEISM EFFICIENCY OEE
Employee A 8.0 45% 55% 86% 95% 95% 90%
Employee B 8.0 90% 10% 86% 95% 95% 90%
Employee C 8.0 60% 40% 86% 95% 95% 90%
Employee D 6.0 0% 100% 86% 95% 95% 90%
Employee E 8.0 0% 100% 86% 95% 95% 90%
Employee F 8.0 60% 40% 86% 95% 95% 90%
Employee G 8.0 100% 0% 86% 95% 95% 90%
Employee H 8.0 100% 0% 86% 95% 95% 90%
Employee I 8.0 10% 90% 86% 95% 95% 90%
Employee J 4.0 0% 100% 86% 95% 95% 90%

Now I can calculate the adjusted capacity for a standard 24-hour period. For each individual employee:

Hours * Direct * Earned * Absenteeism * Efficiency * OEE = Adjusted Capacity

Then I simply add up the adjusted capacity for all employees to find the adjusted capacity for a standard 24-hour period. In our case, it's 26.0 hours.

ALIAS HOURS DIRECT INDIRECT EARNED ABSENTEEISM EFFICIENCY OEE ADJUSTED
Employee A 8.0 45% 55% 86% 95% 95% 90% 2.5
Employee B 8.0 90% 10% 86% 95% 95% 90% 5.0
Employee C 8.0 60% 40% 86% 95% 95% 90% 3.4
Employee D 6.0 0% 100% 86% 95% 95% 90% 0.0
Employee E 8.0 0% 100% 86% 95% 95% 90% 0.0
Employee F 8.0 60% 40% 86% 95% 95% 90% 3.4
Employee G 8.0 100% 0% 86% 95% 95% 90% 5.6
Employee H 8.0 100% 0% 86% 95% 95% 90% 5.6
Employee I 8.0 10% 90% 86% 95% 95% 90% 0.6
Employee J 4.0 0% 100% 86% 95% 95% 90% 0.0
24-HR TOTAL 74.0           24-HR TOTAL 26.0

Notice this is significantly different from just adding up the total hours every employee is at work per 24-hour period (74.0 hours). Using the higher number may set my shop up for failure. I take on more work than I can handle, something unplanned happens, and now all of a sudden I'm apologizing on the phone to all my customers because all their rush orders will be significantly delayed.

6. Adjust for work days

Now that we have an adjusted capacity for a standard workday, we can multiply this by the number of workdays in each month. This accounts for months of different lengths, holidays, etc. Below shows the monthly capacity in direct labor hours for a standard Monday-Friday work week, excluding Federal holidays, for the year 2022. My shop's monthly capacity in labor hours is displayed in the righthand column.

MONTH WORKDAY WEEKEND HOLIDAY CAPACITY
January 1-31 20 10 1              520
February 1-28 19 8 1              494
March 1-31 23 8 0              598
April 1-30 21 9 0              546
May 1-31 21 9 1              546
June 1-30 22 8 0              572
July 1-31 20 10 1              520
August 1-31 23 8 0              598
September 1-30 21 8 1              546
October 1-31 20 10 1              520
November 1-30 20 8 2              520
December 1-31 21 9 1              546
TOTALS 251 105 9           6,522

In closing

The example above is simplified for illustrative purposes. We recommend capacity planning by department, team, or cell, depending on the variability of operations in your shop.

Planning methods are rarely perfect, but they can give your business a point to deviate from. Calculating capacity by labor hours is a great way to understand what levers you can pull as things change, which they always do.

Submit a comment

You may also like

Minimizing Makespan, Explained Using Attack Helicopters
Minimizing Makespan, Explained Using Attack Helicopters
13 January, 2021

This is our first of many articles on production scheduling topics. Check out The Ondema Guide to Production Scheduling ...

Level Up Production Bottleneck Hunting With These Tips
Level Up Production Bottleneck Hunting With These Tips
21 January, 2021

This post, the second in our production scheduling series (the first being Minimizing Makespan, Explained Using Attack H...

Promise the Right Delivery Date and Improve Profitability
Promise the Right Delivery Date and Improve Profitability
2 August, 2021

You run one of the most complex production systems on the planet - a high-mix, low volume job shop that does custom fabr...