mechanical vs software engineering