For someone to even be called a junior developer that person needs to have couple of small projects finished and and at least one medium. What do I mean by small and medium project? Small project could be considered if only one or two technologies are involved (for example structural programming in web-browser or modeling and creating SQL for database). Medium project is something that is actually useful and includes several technologies (ie. small web application with data saving on backend, completely finished simple game, IoT app that measures single property of something in real world). When these requirements are filled any person could easily get a job and could be called a developer. From then on a person should see what technologies are their passion and choose jobs that will allow them to improve those skills. You definitely always want to choose jobs with challenging projects where you constantly need to learn new things. For example In case of web development that would be proper data modelling and handling concurrency and asynchronicity (since web apps are suited for many users at once). In gaming those skills would be to squeeze every bit out of low level to make your game run as smoothly as possible on cheaper hardware,... What you definitely want to stay away from are jobs that make you (mostly) do repetitive things that don't advance your knowledge. As a rule of thumb - if you can listen a podcast in background and you can follow it while doing a job properly - it is not challenging enough :) Also what is very important is not to forget to work on your soft skills. Whether you are a people person or not, every project benefits if its workers are organized as a team and not as a group of lone wolves. This is why every project needs to also be a classroom in some sense where seniors teach juniors about best practices and what technologies are relevant both to the project and their personal growth, while juniors need to challenge the ideas of seniors if they are a bit outdated and there is something new out there. Essentially you want a job where you are forced to constantly learn and apply new knowledge, where you learn how to learn and self-improve, where you learn how to interact with community (stack/overflow, forums,...) but also with team-mates and where the code quality is not compromised by the deadlines. Please bear in mind that these things are not so easy to find especially in the beginning of your job so it is good to take chances. Working on bad projects in the beginning does bring some value as it builds character and gives you experience so that in the future you can easily avoid them. Also sometimes you can influence and turn bad project into a good one, with the help of team-mates and project owners who are open to criticism. Just don't try to fix lost causes - if you are clearly seeing that you are not progressing after ~6 months - don't feel bad to change the project and/or job. Work hard but more importantly - work smart :)