Code Smells: Improving a sense of smell in low level debugging

Code Smells...But what is exactly a code smell? Most developers are good at scrutinising code to look for bugs and errors – does the code do what it is supposed to do? Code smells are indicators about parts of the code which are not habitable – is the code readable, easily understandable and extendable, and maintainable?