1. Mapping Behavior to Cause

2. Programming Tools

3. Size

4. New Project Adjustment

5. Unavailability of Resources

6. Programming Experience

7. Simple Problem

8. Fear of Failure

9. Internal Hurdles

10. Limited Time

11. Peers

What makes programmers tick? What really grinds their gears? Researchers at NC State University performed a study and asked programmers about their experiences and found 11 main causes of frustration.
Responses in this category refer to identifying what portion of the code was causing an issue in the code. Not having a good mental model of the code resulted in frustration of misinterpretation of the code.
"I was frustrated when I couldn't figure out why a random gap of space was on my website...."
Learning curves exist when getting acclimated to a new tool: learning new features, shortcuts, etc.
This learning curve is warped when the tool is broken.
Respondents in this category acknowledged both of these frustrating occurrences with programming tools.
"An in-house tool used to automate process kept throwing errors, resulting in a very tedious, time consuming process...''
Respondents acknowledged three issues when working with programming tasks:
a. High cognitive complexity: "Where do I begin?"
b. Large goal spaces: "I'm almost done but there is a little thing in my way"
c. Large code bases: "So much to understand"
"There were some logical errors in a big code base..''
Adjusting to a new project climate takes time. During this time the developer is unfamiliar with how to accomplish tasks, appropriate questions to ask, as well as configuration issues.
"I expected some configuration obstacles, but I became frustrated when the fixes I tried...didn't fix the problem..''
Though documenting code during programming is a highly recommended practice, it is not done often and creates issues for codebase reviewers. In addition to documentation, this category acknowledges services that are suppose to be available to users but were at their disposal. For example, waiting for someone to come help you.
"API/documentation issues are ALWAYS frustrating.''
Respondents mentioned issues that arose with programming languages.
These issues came from confusion with syntax of various languages and experience with new frameworks.
"I had to code something in Perl and I didn't know the language syntax''
Peers and management assign `simple' tasks to individuals not fully comprehending the depth of the truly complex issue.
Frustration arises when the expectation is not met and the `simple' task is not as easy as recommended by others.
"Inability to code something that I know should be simple.''
This category holds responses relating to the fear of not succeeding and failure.
The obsession over the fear of failure sets back individuals and overcomes them in the form of frustration.
"It builds a strong sense of anxiety. I feel like I may not solve the issue...''
Some respondents acknowledged that they were the result of their own frustration.
These respondents knew they have been putting this pressure on themselves; some pressures even leading to fatigue.
"The problem that I faced with frustration is I tend to procrastinate…"
Respondents described a limited amount of time allotted to work on projects.
In the short amount of time given it seems unreasonable to make significant progress and make lasting impressions to others on a team.
"I had to deal with an ambitious project in a limited time frame...''
Respondents referred to peers as a source of distraction from the task at hand.
In addition, some respondents mentioned their peers as incompetent and not being on their level.
"Peers were terrible programmers, less experienced, and refused to use libraries/patterns to make things easier... ''