Simple, we need to define what competency means. The reason why many programmers feel like imposters is that they mostly use frameworks to develop software.

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.

compose new post
go to top
go to the next post or comment
go to the previous post or comment
toggle comment visibility
cancel edit post or comment
Would love your thoughts, please comment.x