The DevTime reduction function computes a single telemetry stream representing the total "DevTime" for the specified Project and Interval.
"DevTime" is computed by processing the the DevEvent sensor data entries associated with this Project and Interval. To compute DevTime from DevEvents, each day is partitioned into 288 five minute intervals. If there is at least one DevEvent generated by a user with a timestamp corresponding to a five minute interval, then those five minutes represent "DevTime". To compute the DevTime for a day, the total number of DevTime five minute intervals are summed up across all users in the project.
DevEvents are generated by IDE sensors such as those for Emacs or Eclipse. They are also generated by sensors for build systems such as Ant, and command line sensors such as the CLI and ShellLogger sensors when working inside a directory associated with the specified Project.
DevTime provides a way to characterize the time spent by developers on a subset of development tasks: those that involve tools such as IDEs or interactions with the command line. Depending upon the organization and the way developers work, it may or may not be appropriate to view DevTime as a proxy for "effort". The best way to answer this question would be through a cross-validation study in which developer effort is independently measured through some orthogonal method (such as direct observation).
DevTime is related to ActiveTime. The difference is that ActiveTime measures only the time spent editing files related to the specified Project. In general, we believe that DevTime is a more accurate and useful measure than Active Time, and we expect to eliminate the Activity SDT and the associated Active Time analyses in some future version of Hackystat.
For DevTime analyses associated with individual event types, see Section 28.10, “EventTypeDevTime”. For DevTime analyses associated with individual workspaces, see Section 28.36, “WorkspaceDevTime”. For DevTime analyses associated with individual members, see Section 28.17, “MemberDevTime”.
Table 28.8.
| Parameter | Description | Default |
|---|---|---|
| eventType | If '*' is supplied, then all event types' DevTimes are included in the computation. If an event type is supplied, then only that event type's DevTime is included in the computation. | * |
| memberEmail | If '*' is supplied, then all members' DevTime are included in the computation. If a member email is supplied, then only that member's DevTime is included in the computation. | * |
| filePattern | Ant-like file pattern specifying the files to be included in computation. | ** |
| isCumulative | If true, the telemetry stream point values are cumulative. | false |
Example 28.11. DevTime
streams DevTimeStream(eventType, memberEmail, filePattern, cumulative) = {
"Dev Time", DevTime(eventType, memberEmail, filePattern, cumulative)
};
y-axis yAxis(label) = {label};
chart DevTimeChart() = {
"Overall DevTime",
(DevTimeStream("*", "*", "**", "false"), yAxis("Dev Time Hours"))
};
draw DevTimeChart();

This chart shows that for the project in question, DevTime varied from 45 hours to over 80 hours per week over the course of 8 weeks. This is an example of a non-cumulative DevTime telemetry chart that includes all types of DevEvents in the computation.