I started in this industry after being a hobbyist and having no formal CS background - I studied neuroscience and was well on my way to an academic career when I decided (with the assistance of a friend who from then on became my career sherpa) I should take my hobby into a fulltime job. I was speedily doing code challenges, TA'ing classes, running my thesis experiments, and writing my thesis while simultaneously applying to every job I could find.
After over 100 submissions with either rejections or no responses, I finally had an interview! Some time after, I was plopped into my first software job in a new city, and had no idea what I was doing. I struggled with imposter syndrome for almost a year - how did I conquer this? Sometimes it's hard to really think about, and sometimes I wonder if I truly did ever conquer it. A few different things, in my mind, helped me with this:
Realizing this is a very meritocratic industry, despite how HR departments treat things. This becomes most clear when other developers start coming to you with questions, and you can comfortably answer them. This comes with the next point:
PRACTICE. I always felt like (and still do) that I have to prove something because I don't have a degree. I do a lot of coding and reading about coding in my free time - it helps that it's a passion of mine, but I make sure to maintain balance with other things in my life, such as exercise, pleasure reading, etc. But this gets you the knowledge to start answering questions your teammates you have, and as you do this more and more often (it'll come as you practice, because the questions will naturally seem like easy ones to you), your own confidence will build along with the confidence others have in you. It's a nice positive feedback loop.
Work on actual projects for your practice - yes you should take online courses, yes you should do coding practice, but you should contribute to open source, build projects that are interesting to you, etc. This skill transfers over - and I actually have a story about an instance in which this happened to me just over the last week, but it's a long one that should probably be its own post.
Jump into the deep end. This is always a leap of faith - once you get past the drowning feeling, you'll find yourself swimming. Challenge yourself - take the initiative to rewrite your company's testing procedures, learn big data processing by building a big data app, deploy your first single page app, do some embedded programming - then break it all or have others break it, and fix it. And break it. And fix it. It will then become routine and old hat - then comes the knowledge, the confidence, and it starts replacing that feeling of being an imposter.
I think the key takeaway here is building confidence, and constantly pushing your limits. Failure doesn't exist - you will always learn something and become better, and as you build that understanding and the confidence I talked about above, you'll welcome 'failure' and success: failure is learning, success is demonstrating what you learned.
As for my personal example - I've been in the industry for 3 years now, am building out my own startup (remember when I said to jump into the deep end?), and am loving every minute of it.
Thank you for this thoughtful response. I also don't have a CS degree (in fact, I have a BFA), so that part especially hit home for me! Contributing to an open source project is one of those things that has been on my dev "bucket list" for a while, but I just haven't worked up the nerve to do – it's reassuring to hear it was such a positive experience for you. Your points about failure are also completely on point, although it sure can be hard to see that when you're in the middle of it! I think it's really an important perspective to have.
Best of luck with your startup!!
Thank you so much! Most OSS projects are very welcoming to people of all experience levels, so jump right in, I'm sure your PRs will sail right through review :)
These are very wise words Kyle! Best of luck :)