software and communicating what a piece of art is like . Richard P. Gabriel went so far as to say that effective programming skills could best be cultivated like effective writing skills and proposed a program for a master of fine arts in software degree . Finally, at the 2012 STAR EAST conference, Michael Bolton gave a keynote on how the social sciences (including anthropology, sociology, and journalism) can influence our testing , and Zeger van Hese presented a session entitled Artful Testing: Learning from the Arts .
So, how do we draw insights from other areas of human experience into our work? I'm not certain that there is a way to do this that's applicable to every tester in every circumstance. Everyone's life experience is different, as is the diversity of fields each person has been exposed to. But, I believe a few guidelines can help get us thinking in the right direction.
Keep an open mind. Don't dismiss things out of hand, even if they at first appear very dissimilar from your work. Improv comedy may not remind you of your workplace, but it can teach a lot about reacting to unexpected changes—like changing requirements—quickly, gracefully, and constructively.
Look for connections. Focus on similarities and possibilities before considering differences.
Cooking and software testing might not seem to have much in common until you look at the parallels between writing out a recipe that's easy to follow and describing a bug so that it's easy to reproduce.
Start with what you have. You're probably already familiar with a number of areas outside of software. Use this valuable expertise to full effect.
Expand your horizons. Consider taking on a new endeavor or learning about different fields by reading books, watching presentations, or listening to podcasts. Deciding to take up the viola in my mid-30s was perhaps an unusual choice, but it has taught me a great deal about how practice, confidence, and relaxation show through in the products of one's work.
Be willing to challenge assumptions . This includes both your own assumptions and everybody else's. Part of challenging assumptions is being aware that one is making them in the first place. Learning a different language or spending time in a different culture quickly drives home how many of the mundane things we take for granted are arbitrary cultural or linguistic norms.
Do not fall for analogies. Realize that they never represent the thing described with complete accuracy, and know when they have gone too far. Alfred Korzybski said, "The map is not the territory." To put it another way, "Don't eat the menu."
Software development is still a very young field, and I think it behoves us to cast the net as wide as possible when looking for potential improvements. So, I will end with an exhortation. If you have a hobby or an area of interest outside the hard sciences, put it to use. If you don't, consider taking up something. See what insights you can bring over into your software work. Find them. Apply them. Write about your experience. Communicate them to the rest of us so that we can try to improve our understanding of our discipline together.