Software development is often seen as a very scientific discipline, generally viewed through the lens of a Science Technology Engineering and Math (STEM) curriculum. What is often overlooked is that many of a programmer's tasks, like debugging edge cases and approaching novel problems, require more creativity than pure logic.