I see a software engineer as someone who has a lot of knowledge about the hardware and can write embedded programs, device drivers, board support packages and communciations programs. A programmer writes user interfaces, web pages, databases and various business packages such as CRM, inventory and accounting tools.