In one of my assignments of 2005 I worked on a company's test plan and on that occasion I realized how tightly coupled the formulation of requirements and the testing of the software can be. Of course, this is nothing new, except this is not so common in practice, like many other things "that everybody knows"... but nobody really applies.
What I find striking is the parallel between some of the methods developed by the neurolinguistic programming (NLP) community and the principles behind software development methodologies of recent years. More specifically I refer to the V-model and to agile methods. The first creates an explicit link between the various stages of a development project and the creation of the test plan; in NLP "testability" (i.e. how does one know from visual, auditory or kinesthetic input that something is "real") one of the criteria of proper formulation of objectives. The latter are based on a set of assumptions amongst which is the fact that iterations help better capture requirements. When working with someone using NLP "techniques", I always run through several iterations of the way that person "creates" the problem especially by reformulating what my counterpart is saying or expressing in a non-verbal manner.
I find this parallelism quite interesting because I often come across a generally accepted idea that people are easier to understand and manage than machines (coming especially from people who have had consistently bad experience with IT projects and software tools) and also because NLP was heavily influenced by computer science when the approach was created. At the end of the day the success of a software project is very much influenced by the quality of human communication and by the commitment of the various teams involved in the process. So I guess that the combination of modern methodologies and human communication skills is an important asset to keep out of harm's way and to consistently move towards project success.