old-blogs/new-testing-blog/aristotle-and-testing.md
2021-04-04 14:26:38 +01:00

16 lines
1.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Aristotle in Software:
The four causes:
* Material Cause: From where did it come? (What substance gives rise to it)
* Formal Cause: What arrangement of component parts caused it? What shape does the material take?
* Efficient Cause: How do I make it? (process of bringing material and form together)
* Final (Teleological) Cause: What purpose does it serve? (What is it _for_?)
* Stories arent the requirements; theyre discussions about solving problems for our organization, our customers, and our users that lead to agreements on what to build.
* Your job isnt to build more software faster: its to maximize the outcome and impact you get from what you choose to build.
### The Material Cause
The material cause of software is the human mind. This is a strange thing to call "material", but it is true that our 'minds' are ultimately a collection of functionally interrelated processes taking place in the brain. The brain exists as an outcome of natural selection filtering for survivable traits in a given natural environment. Traits that survive the selection process aren't necessarily traits that make us better thinkers. Confirmation bias and intentional stance are good examples of this. However, survival need not eliminate good reasoning habits either. It's often less genetically "expensive" to leave a "neutral" trait intact, than to remove it. Pattern recognition, creativity (causal synthesis) and the capacity for abstract conceptualization are good examples of this. Human beings are exceptionally good problem solvers, as living species go.