- Developing software solutions which already exist and are available for re-use (either commercial or open-source). AKA "re-inventing the wheel".
- Same as above, but your solution being broken. AKA "re-inventing the square wheel".
- Developing solutions for problems which do not exist.
Again, I'm interested in a more formal approach, e.g. TRIZ