Linguistics, literature, epistemology, philosophy, cognitive behavior studies,... for starters.
Language is a social construct. What you see on paper or a screen, the vocal sounds you hear as someone speaks, those are just physical representations. They don't carry any inherent meaning.
All human interaction is based on a shared understanding of the world. When I state that "one plus one equals two", I assume that my audience and me agree on what each of those terms in that sentence means. That we share the same frame of reference to assert that statement as true or false.
I could easily invent an entirely new language where the only difference is that the words "two" and "three" swapped meaning. At that point, the sentence "one plus one equals three" carries just as much truth, as long as we share a common understanding of what "three" means.
The difficulty then is that a common understanding of shared meaning isn't always clear cut. Culture, education level, aptitude, personality,... all impact how we perceive and interpret the world, and how we'll use language to build an abstract mental model from which we can can assert our own individual identity.
What many programmers tend to forget is that a "high-level programming language" is exactly that: a vocabulary and a syntax that mimics a natural language which allows you to describe the world. It's NOT merely an abstraction of low level internals of a computer as is often assumed.
Implementing a feature request then consists of interpreting whatever you've read in a spec, user story, brief,... transform that into your own mental model and then express that using the limited formal set of symbols provided by the language. Functional testing is basically verifying if your own unaware assumptions and biases didn't break a shared framework of understanding or created a disconnect between you and the client or the user.
Developers have a penchant for creating new frameworks and languages based on a fallacy: that theirs will be able to somehow "fix" the "fuzzy logic of language", whereas that's inherently impossible. Unless, you're the last person alive with no-one to challenge you on how to interpret of things, that is.
Language is a social construct. What you see on paper or a screen, the vocal sounds you hear as someone speaks, those are just physical representations. They don't carry any inherent meaning.
All human interaction is based on a shared understanding of the world. When I state that "one plus one equals two", I assume that my audience and me agree on what each of those terms in that sentence means. That we share the same frame of reference to assert that statement as true or false.
I could easily invent an entirely new language where the only difference is that the words "two" and "three" swapped meaning. At that point, the sentence "one plus one equals three" carries just as much truth, as long as we share a common understanding of what "three" means.
The difficulty then is that a common understanding of shared meaning isn't always clear cut. Culture, education level, aptitude, personality,... all impact how we perceive and interpret the world, and how we'll use language to build an abstract mental model from which we can can assert our own individual identity.
What many programmers tend to forget is that a "high-level programming language" is exactly that: a vocabulary and a syntax that mimics a natural language which allows you to describe the world. It's NOT merely an abstraction of low level internals of a computer as is often assumed.
Implementing a feature request then consists of interpreting whatever you've read in a spec, user story, brief,... transform that into your own mental model and then express that using the limited formal set of symbols provided by the language. Functional testing is basically verifying if your own unaware assumptions and biases didn't break a shared framework of understanding or created a disconnect between you and the client or the user.
Developers have a penchant for creating new frameworks and languages based on a fallacy: that theirs will be able to somehow "fix" the "fuzzy logic of language", whereas that's inherently impossible. Unless, you're the last person alive with no-one to challenge you on how to interpret of things, that is.