What makes one type of developer feeling happy and fulfilled, will drain energy from another. Knowing types of developers and being able to recognize them turns out to be crucial for teams to be productive.
More then 400 developers participated in the research conducted by University of Zurich, University of British Columbia & Microsoft Research (source) aimed at understanding, measuring and optimizing software developers' productivity.
Results of research show that there are 6 types of developers:
Those types are based on the aspects that developers perceive to influence their productivity positively or negatively, and by the measures developers are interested in to reflect about their productivity. Understanding what type of developer certain person is, can help provide better and more tailored environment to developer. Here is why.
Social developers - feel productive when they have opportunity to help other developers, when they can collaborate and do code reviews. They tend to focus on a single task. An important aspect of their satisfaction is a level of happiness they have working on tasks assigned to them.
Lone developers - feel productive when they have little to no social interactions and when they can work in quiet environment without interruptions. They want to solve problems, fix bugs and do coding. To call a day productive, they are mostly insterested in frequency and duration of interruptions like meetings, e-mails, notifications, code reviews. They must feel fulfilled with the tasks assigned to them.
Focused developers - they want to work on a single task, but compared to social developers which also prefer working on a single task, focused developers are feeling unproductive when too much time is spent on a task, or when they are stuck or when they progress slowly. To call a day productive, they are interested in duration of focused time (aka maker time) and number of interruptions.
Balanced developers - they don't consider interruptions so unproductive as lone or focused developers. What affects their productivity the most are unclear tasks, tasks considered unimportant, tasks they aren't familiar with, or tasks causing overhead.
Leading developers - those are developers which are with one leg already in management. They embrace meetings, e-mails and code reviews. They also consider coding less productive activity than other types of developers. What makes them productive are afternoons in which they can design things and make architecture of the systems.
Goal-oriented developers - they feel productive when they accomplish the tasks assigned to them. They are feeling unproductive when goals and specifications aren't clear, when they multi-task, when work is monotonous or when they feel stuck. While solving bugs and debugging problems makes lone developers feeling productive, goal-oriented developers see such tasks as unproductive work. They don't consider meetings and e-mails unproductive, but only if they help them achieve their goals. Overall progress of the project, not just their personal tasks, is something that affects their productivity.
The unfortunate truth is that there is probably no one-size-fits-all solution to understanding developer productivity (sorry). It is obvious that developers do not see the same tasks or activities as equally important.
Recognizing in which of the 6 groups of developers you or your coworkers belong to, gives you the opportunity to develop the right productivity strategy for your specific team – or for specific team members through: