problem solving in engineering