Allocation is measured in full-time engineers/employees (FTEs). FTE’s is a calculation of the ratio of time spent on a given piece of work in a day multiplied by the average daily salary for engineers at your company.
The calculation goes as following:
First, for any given day we find all actions a given user has. Actions include any commits or card activity that user has. Note: We skip weekends when considering a users FTE’s. This means that for any given week, a user can have a maximum of 5 FTE’s.
Then, we loop through the list of actions and run a calculation to find that actions FTE ratio.
current = timestamp in seconds of the current action
previous = timestamp in seconds of the previous action
first = timestamp in seconds of the first action that day
last = timestamp in seconds of the last action that day
time_spent = (previous - current) or seconds between the current action and the last action
total_time = (last - first) or total seconds worked that day
blended_rate = average yearly salary for an employee. Defaulted to 100k.
days_worked = average number of working days in a year. Defaulted to 260, but can be configured to account for things like average vacation days taken.
daily_salary = blended_rate / days_worked
FTE Ratio = (time_spent / total_time) * daily_salary
An Example:
User Tim spent 8 hours working on a Monday. In that time, he committed twice and moved 2 tickets across his Jira board. The table below describes what actions he made, and when they took place.
Action Type | Action Timestamp | Meta |
---|---|---|
card_action_a | 9:00 am | moved card_a from to do to in progress |
commit_a | 12:00 pm | made a commit against card_a |
card_action_b | 12:02 pm | moved card_b from to do to in progress |
card_action_c | 12:04 pm | moved card_a to QA |
commit_b | 5:00 pm | made a commit against card_b |
For the algorithm to calculate FTE would be as follows:
total_time = (5 pm - 9 am) = 28800 seconds
daily_salary = 100k / 260 = $384
commit_a:
time_spent = (12 pm - 9 am) = 10800 seconds
FTE Ratio = (10800 / 28800) * 384 = $144 spent on that commit
card_action_b:
time_spent = (12:02 pm - 12:00 pm) = 120 seconds
FTE Ratio = (120 / 28800) * 384 = $1.6 spent on that commit
card_action_c:
time_spent = (12:04 pm - 12:02) = 120 seconds
FTE Ratio = (120 / 28800) * 384 = $1.6 spent on that commit
commit_b:
time_spent = (5pm - 12:04 pm) = 17760 seconds
FTE Ratio = (17760 / 28800) * 384 = $236.8 spent on that commit
Rolled up by card:
card_a = ($144 + $1.6) = $145.6
card_b = ($236.8 + $1.6) = $238.4