Job for self-taught junior java developer?
What is the best way for a self-taught Java developer without degree in computer science to get hands on the real project to gain experience?
My suggestion would be to try your hands on some open source projects. There are usually projects out there that are welcoming of fresh devs. Github would be the best place to start. Think of it as your personal portfolio.
You can then show your work off to potential employers which might help land you a job.
Tony recommends the following next steps:
I'll also add, that any project is better than no projects. Any little idea you have that could be a project; spin up a project in your github account and take a crack at it. You don't have to finish it. You don't have to publish it. It can be ugly, simple, whatever. Just simply the act of doing the project will teach you a lot and will show interviewers that you are motivated and someone who wants to learn. That desire to learn is very very sought after in employees and can help you land positions that you would normally struggle to be noticed for.
I was going to recommend exactly the same thing as Tony: open-source Java projects are plentiful, and I've never yet seen one that didn't have more open bugs than people to fix them. For example, Hadoop (a very popular and high-profile project on which I worked briefly in a company environment) still has a few bugs open that I filed more than half a decade ago. Some may not be relevant anymore, but at least one compression bug (which finally got some love a few months ago) definitely is.
Other high-profile Java projects include Kafka and Samza (both stream-processing, big data projects); I happen to work with the teams that created both of them. There are many, many others, however.
One thing to keep in mind (but another, related opportunity to help and gain visibility) is that the code in these projects frequently outruns the documentation. In other words, it can be a bit difficult to get things working in the first place, even with "official" sample code. Yes, it worked great when it was contributed, but the underlying bits have changed since then, and maybe it hasn't been tested and/or updated lately. So trying things out, asking questions online when they don't work as intended, and then adding or fixing documentation can be a great way to help out from the very beginning. And then once you have things working for yourself, you can start to tweak the examples, add more complexity, and then start looking at bugs no one seems to be working on. Diagnosing bugs is one of the most important skills a software engineer can have, but if it's not a critical, breaks-everybody bug, it may remain open for months or years without attention from the main devs.
By the way, if you submit a bugfix and get review feedback that you've taken a bad approach or should refactor something to share more code or whatever, don't take it too hard even if the tone is a little harsh (which, sadly, happens a lot online). Persistence and patience are two more traits every software engineer should cultivate. ;-)
Greg recommends the following next steps:
1- Download an IDE (Eclipse - https://www.eclipse.org/downloads/) or other IDEs (IntelliJ - https://www.jetbrains.com/idea/)
2- Here you find many projects, which can be useful -
3- This is a good place to explore - https://www.codecademy.com/learn/learn-java
4- While learning, you could look at some questions and different approaches to solve the questions in terms of complexity, space and performance. https://www.geeksforgeeks.org/java-how-to-start-learning-java/
Good Luck and All the best.