My first real software development job involved me being thrown into the deep end to build a product for a startup, with very little guidance other than some blog posts on the Internet. I was learning to code for real as I went. I constantly thought I was probably making a ton of mistakes I didn't even know I was making. In hindsight I was, but it wasn't so bad.
What really kept me up at night was when I would learn something new and feel bad if I wasn't already practicing it. And by new, I mean new to me. One path I went down for a while was that our test coverage was pretty weak and I wasn't sure what to do about it. Our pace of development and quick changes made it seem really hard to get started with more than a few basic tests.
At some point I found out that some of these issues are basically common across all startup environments. It's normal to cut a few corners. And even if it's not ideal, it's basically what everybody in similar situations was also dealing with.
I ran into a similar situation with technical debt. How am I ever going to get out from underneath this mountain of wrong turns? I was lucky enough to attend a Sandi Metz talk where she described the situation I was in and described it as normal. It wasn't just me. And while her talk offered some solid solutions, the most helpful takeaway was the acknowledgement that technical debt is natural and normal.
I still feel like I deal with imposter syndrome all the time but it gets better. I'm quicker to acknowledge that I actually do know what I'm talking about sometimes and when I feel like I don't, chances are a lot of other people feel that way too.
I'm excited about how far I have come and I am excited that in a few years I will have progressed that much more. I'm not trying to learn every new thing, I'm just trying to keep expanding my general capabilities by taking on the task at hand, and trusting that that will make me a more confident and experienced developer over time.
I know it was a bit of a minor detail in your story, but I think what you mentioned about having "very little guidance other than some blog posts on the Internet" is actually really important – from what I've seen, a lot of other devs are in the same bucket. I think a lot of folks look at that situation and use it to defend their impostor-y feelings (“I can’t really code, I have to google everything”) when it’s really just the opposite and is, in fact, empowering (“I have strong problem solving skills, and with the amazing resources available on the web, I can figure out anything and make anything work.”).
Thank you so much for sharing :)
Oh yeah. I really try to put myself in this mindset when building out dev.to. Our need to go to the Internet void for help pervades every bit of our journey, not just for strictly technical questions and answers. That time someone online told me "don't worry, all startups kind of have codebases like that" was everything I needed to plow along.