Pure and Impure Software Engineering