Or is there a career path one has to take. After how many years in industry a person can start to call himself an engineer?
PS: Also curious what's the nuances of distinction between a Software Developer Vs Engineer?
*This may not be true outside of the US
Depends on the field you are in. Here at least, use of the title as it relates to software is currently driven by the hiring agency/company. If you are hired on as a Software Engineer without a degree, then you are a Software Engineer (at least in title, at that position). You damn well better be able to perform. But you can legally write "Software Engineer" on your tax forms.
In my personal opinion, what differentiates a software engineer from a software developer is the level of engineering rigor required for the development and application of your software in a given environment or system. Are there standards in place that recommend (mandate) you provide certain reasonable assurances (e.g.: verifiable proof derived through specified means) that your software will not yield unexpected behavior? Are there standards in place for a given industry that confine the way you use specific languages (to attempt to ensure the aforementioned unexpected behavior will be minimized or eliminated)? I'm thinking of DO-178B/C, IEC 62304, & MISRA as industry representatives here. If you can digest and navigate these standards, and prove to the applicable regulatory body that you adhered (designed, developed, and tested) to their respective guidance documents, they couldn't give a damn about a degree. You've proven you're aware of the risks your software can pose and how to mitigate them through thoughtful application of standards, rules, and hopefully best practices.
Here's where I'll piss some people off: Would I call a front-end UI developer a "Software Engineer"? Probably not, unless that UI is destined for a system where a developer error could cause harm, property damage, etc. What about a trading system where performance losses measured in nano-seconds could accumulate millions in losses? Possibly, depending on the complexity. My personal metric (based on my own career experience) is "will a screw-up cause harm, loss of life, or irreparable damage/destruction to expensive things". Losing millions in a trade and losing millions in an *craft crash are not equivalent to me personally.
Background: Non-traditional EE trained on avionics hardware who moved into developing safety critical avionics and medical device software and hardware.
Nothing. "Software engineering" is something anyone can attempt to engage in. It seems to conjure up an image of something better than bad programming. But unlike, say, mechanical engineering, there is no professional certification required to call oneself a "software engineer". The fact that this hobby/job is an unregulated practice may have something to do with the ubiquity of bad software. Some of the best programmers, e.g., Arthur whitney, have referred to programming as being like "art". The programmer who started this site in fact wrote a book called "Hackers and Painters".
Besides that, a lot of job titles are arbitrary, made up and not consistent between companies. Call yourself what you think you're qualified to do and want to do. Same if you're freelance or a consultant, because nobody is going to give you a title.
The downside of this is onerous and often poorly done interview processes designed to attempt to assess what the applicant is actually capable of.