Software usually fails from logical fallacies... I can tell by your expression, you are intrigued, but not convinced. Poor logic kills software, but why say logical fallacy as if it is different?
Lets take a simple one. Look at two statements.
- If I break an egg with a hammer, the egg was broken by a hammer.
- If the egg is broken, I broke it with a hammer.
Version 1 is a valid argument. Version 2 is not. Version 2 is actually influenced by version 1. We assume hammers can break eggs, so all eggs are broken by hammers. The fallacy is assuming that prior evidence leads to statements of truth in the future. In fact, it is accident that 1 lead to the assumption in 2. The second egg could be broken in various ways from simply dropping it, to an earthquake, a hatching chicken, to being run over by a steam roller or hit by an asteroid from space.
Version 2 is only likely to be true if the egg lives in a hammer factory. But as you can see, just because you are in a hammer factory, not all eggs are nails.
Look at a real world example:
- If I try to break into a computer and fail, I will fail to enter the password three times.
- If the user fails their password three times, they are a hacker.
Again, the first statement leads to the false assumption in the second statement. Just because a hacker needs to guess a password, a real user might goof three times, but we assume they are a hacker.
The danger here is assuming that messing up a password is the action of a hacker. Is it? Odds are, so. Most people forget passwords, mistype passwords, or even use the password for another application by mistake. It is easy to test too.
Failure to enter a password is not proof that the user is a hacker. But many developers treat these poor people as villains. I'm fairly sure you are a victim? Have you ever had to go through hoops to reset an account that is locked down because you goofed your password?
This is just one fallacy. There quite a few that lead to issues with poor application logic and assumptions. Read up on logical fallacies. Be a better developer by knowing the difference between good logic and a fallacy.
Here are a few good books: