A core part of minware’s Development Work Intelligence Platform is our patent-pending time model, which uses a combination of ticket and code activity to determine how people spend their time at hour-level accuracy without manual time logging.
With this time model, we offer two ticket/code attribution methods that show up in various reports:
As part of the time model, minware translates the 7 calendar days each week into 5 business days.
It does this by first dynamically building a schedule for each person based on the hours of the day they are most active derived from commit activity. Each hour of the day gets a percentage weight so that a 24-hour period adds up to one. However, if someone strictly works 9-5, then a time period 9-5 will equal a whole day, as the weights for other hours in the day will be zero. If they work evenly 9-5, then half that interval (e.g., 1-5) would equal half of a day.
The time model then considers how active people are on weekends vs. weekdays to assign percentage weights to days such that the percentage weights for each of the 7 days in the week add up to 5 to represent 5 business days. If someone typically works quarter days on Saturday and Sunday, then a time interval on the weekend would equal one quarter of the business days of the same interval during the week.
This model assumes that each person works a 5-day full-time week. If people work a different number of days, their time will be scaled to 5 business days per week.
After applying this weighting conversion, we arrive at Dev Days and Assignee Days values, which add up to 5 per week if the person is fully active.
minware’s dev work time model attributes time to commits by allocating the time between two commits to the commit that follows. For example, if commit B happens four hours after commit A, then those four hours of time will be attributed to commit A. This can be seen in the following illustration:
minware also excludes meetings when linking time to commits. So, in the previous example, if there was a 1-hour meeting in the middle of that 4-hour interval, then only 3 hours would go to the commit, and the hour for the meeting would not be counted.
minware also limits the time it allocates to each commit at up to one business day, with the assumption (which has been validated in large-scale testing) that developers generally commit their work at the end of each day, which is a generally accepted best practice. If specific developers are not doing this, then their time may be under-counted.
For meeting time, time that does not fall within one business day of a commit, or time linked to a commit without a ticket, the assignee work time model falls back on the most likely ticket that the person was working on during that interval.
The most likely ticket matching uses a few different heuristics to attribute time intervals to tickets:
If a person has an out-of-office event on their calendar, then the assignee work time model will not attribute that time to any ticket (assuming there are no commits while out-of-office, which are counted) and consider it untraceable.
Otherwise, 100% of people’s time will be allocated in this model unless they have been completely inactive for more than 7 days.
The assignee work time model further uses a computed start date, and a computed end date for people who have left the organization (no activity for 30 days), and not count any time before or after a person’s employment.
minware properly handles squashes, rebases, and delayed pushes, so we will see any commits that the server (e.g., GitHub) eventually sees and factor those into the time model. If a commit is pushed at a later time than it is made, then the reports will backfill the activity.
The only time when minware cannot see commits is if they are squashed or rebased locally and never pushed to the server, which is generally a bad practice because it loses some of the change history
The custom report has both dev and assignee work time fields. The dev and assignee business day metrics are available as Dev Work Days and Assignee Work Days.
The custom report also offers Dev Work Months and Assignee Work Months, which represent the portion of Dev Work Days and Assignee Work Days divided by the total number of business days in the current month, respectively. This is useful for accounting when multiplying this value by a monthly salary cost, as different months will have different numbers of business days.
The custom report further includes Dev Calendar Days and Assignee Calendar Days, which use the dev work time and assignee work time model, but do not apply the conversion from wall clock time to business days, so there will be 7 days in a week and weekend/overnight time will count the same as time during the work day.
Additionally, the custom report has Logged Days, which is based on actual time logged in the ticket tracking system divided by 8 hours. This field does not use any weighting or time model, but can be helpful for comparing time log data if it exists to the time model outputs.
The sprint stats report offers Dev Days, All Days, and Logged Days, which are exactly equivalent to Dev Work Days, Assignee Work Days, and Logged Days described above for the custom report.
The time allocation report uses the assignee work time model, which allocates all traceable time (only excluding vacations and extended periods with no ticket activity) to a ticket. Time that is not spent actively coding is represented in different ways depending on the report mode:
The scorecard report displays all of its time-based metrics in terms of dev work time. The exception is if you do not have a version control system hooked up as a data source, in which case it falls back on assignee work time.
All other minware reports use the dev work time model when displaying dev days, and may show time between active work intervals as “non-coding time.”