Just because people call themselves software engineers and schools teach it as a discrete program, doesn't make them true engineers. There are plenty of schools that offer 'financial engineering' programs. IMO, programmers have a lot more in common with traditional artisan trades than engineering. They call themselves 'software engineers' because skilled technical workers prefer to associate with their cultural equals in an established white-collar profession than blue-collar craftsmen.