You can't get a job if you don't have enough experience, but how do you get an experience, if no one is willing to give you one? This is a vicious cycle, and you need to break it by offering what the companies are looking for -- Experience
If the market is hot, a well-rounded candidate with a decent resume and little or no experience could easily walk into an interview. But, during a difficult job market with economic meltdowns, one needs to have a highly effective resume with at least 1- 2 year experience or more. So, how do you beat this catch-22 situation?
Try for voluntary work through a number of different avenues discussed in Job Hunting Tips. Smaller companies, charitable organizations, and community services are more keen to get people on a voluntary basis. Voluntary work shows commitment and initiative, even if it is not mentally stimulating. It can increase your industry knowledge, give you the much needed hands-on experience, enhance your soft skills, and give you something to write on your resume without any prolonged gap of employment. Since the task of applying for a paid full-time position can take up considerable time, you could start working voluntarily 2-3 days a week, even weekends if required. Even if it does not involve Java/JEE, provided you can gain any other sought-after technical skills like SQL, XML, domain knowledge, and software development processes and methodologies that are easily transferable to your future dream job.
Now, on a more positive note, while gaining hands-on experience and learning on the job, you will likely uncover paid opportunities by being an excellent contributor with enthusiasm and personal growth or by networking with similar professionals you would not have met otherwise. Voluntary work is generally a win/win situation for both the employer and the employee. Even though larger brand name organizations may look more impressive on your resume and can give you a greater chance of potential internal paid opportunities, smaller companies are more likely to offer you a voluntary work, and also in general, you will not only get to learn more things faster, but also your efforts will get noticed and recognized quicker. You can even try contacting your local charities for any potential openings in IT. Don't be too concerned about the size or brand name of the organization, but pay more attention to type of skills, experience, and capabilities you will be gaining. Brand name or popularity may take you to the interview stage, but cannot guarantee success in interviews without the right knowledge, skills, capabilities, and experience. If you properly use the guidelines in my Java/JEE Resume Companion, you can draw on your other strengths and achievements to look more impressive on your resume than to just rely on brand name or popularity.
Contribute to open-source projects to gain much needed hands-on experience in sought-after technologies and frameworks. The choices are plenty ranging from widely used products such as NetBeans, Eclipse, GlassFish, etc to smaller hobby projects, which have been open-sourced by other developers. Pick the one depending on your level of experience, interest, and motivation. If your motivation is to learn Spring & Hibernate, then pick a project that uses both. How do you benefit from open-source project contributions?
- Gives you a pretty good big picture of different technologies, tools and frameworks used in a typical application. A typical Java application uses Eclipse, NetBeans, or similar IDE, Java, JUnit, Log4j, Ant, Maven2, Spring, Hibernate, Apache commons library, etc. Try to analyze and understand how all these pieces fit together.
- You get to read a lot of code and learn from it. You can not only learn the best practices, but also can learn to identify potential issues.
- Write your own small programs just to learn the language and libraries (APIs) used in the open source projects. For example, Java APIs and Apache commons library that has very useful utility methods such as StringUtils, CollectionUtils, MapUtils, BeanComparator, Validate, etc. Observe the coding and formatting standards.
- learn how to use the tools like CVS, SVN, Eclipse, Maven2, Net Beans, etc.
- Experiment by making changes to your local copy of the code. Try going through JEE deployment descriptors, Spring, and Hibernate configuration files to understand how different pieces are wired up.
Self-taught projects and tutorials to build up confidence and acquire some level of experience with the sought-after technologies and frameworks. Some open-source projects can be a bit overwhelming for some beginners. So, choose carefully. Alternatively, you could take up some self-taught projects by using sought-after technologies and frameworks. While this can be an easier option, it is not easy to be disciplined and looks less impressive on your resume compared to open-source contribution. Having said that, this option is better than not doing anything at all. It at least, shows commitment and initiative with some level of familiarity with popular technologies and frameworks. Improve credibility by providing your URL or mentioning availability of your source code. What is even better is that, if your self-taught project is based on a creative idea and if you think it can be useful to others, you can open-source it or even try selling it.
Each approach has its own pros and cons. If you are a beginner and looking for work, voluntary work will not only give you the experience employers are looking for, but also can open doors for paid job opportunities. If you are already in an employment, and either not mentally challenged or not acquiring the required skills and experience, try contributing to open-source projects. If you are not in much luck with first two options, and sitting idly or you have a bright idea, then try working on a self-taught project, while looking for a paid job.