Five programming problems every Software Engineer should be able to solve in less than 1 hour