shutterstock_383935894 A lot of things drive developers nuts. But what drives them nuts the most? According to a new survey of nearly 50,000 developers by Stack Overflow, there are several strong contenders. Some 34.9 percent of those surveyed said that unrealistic expectations were a significant work challenge, followed by poor documentation (34.7 percent), unspecific requirements (33.5 percent), inefficient development processes (30.3 percent), and fragile code base (29.6 percent). (Respondents could obviously cite more than one challenge.) Another 28.1 percent said that changing requirements represented a prime challenge, followed by outdated technologies (24.8 percent), limited resources (22.9 percent), and poor team dynamics (22.3 percent). Unacceptable scheduling and infrastructure, interacting with non-technical people, and corporate policies likewise drove them varying degrees of insane. Challenges also changed with developers’ experience levels. “More experienced developers tend to be bothered by unrealistic expectations, unspecific requirements, and fragile code,” the Stack Overflow report noted. “Also, experienced developers have less of an issue ‘trying to be nice.’”

Managing Expectations

Managing unrealistic expectations—the number-one complaint of developers—is a tricky process. For starters, there’s a big difference between hard tasks and impossible ones. Business Insider has an excellent story about the development of Amazon’s Echo, a voice-activated gadget that fulfills a variety of user commands; when Amazon CEO Jeff Bezos came to the development team to frame out the requirements, he challenged them to build hardware with as little latency as possible—a difficult goal, but not insurmountable. In fact, the challenge galvanized the team to do their best, and the resulting product is a bestseller. That’s an example of a hard task assigned correctly. Unrealistic expectations, on the other hand, force developers into an impossible conundrum: either lower standards, or risk project failure. Rather than staying silent, developers in this position need to convey to senior management exactly what they need to accomplish the task, whether it’s more time or resources (or both). The key here is communicating those concerns in a way that non-technical people can understand; not every manager or stakeholder can grasp the nuances of coding. Taking a proactive stance can also curb unrealistic expectations. During initial project meetings, make sure to voice alternatives if you feel a particular course of action is ultimately undoable. If there’s another way forward, managers are more likely to hear your concerns—and they’ll appreciate you speaking up at the outset, rather than midway through the production process. If the project is a particularly vital one to the company, you can also leverage the situation to ask for additional personnel. Unless the work is top-secret, most businesses aren’t averse to bringing in contractors or other outside help. But again, you need to voice your concerns for something to happen.