> Writing non-trivial software that is correct (for any meaningful definition of correct) is beyond the current capabilities of the human species.
I think it's worse than this: Defining correctness for any nontrivial system to the level of detail required by software is beyond the capabilities of any human or group of humans operating to a deadline. The only way to get there is to pare down the scope such that physically possible things are defined to be out of said scope, such that the system punts and relies on humans to figure it out.
This has implications for job automation.
> Thinking about things is a massively valuable and underutilized skill. Most people are trained to not apply this skill.
Attempting to prove yourself wrong is a massively valuable and underutilized skill. If you get a theory, develop a test which the theory is vulnerable to, such that if the test comes out a certain way the theory is disproven, and then run that test. Some people seem unable, or unwilling, to think like that.
This has implications for software testing. It has implications for all kinds of testing.
I think it's worse than this: Defining correctness for any nontrivial system to the level of detail required by software is beyond the capabilities of any human or group of humans operating to a deadline. The only way to get there is to pare down the scope such that physically possible things are defined to be out of said scope, such that the system punts and relies on humans to figure it out.
This has implications for job automation.
> Thinking about things is a massively valuable and underutilized skill. Most people are trained to not apply this skill.
Attempting to prove yourself wrong is a massively valuable and underutilized skill. If you get a theory, develop a test which the theory is vulnerable to, such that if the test comes out a certain way the theory is disproven, and then run that test. Some people seem unable, or unwilling, to think like that.
This has implications for software testing. It has implications for all kinds of testing.