I'll give you some senior advice too, which is probably a bit of a different direction than what you expect. In regards to this:
> However, I have some strong FOMO about not being able to learn much technical stuff from my peers or seniors. I am trying my best to learn and pick things up on my own, learning design principles, getting code reviews from ChatGPT, etc. But even then, I'm afraid I am not producing the software to the highest standards of the industry since we don't have any rigorous cross-checking, and might be missing out on a lot of learning.
On having the right mentors:
This sucks, and I think the rest of the comments have good advice (look to open source, read more, etc.). I'll also say, think of the upsides. You have a lot of autonomy. You have a lot of latitude to implement your ideas. You have the ability to ship something and see it fail, learn from that, and improve it.
At some of the big companies, there are so many talented people hungry for good jobs or empire building that it’s really hard to have your ideas implemented.
On high-tech quality:
I spent many years working at Airbnb and Amazon. I have friends at Facebook and Google. The honest truth is that all of these places have lots of bad code.
The entire industry is held together by duct tape and glue. If Google (clear tech leader of the 2000s-2010s) and Airbnb (Tech-darling built in a post-AWS environment) both have "bad" code, where is there "good" code?
1) Companies that succeed solve business problems and don't focus on fixing tech debt that doesn’t fundamentally matter to customers.
2) Real businesses are complex and don't fit nicely into good design patterns. Every big refactor and rearchitecture I saw at Airbnb started with good design but got complicated once they hit reality.
3) Good engineers deliver good results despite bad code. Take the time to deeply understand your tech stack. Figure out which parts of the code are brittle and figure out ways to improve them. Make the case to your business partners that fixing things will improve developer time, reduce mistakes, and save them money.
And you’re in your first job, not your last job. Take the time to learn the ropes, and when you feel like you've outgrown your role, find a new one. There’s always something to learn.
Real Q is, do you care about oil and gas? Probably answer is no. This sucks too.
The skills you gain from autonomy might translate into, you have a good idea for a new business, you ask your rich boss for a $25k-$100k check investing in your new thing when you leave. I assume it will not be in oil and gas because nobody really cares about mineral extraction sincerely.
This deal sounds nice but in reality there are millions of people your age who get a $25k-$100k check every year from their parents to do something they care about, as opposed to some boring ass business.
Your instincts to find mentors are good. The hard truth is you will have to quit to find them, you have correctly ascertained that you are hitting a ceiling, and developing a relationship with these guys is kind of worthless.
This is the real value of “Google” and “Airbnb:” they’re so big and they’re household names, even if you worked on some bullshit meaningless thing there, you can get a lot of people to pay attention to the new thing you want to do that you are actually excited about. The skills you develop will not be useful for getting hired at these companies, unfortunately that is a huge crapshoot right now, and you’d have to do a career reset by taking grad school or something, because I cannot emphasize enough how little people care about mineral extraction.
> However, I have some strong FOMO about not being able to learn much technical stuff from my peers or seniors. I am trying my best to learn and pick things up on my own, learning design principles, getting code reviews from ChatGPT, etc. But even then, I'm afraid I am not producing the software to the highest standards of the industry since we don't have any rigorous cross-checking, and might be missing out on a lot of learning.
On having the right mentors:
This sucks, and I think the rest of the comments have good advice (look to open source, read more, etc.). I'll also say, think of the upsides. You have a lot of autonomy. You have a lot of latitude to implement your ideas. You have the ability to ship something and see it fail, learn from that, and improve it.
At some of the big companies, there are so many talented people hungry for good jobs or empire building that it’s really hard to have your ideas implemented.
On high-tech quality:
I spent many years working at Airbnb and Amazon. I have friends at Facebook and Google. The honest truth is that all of these places have lots of bad code. The entire industry is held together by duct tape and glue. If Google (clear tech leader of the 2000s-2010s) and Airbnb (Tech-darling built in a post-AWS environment) both have "bad" code, where is there "good" code?
1) Companies that succeed solve business problems and don't focus on fixing tech debt that doesn’t fundamentally matter to customers.
2) Real businesses are complex and don't fit nicely into good design patterns. Every big refactor and rearchitecture I saw at Airbnb started with good design but got complicated once they hit reality.
3) Good engineers deliver good results despite bad code. Take the time to deeply understand your tech stack. Figure out which parts of the code are brittle and figure out ways to improve them. Make the case to your business partners that fixing things will improve developer time, reduce mistakes, and save them money.
And you’re in your first job, not your last job. Take the time to learn the ropes, and when you feel like you've outgrown your role, find a new one. There’s always something to learn.