For any developer who's spent hours hunting for a bug in a tangle of spaghetti code, glib pronouncements that "programming isn't hard" are particularly tiresome.
Programming may be rewarding, but as veteran devs will tell you, it can also be terrible.
The reality of software development is that it can be a fulfilling but also difficult role, where compromise is frequently necessary to meet deadlines.
While the daily grind of an iOS dev may be vastly different to that of an embedded software engineer, there are common sources of pain that cut across all fields of software development.
A group of European researchers polled about 180 GitHub developers, asking them what their greatest "causes of unhappiness" were and how that dissatisfaction affected their work.
Here are the most common frustrations reported by these devs.
1. Poor code quality and bad coding practices
Perhaps unsurprisingly, one of the greatest annoyances for devs is shoddy code, whether written by themselves at an earlier date or inherited from a colleague. The pain of fixing issues is compounded by poor and unclear comments, with those polled expressing particular frustration at having to work with "unexplained broken code", as well as having to tidy up earlier work by refactoring the codebase.
2. Hunting for bugs
A related problem is pinpointing the source of unexpected and undesirable behavior in a codebase. When it comes to bugs, the most egregious for the devs surveyed are those that can't be easily located, followed by perennial issues that won't go away, those which are particularly unexpected and, as you'd expect, those which take a lot of time and effort to fix.
3. Disappointing technical infrastructure
Unwieldy and unhelpful technical infrastructure is another major pain point, particularly where it constrains what the developer can do, is broken or outdated, not well-documented or judged generally to be "inadequate". Code comments that are either too general or too specific were also criticized by those polled.
4. Unclear and fanciful requirements
As with any professional, developers dislike uncertainty about what they should be doing. Those questioned cited "vague" and "unrealistic" project requirements as a source of stress, particularly where those requirements are changing right up to the last minute.
5. Maintaining past code
For a developer, having to understand, maintain and build upon code that they haven't worked on for months or years can be tough. That challenge becomes even more acute when the code was written by people who've long since departed the company or it has been haphazardly cobbled together over a long period of time.
More on software development...
- Stack Overflow founder Spolsky: The three skills every software developer should learn
- Enterprises continue to treat developers as second-class citizens
- Your enterprise needs more developers... a lot more
- Developers are pragmatic, not religious, about software
- Face it: Developers are becoming babies
- Why every developer is an open source developer now
Nick Heath is chief reporter for TechRepublic. He writes about the technology that IT decision makers need to know about, and the latest happenings in the European tech scene.