Impostor Syndrome is, or has, become like Asperger's, where every dev thinks they have it. It's a "humblebrag". I honestly tell people I mentor, be confident, but humble. You have this job because you're qualified (or you made yourself qualified), so have confidence in your skills - sit up right, answer questions, take ownership. But also be humble. Don't be afraid to say I don't know, admit you don't know everything about developing.
It's OK To say "I don't know, but I'm doing my best, and if I did, I could answer you."
Responsible, experienced engineers should teach newcomers that experiencing self-doubt is part of the process in maturing. I had the fortune to work under a mentor in my original position in this company that wasn't afraid to pull his assigns in to help solve problems he was working on.
Seeing that people of his caliber still acknowledge the value of second opinions and eyes really helped me understand that this business is not about the individual bodies entombed in cube walls, but a complex effort of many teammates.
After I embraced that, I learned where I could, and contributed where I could, and I personally feel much more productive as a member of my new team because of that. Do I still feel like I don't know things? Definitely. I also know that it's a big field and we all won't know everything.
My next goal is to find my way to a leadership position so I can perpetuate this kind of mentality downwards.
If we pretend for a moment that hiring processes are perfect methods for identifying the top X% of candidates objectively, when you are hired by a company that only hires the top 10% of candidates, when you are hired, you instantly go from being better than 90% of your cohort to being average. You might go from being in the 92nd percentile of your old cohort to the 20th percentile of your new cohort.
Sure, it's less stark when hiring processes aren't perfect and hiring criteria are fuzzy and don't oerfectly match the actual job requirements, but any time you go through a selective process it's going to happen a little.
Sort of. One thing about advancing in your career is that you end up working with people much, much smarter than you. Or at least I do. ;-)
I've felt like a working-class programmer for most of my career and I don't have a problem with that. I frame houses, hang drywall...
I'm a programmer, dammit Jim, not an architect.
Establishing clear lines of communication and trust is hard work. As hard as development. People are unpredictable and diverse. It's like writing a different language for every part of the application. The syntax you use to communicate between people changes.
As the world continues its descent into reliance on technology and software, more people are faced directly with generating requirements for developers to implement, and right now the gap between the two world is still rather large. The best way to help close those two worlds in, is not to point a finger at those around us and complain they aren't capable in this environment, it is to help build the bridge so that the person who is in your position next does not have to face those same realities.
This introduces dark corners where bad actors can operate on levels that people either don't know how to monitor or don't even know exist (rootkits, etc.).
And it's not just that. Machine learning is increasingly being trusted to make decisions for us despite being the blackest of all boxes. Decisions like predictive policing (https://www.theverge.com/2018/2/27/17054740/palantir-predict...) that have serious impact on people's lives.
I'm personally less skeptical of technology itself and more skeptical of unqualified people misusing technology (whether that's using machine learning to arrive at bogus conclusions, leaving personal webcams open on the internet, downloading fishy attachments, or anything else).
IMO, including some minimal technical education (like the technological equivalent of home ec) would be a fine start.
I do what I get paid for which is generally to solve problems. I get annoyed when people less competent than me choose the solution I should implement, but if they are the ones paying me and they insist on doing it a certain way (after I have explained my opinion) I'll get on and do it anyway. You sound fairly high maintenance in acomparison.
I agree that the condition is real, but at some point we all have to take responsibility and control of our own careers.
Chances are, you were hired and qualified for the position you hold, with the understanding that there is room to grow within that position, and ideally, that is where you want to be your whole career.
Walking in to work everyday with a complete mastery over everything you do and write is a problem of its own.
For those odd jobs that are somewhere between support and development, calling yourself 'not a real programmer' is a ridiculous mentality to have. Being able to comb through a codebase to insert 5-10 lines of code that fix an issue is a delicate art. I know because I did it for 5 years. Editing black boxes is scary, especially in those instances where tests are scarce.
Embrace your role, and do the best you can. You will be happier for it.