This is a real question and I don't literally mean "define it" but that is my title assigned to me at my current job but I don't feel like I am a software engineer. I'm in a corporation and everyone is an engineer haha. But my main thing is working with a front-end framework, I barely do any CSS stuff anymore(I was a heavy front-ender prior to this position eg. build this design from scratch). Most of our stuff is built with components that already exist. I deal with a lot of OOP/class/prototype based code which is surprising to me in JS eg. it's not about the language rather implementation.
Our process is strict I mean, you have to write a TDD(Technical Design Document), get that approved by other engineers. Write unit tests, those have to pass on top of the existing tests, code gets reviewed/approved before merging. Then you do automated visual testing "graybox" which is Mocha/Selenium in our case. This is really cool(I always wanted this/tried with Slimer/Phantom). This process "is engineering" to me. Where you have to come up with a solution and go through a heavily structured/reviewed process(good god JIRAs man, JIRAs in my nightmares).
I don't have a CS degree so that's another reason I don't think I'm an engineer. I don't have the algorithms though I took some initial classes(I tried to get into CS before I failed out of school from Phys/Eng). Like logic/discrete that was hard, logic proofs were hard. After intro to quantum mechanics(which I promptly dropped after a couple classes getting scared of Eigen values) I just felt like I was bad at math, got past Calc III/DiffEQ which I know in most of our jobs(code) isn't even relevant. I just assume/tell myself ML/AI is not for me because of the math.
Another concerning thing is being bad at certain things like state management or writing recursive code. I think "my brain sucks/is not good at this". I had this one unfortunate thing to deal with where a nested button in a card also clicked the card. And each events were supposed to be separate/not related, so I had to figure out how to write a debouncer or some way to manage/stop the unwanted click from going through... and this was a component-level problem eg. it would have had to have been fixed/gone through a whole process of coding/testing/reviewing. Which would then propagate into other builds/assemblies using this basic card component. There were event emitters/stop propagation but they weren't working in this case and I can't just override stuff without approval eg. change the click behavior on the card component itself. The issue was odd/rare because the component's original purpose was flexed. Anyway... my code was bad. I mean it will probably get pointed out once people see how it works. It works but I know it's bad. It's just hard... like keeping track of states(I don't mean redux) but you know, I draw it on a board over and over and I am trying to figure out ways to make it simpler/make sense. That's the kind of stuff I'm like "damn it's bad that this doesn't just click immediately".
Anyway I guess the main thing that assures me/makes me believe that I'm some sort of engineer "for real" is that I get paid money hahaha... I don't get fired at my jobs so I guess I have value. Sorry this is just going on and my first post here too, especially after deciding to avoid/give up social media. But I think this place is great because it's technically oriented/learning ability. And this will probably be the last time I post something like this. Generally will do a better job of researching vs. just asking for an answer.
Thanks to anyone who actually reads this, I know it's a wall of text and just rambling.