1. When I first realized I could loop and conditionally branch inside it (my first programming lesson) to do interesting stuff.
2. When I got OOP, and later when I realized the folly of vicious mutability.
3. When I discovered FP, composability and the Turing machine.
4. When I lately realized that software development is a giant hack to solve various business problems. ;)