In other industries it's better defined, you pass the exams, you get the right to use the title. The software industry on the other hand is using the term engineer too liberally - we basically just invent those titles for ourselves, consultant, engineer, architect - but being an engineer still primarily means having a certain level of technical expertise in the field.
And btw, in every industry you have those lone-wolves characters who are arrogant and hard to work with, but they get tolerated because they can solve hard problems better than others. I think you get even more of this in other lines of work, because in programming those types are usually not as crucial resource as in say maintaining some old machines that only they know how to keep running properly. May dad was a civil engineer and he had quite a few colleagues like that, and while no one enjoyed working with them, they certainly respected their expertise and would never say that they're not engineers, just bricklayers.