I often think about the learning pyramid and I find it lines up with my personal experiences.
The experiences which have made me better at programming are when I’m teaching others or when I’ve been working on projects in my spare time (practicing).
For example whilst I was still at university I decided to make a Discord chatbot and it really helped me build on what I’d already been taught.
Other than that I like reading coding standards documents, like this.
I would say I’m a very ideals-driven person as well. I had hoped to get a job with a company whose values aligned with my own upon graduating.
My experience was that it was really difficult getting my first job when I was being fussy with who I was sending my applications to. This is despite having both an undergraduate and postgraduate degree with the highest possible grades and also industry experience.
Eventually I gave in and started sending applications to all sorts of companies and took the first job I got offered. I’m still early in my career and I’m still working with this company.
Honestly I think for a first job it’s just worth taking whatever comes your way if it will offer you valuable experience. Then you can always apply for other jobs whilst you’re earning money and experience. That’s my plan anyway.
Other than that, I would recommend checking out this website: https://80000hours.org/