is software engineering hard