Difference between Hardware Engineer and Software Engineer