Developers are not programmers. A programmer is someone who can build libraries and apps with nothing but the programming language as a base. This still leaves algorithm designers, language designers, operating system builders and hardware makers as abstractions below of what a programmer can do. If we classify all the core skills, we get we get a hierarchy of competence
1. Developers – Those who use frameworks, cloud and sdks to get the job done
2. Coders – Those who use scripting languages for extending apps, developing, maintaining websites and writing addons. I also include excel hacks, game scripting, unix scripting and wordpress scripting in this.
3. Designers – Those who work with CSS, gimp and blender
4. Programmers – Use and build libraries to write custom code, especially games.
5. Hackers – Those who work on operating systems
6. Crackers – Those who with security
7. Scientists – Who work on languages, databases and algorithms
8. Engineers – All the above + Scalability + Reliability
DevOps are a subset of coders. We even have data scientists now. There’s also embedded programmers, testers and ML programmers. In short what you broadly do will define your competency level.
How long will it take ? Do you need special training to become an engineer ? Except for the science part … I think you 2-3 years of learning time and 5 projects to not feel like an imposter. I would say developing a 5 minutes 3D game without frameworks is one very good way to get rid off imposter syndrome.
If you do a project in each of the above you can get a broad idea perhaps but each competency level also has a horizontal axis in which you can specialise away.