> with most colleagues and acquaintances doing the bare minimum to get by.
The best way to level your skills up fast as a junior developer is to work somewhere where most of your coworkers are skilled and passionate. It sounds like you're not in one of those places (which is normal -- unfortunately most developers aren't). If changing workplaces isn't an option, then your second-best alternative is to get involved with an active, well-run open source project with high code quality[1]. Generally corporate-sponsored projects work best, because they'll have one or more people explicitly in charge of helping community members learn the ropes and be productive, but other large, cohesive projects could work too.
[1]: One of the best things I've done for my career was to get heavily involved with the React Native community a few years ago. I'm not currently using RN directly, but through contributing to it I learned a great deal about software engineering and project management, and it was a nice resume item that helped me land my next job.
It's maybe a bit early for me (experience < 1y, please pardon what might be a naive wall of text) to tackle these questions, but having a degree from another field, landing a job where people are passionate is going to be hard with my little experience.
Open-source projects seem like a great idea, especially for someone like myself who doesn't have many creative ideas, although I finally found one a few weeks ago (fullfilling my own needs as no website seem to do what I'm thinking of atm).
It's rather niche though, and I could probably do it on my own but I don't know what I could learn that would be useful. I would probably keep using the things I already know if no-one more experienced can suggest appropriate tools (kinda related to the top post about over-engineering).
My CS culture is not that great for the moment (working on it) so what should I learn ? Everything moves so fast. It's also related to your argument : how to find open source projects that might interest me and where I could be useful, as I don't even know them in the first place.
I also slowly discover what I would like to work on (mostly enjoying working with data/databases and also algorithms although I'm probably a bit weak there for the moment, but I really enjoyed doing google's hash code this year). Reading other people's experiences helps of course, but it's still difficult to find the right questions I should ask myself, so the answers are even less precise.
>landing a job where people are passionate is going to be hard with my little experience.
They're out there. You might consider some of the tech companies that are large enough to have intern programs. Even if you don't want to be an intern, it signals a willingness to take on entry-level people.
Also, I say "tech companies" just because when the tech is the product, that tends to produce a more ambitious tech culture than places where it's just a cost of doing business.
Shameless plug: You might consider HomeAway if you're in the right geo area. We take interns, and have hired a few new grads/low-experience devs into my teams recently who are working out swimmingly. But I'm sure there are many other companies that would work.
At your stage, just find anything that motivates you to continue working, and the knowledge will naturally come. A personal project that scratches an itch for you like you mentioned is a great option. Don't worry too much about doing things the "right" way for now. Sometimes doing things the "wrong" way when you're starting out can actually work to your advantage, because when you see a pattern in the future that solves a problem more elegantly you'll have a better understanding of what makes it a good idea!
Do what you love and the right teachers will knock on your door when you need them; you might not recognize them as such but everything you need is already provided, should you choose the narrow road. Outside of following your own passion and intuition, there is no general purpose recipe.
I'm not a junior developer and I recently changed jobs, partly also because I haven't had skilled and passionate coworkers.
I was actually hired to bring more passion and skill - so I didn't expect milk and honey at the new company. I did expect, however, a few like-minded persons, but have yet to discover them.
Also, my current life-situation doesn't allow me to work on open-source projects, although I would very much enjoy doing that.
The best way to level your skills up fast as a junior developer is to work somewhere where most of your coworkers are skilled and passionate. It sounds like you're not in one of those places (which is normal -- unfortunately most developers aren't). If changing workplaces isn't an option, then your second-best alternative is to get involved with an active, well-run open source project with high code quality[1]. Generally corporate-sponsored projects work best, because they'll have one or more people explicitly in charge of helping community members learn the ropes and be productive, but other large, cohesive projects could work too.
[1]: One of the best things I've done for my career was to get heavily involved with the React Native community a few years ago. I'm not currently using RN directly, but through contributing to it I learned a great deal about software engineering and project management, and it was a nice resume item that helped me land my next job.