When speaking of the beginning of a Java programmer's professional career, everything is often presented in a gloomy light. To beginners, it may seem that breaking into the market is incredibly difficult. No matter how many current job vacancies you look at, you'll find that any position requires experience. Sometimes it seems that employers expect even junior Java developers to have at least several years of work experience, not to mention supernatural theoretical knowledge once in a while.
But how do you get the experience required for real employment if nobody wants to hire coders without experience? Is it a vicious circle? No, just one of the difficulties typical when starting a career, but this is one that is not so difficult to overcome.
In this article, we've collected several failproof ways to solve the problem of insufficient practical experience.
1. Independent projects
Let's start with the simpler and largely obvious tips. One of the best ways to gain practical experience in Java or any other programming language is to work on independent or pet projects. For example, you can join an open source project on Github.
Don't bother looking for complicated projects or projects whose implementation requires a novel approach or specialized knowledge. All that a Java developer with little or no experience needs is opportunities to practice: the more, the better. As your basic skills improve, you can move on to increasingly complex projects.
Although job descriptions often include a requirement for two or three years of experience with a language, this is not the only criterion. Companies are also looking for people who can work with their own code and other people's code. They want people who know how to use tools. And employers often pay attention to so-called "soft skills".
These are, above all, common sense, the ability to work well with others, good communication skills, and emotional intelligence. To cultivate all this, you need experience working on real projects with real problems and real deadlines, together with other coders and experts.
In the eyes of an employer, soft skills, the ability to learn, and ambition can sometimes make up for a lack of specialized technical knowledge and a thin theoretical foundation. Moreover, even if a job applicant is required to know a certain technology that inexperienced Java developers generally do not know, employers are likely to be more interested if there are several projects listed on his or her resume, along with a description of the experience gained and lessons learned while working on those projects.
2. Personal projects
This tip may well be useful not only to beginners, but also to rather experienced Java professionals.
"Personal projects" means projects that a Java coder works on as a hobby, to develop professional skills, out of interest, and/or just for fun, not for the purpose of making money. When reviewing resumes, many employers focus on programmers' own "pet projects". Why? Because having pet projects indicates that a person really loves programming and is actually striving for professional growth — not merely talking about it.
Here's what Oren Eini, CEO of Hibernating Rhinos LTD, which develops database infrastructure solutions, has to say:
"Put simply, we are looking for a .NET developer and one of the most important things that we look for is passion. In general, we have found that people that care and are interested in what they are doing tend to do other stuff rather than just their work assignments.
In other words, they have their own pet projects, it can be a personal site, a project for a friend, or just some code written to get familiar with some technology.
When you tell me that your only projects outside of work are 5+ years old, that is a bad indication for us."
It couldn't be said any better.
3. Freelancing offers limitless scope for "leveling-up" and gaining experience
Just note that it is very difficult for a novice programmer to break into freelance websites. But you can try. Working as a freelancer can be an excellent intermediate step on the path from a complete novice Java developer to a confident junior Java developer who has gained experience and has "powered-up" his or her skills.
The difference between freelancing and the work of a full-time Java developer may seem small. But you can actually find many more promising freelancing opportunities for an inexperienced junior Java developer. That's because freelancers are often hired for one-time or short-term work on certain projects.
For example, they are assigned tasks that are too small to justify searching for a full-time permanent employee. Such microprojects are sometimes referred to as "gigs".
The project itself may be an experiment or may require highly specialized skills. Be that as it may, when hiring freelancers, employers are less demanding and careful, since they carry significantly lower financial risks. As a result, a junior Java developer has better chances of getting his or her first paid job while freelancing.
Freelancers are often hired by small businesses who need a programmer's help to solve relatively simple problems. Or by entrepreneurs working on some innovative idea with a limited budget. Or even by employees of large IT companies, who in their free time are developing their own pet projects or ideas. In a word, there are a lot of possibilities, but in most cases it will be a little temporary work with clearly defined objectives. And this is just what the doctor ordered for an inexperienced junior Java developer who needs to upgrade his or her resume.
4. Two heads are better than one. Development on a team
If working alone on projects, whether your own pet projects or freelancing jobs, isn't happening for some reason, you can try another option — development as a part of a team of developers who are at about the same level. Collaboration and problem-solving not only help you learn and progress faster, but also solve the problem of motivation, which is acute for many novice programmers, especially when working at home.
5. More reading on this topic: