SpyglassSoftware engineering, and development in particular, encourages tunnel vision. For the most part, engineers receive inputs (an understanding of something to build), do some design, write some code, do some testing, and generate outputs (a product or some piece of a product.) In many cases, the inputs come from someone else in the organization, usually from a product manager, or a bug report from QA. The outputs go to someone else in the organization, frequently QA or a release team. It's easily possible for a developer to go for months or years without any exposure to actual end users. The downside is we actually build better software when we better understand the customer. So how do we get better at our jobs and understand our users better?

Try On Someone Else's Job for a While.

Spend a week sitting with someone in support answering the phones. Hearing the customers talk (OK, complain) will start to show you how they think and what they want from your product. Spend a day with a product manager on a customer visit, and you'll start to understand how customers express their needs -- and how the product manager translates them. Spend a day with a QA engineer seeing how easy or hard it is to test the product. You might be relieved to go back to your desk and get to coding again when you're done. You'll also have a better understanding of how customer and user requirements match up with what you're seeing -- and that will help you produce software that's more useful. And that's a win for everyone.