You can tell because code has no narrator voice in your head when you read it.
1. Are return values identical for identical arguments?
2. Are there side effects? What are those?
3. "Congratulations, this narrator here found a story that can be told in isolation!"
4. Are the variables used in close locality to their declaration
5. Are all these loops doing what I think they do? (This one requires iterations of temporary code rewrites)
6. Is the story told with high efficiency? Can some side effects be prevented?