Date:

Measuring Productivity

A Personal Anecdote

At a past job, a very successful contracted developer became a full-time employee. After a few months, they were frustrated about being less productive as an employee than as a contractor. We had a conversation about the difference in the roles and expectations between contractors and employees, and worked to re-shape the idea of productivity for them. It’s an interaction that stuck with me and which I’ve shared personally a few times.

Contractor Roles

With contractors, we looked for someone to complete an assigned task quickly and correctly. We did not expect contractors to have institutional knowledge, so they depended on the task details provided and had minimal concern about externalities. The work was transactional.

This even created some rivalry between development contractors and the Quality Assurance team. Contractors could justify returning tickets which lacked detail, even if the missing information was “common knowledge” in QA. If a task was insufficiently described, that was a requirements problem, not a development problem, and a ticket returned to the creator did not hurt the contractor’s statistics like a test rejection for an incorrect or incomplete solution.

There was some give-and-take in this process, but overall it was reasonable for a contractor to expect the necessary information be provided for a task. This might seem to be a narrow view of contracting, but it was the expectation we worked with at the time.

A successful contractor solved the provided problem.

Employee Roles

With employees, we expected the accumulation of institutional knowledge and understanding of the broader context of the work. The employee developer needed to understand the business case for the work, and how a task fit into it. They needed to have an idea of the externalities and how decisions affected other processes or projects. An employee was expected to ask, “Why?”.

Further, an employee was often expected to take longer at a given task because of these additional requirements. We asked more of employees, both in terms of knowing the concerns and in taking the time to obtain information or inform stakeholders.

A successful employee solved the underlying problem.

Overlap

Employees could be called on to solve problems as though they were contractors in a pinch, but you could not reliably ask a contractor for the opposite. This further demonstrated the difference in expectations for the roles and that there were different productivity measures for each.

Productivity

So what is productivity? Other than the quality or state of being productive, it really

Lines of code don’t provide a meaningful measure. Number of commits isn’t necessarily representative of someone’s effectiveness. Code coverage doesn’t always provide the guarantees we expect.

This becomes more complex as you look at different roles and the associated goals. A senior developer supporting multiple team members should be expected to have lower individual code output, while the overall team’s output or quality measures improve.

Measures

Depending on the tasks, productivity may track Key Performance Indicators (KPIs) or fit into Objectives and Key Results (OKRs). Or maybe you have different jargon for “things to measure and measuring things”.

Some of these proposed measures are for individuals. Others are for teams or even products. I will not dive into the details of each unless people express interest in discussing them.

Tickets:

  • Number of test rejections
  • Total defects identified
  • “Escaped” defects
  • Size of the backlog
  • Average ticket age

Coding:

  • Necessary changes identified during code review
  • Maintainability scores, e.g. cyclomatic or cognitive complexity
  • Test validity, e.g. does this cover the business cases

Project Tracking:

  • Improved estimate accuracy (usually very difficult)
  • Individual or Team Velocity (if adequately implementing agile principles)
  • On-time deliveries
  • Customer satisfaction

Selecting Measures

The best recommendation I can give is to avoid any measures which you can imagine ways to manipulate.

  • Lines of code can be increased with formatting and comments.
  • Commits or Pull Requests can be made smaller and more frequent without improving quality or output.

These are two simple ones, but try this exercise with any measurement you might be using. If you can game the system, what is the measure really telling you?

Conclusion & Feedback

Ultimately, I don’t have an answer for how to measure productivity for you or your team. It can depend on many factors, including team and company leadership. Productivity measures may need to align with corporate goals or with management directives, and they can change significantly with the type of work or product you support.

What are your measures of productivity, and how do they vary by role or team?

FAQs

Q: What are some common measures of productivity?
A: Some common measures of productivity include lines of code, number of commits, code coverage, and defect density.

Q: How do you measure productivity for different roles?
A: Productivity measures can vary depending on the role. For example, a senior developer may be expected to have lower individual code output, while a junior developer may be expected to have higher code output.

Q: Can you provide more information on the measures you mentioned?
A: Yes, I can provide more information on the measures I mentioned. Please let me know which ones you would like more information on.

Q: How do you select measures for your team?
A: The best recommendation I can give is to avoid any measures which you can imagine ways to manipulate.

Latest stories

Read More

A.I. Isn’t Coming for Moe

The Future of Voice Acting: Human Touch in an...

GTC 2025: Expert Sessions

Featured Researcher and Educator Sessions at NVIDIA GTC 2025 Advancements...

7 Insane AI Video Breakthroughs

What We'll Be Able to Do with AI and...

Financial Industry’s Latest Technological Trends

The financial services industry is reaching an important milestone...

AI Tool That Could Transform How People Search for Jobs

LinkedIn Tests New Job-Hunting Tool Using Large Language Model Artificial...

Aerospike Enables ACID Transactions

Aerospike's Journey to Full Transactional Consistency Aerospike has always been...

AI Ruined Poster Design

The Controversy Surrounding Fantastic Four: First Steps Posters Another Day,...

Unlocking Spaces with AI for Everyone

Hugging Face Spaces: Democratizing AI and Making it Accessible...

LEAVE A REPLY

Please enter your comment!
Please enter your name here