Speculative Generality is where code is written with so much caution for possible future changes, that the code becomes unnecessarily complex and harder to read.
It is considered good practice to consider possible future development when writing code, but Speculative Generality is when this is overdone. The balance can be hard to find, but a good understanding of the purpose of your code will help you make the best judgements.
Speculative Generality smells are unique among code smells in that it is usually experienced programmers who create them.
Books about code smells
Learn to write better smelling code.
Refactoring: Improving the Design of Existing Code
Code smells: A Predictor of Remarkable Quality Improvement
Clean Code: A Handbook of Agile Software Craftsmanship