Wednesday, January 9, 2008

Expectations and Developer Stress

I think most software developers know that stress is bad. It reduces my creativity, damages my code quality and hampers my productivity. I can't help but wonder if stress reduction is another benefit of Google's 20 percent time policy. In my experience, there are two ways in which customer/management expectations create unnecessary stress for developers.

Unknown Expectations

Not knowing what is expected causes developers stress as they code back and forth wondering whether they are heading in the right direction. This can be caused by unclear specification documents, customers not knowing what they want, a developer too shy (or proud) to ask questions about the project he's working on. Many software developers don't relish interpersonal communication. The very thought of communicating with someone to clarify the expectations can add more stress.

I've found that short feedback loops eliminate a lot of the unknown and therefore reduce stress. Once the customer/manager sees a small portion of the product, she can tell if it's going in the right direction or not. Even if the programming so far has been completely wrong, at least one possibility has been eliminated and the expectations are more known than before.

Unreasonable Expectations

A customer/manager demanding unreasonable performance causes a lot of stress too. Trying to meet the expectations is, by definition, not reasonable. Wondering what will happen when the expectations aren't met (as they cannot be) brings yet more stress.

I've found that the best way to eliminate this stress is to communicate early that the expectations will not be met by trying to set the expectation below the achievable level. It leaves space for performance above expectation and time for a tighter focus on quality. This is just another application of an ancient algorithm for choosing seats at a wedding.

1 comments:

JJGames said...

Good stress reduction tips. I like how your wedding seat selection algorithm reference. It worked then and it works now too.