Edge cases are nature's way of telling us how lousy our programming is. (*1)Is there a systematic, step-by-step approach to help junior developers improve their awareness/senses of edge cases?There are some low hanging fruits that are easy to explain and demonstrate.  For example, boundary-value analysis [1], division by 0, removal of an item from an empty container, etc.  However, sometimes it feels more like art than science (i.e. I know it when I see it. ).Any feedback and/or idea is greatly appreciated.  Thank you.*1: Borrowed from Dick Guindon's "Writing is nature's way of telling us how lousy our thinking is."[1]: 