Disclaimer: This is not a study, but rather a personal take from a developer's perspective. If you are in a position to conduct the study sign me up
There is a factor to software development that is hard to grasp, but it explains a state of fatigue after a good day's coding, and an increased need for focus time compared to other jobs. I am talking about "mental load". The concept of the mental load has been recently re-popularized in feminism, but very much applies to coding as well. The mental load is the cognitive burden of managing, organizing, and remembering various responsibilities and tasks in one's daily life, or in our case, in one's workday.
When you are in the process of coding, there are many factors you need to keep in mind.
-Does my code meet all requirements?
-Are there dependencies I need to accompany or avoid?
-Am I getting into a dependency hell?
-Is my code fast enough?
-Is it secure?
-Do I handle all possible exceptions?
-Do I have enough logging, and is my logging meaningful enough?
-Does my code run where it needs to?
-Will the next person be able to read it?
-Will the next person be able to change it?
-Do I provide sufficient documentation?
-Do I apply all required coding standards?
-Do I keep up with the bureaucracy surrounding the project?
Mental load affects software engineers by potentially increasing stress, reducing productivity, and impairing decision-making abilities, as they must continually manage, organize, and remember diverse tasks, including writing and debugging code, meeting deadlines, collaborating with team members, staying updated with the latest technologies, and managing personal responsibilities. If not managed effectively, an excessive mental load might lead to burnout, decreased job satisfaction, and even adverse effects on their overall well-being.
Coding requires creativity. After all, we are painting pictures, not with colors and brushes on a canvas, but with text on an idea. Nothing kills creativity as well as pressure. A task at hand might not look like much, but the surrounding architecture of people, ideas, stakeholders, bureaucracy, external change and dependencies is often overlooked. When every single letter in your code can break the whole project, every second of focus becomes invaluable.
Adding logging to a codebase with 10s or 100s of methods is not a creative task, it is a boring one. Adding documentation in a code file is not fun, it's exhausting. Refactoring code to adhere to certain standards will make the team happy in the long run but takes the thought process away from where a developer's mind is best used from a "return on time invested (ROTI)" perspective. Having to stress about the big picture of error handling while you might rather redesign the dataflow. Implementing code that might as well be just a repository or StackOverflow search away is not challenging.
This is where a co-developer can take at least some burdens off the shoulders of a software engineer, and since software developers are rare everywhere, the more tedious tasks might as well be done by an AI.
Coding Assistants like GitHub Copilot can have a positive impact here, not only on the product itself but on the human behind it as well.