views:

586

answers:

9

Hi everyone! I'm wondering, how do I gain relevant professional experience on Java web programming? It seems to be the requirement for every job ad I see.

I currently work as a PHP programmer on a small company. I have no CS degree but I'm doing ok on my job. I spend my free time (and enjoy it) studying Java. After some time I learned Struts and built a small blog as an exercise. It's not hosted anywhere though. I'm eyeing on learning Spring next.

Anyway I'm thinking with my situation how do I gain experience? I got no projects to apply my knowledge on or even if I created sample projects would that be enough? Do I show them to a potential employer? I'm looking at the job requirements and most of it are intimidating. Do I really have to have experience on all those technologies? I'm really lost. It's hard getting in.

Anyway I'd appreciate any advice. Thanks in advance!

+6  A: 

Perhaps you could find an open source project you are interested in contributing to. Take the time to really learn the code base and the technologies used (the web framework, Spring, Hibernate, etc.). Actually contribute fixes and features. Become strongly conversant in the project goals, design, and implementation, and your meaningful contributions to the project.

landon9720
Jens Schauder
The easiest way to learn the code base, is to improve the documentation.
Thorbjørn Ravn Andersen
A: 

In your case, I would create a blog and post your Java experiences, link your project files(mediafire, rapidshare).

It's difficult to say that you learn Struts so quickly. Do you know how to use Tiles? Have you played with file upload, etc. It takes time to learn correctly a framework(limitations, advantages, drawback, etc.).

If you manage to learn and use "correctly" Struts+Spring+Hibernate, despite other things, I would say that you're almost ready to go. Beware, when learning the frameworks, also learn the core language features well.

John Doe
A: 

I got into the same situation with Java a few years ago. I was working a gig doing .Net programming. I kept up on Java by doing personal projects to keep my skills fresh. About a year into this gig a new project came up and I decided to use Java. So maybe in your current position you can find a way to sneak some java into your projects. Maybe build some utility apps to support your current projects.

I think the key here is, and you are well on your way, is to keep you skill set sharp and keep working with it.

Good luck.

OhioDude
I would recommend against sneaking. Bosses don't like that :)
Thorbjørn Ravn Andersen
+1  A: 

As landon9720 suggested, finding an open source project might be a good idea. However, to benefit from it, you may have to be able to show your potential employer that you've contributed something significant, and not just one-liner patches or such.

You could also build some more applications like the blog you did - Complete (or even half-complete) apps are good for showing understanding of frameworks and concepts involved.

And yes, of course you show them to the employer! What else would you do? Bring a laptop to job interviews if you have one so you can demo them in case you get the opportunity.

This is actually a problem I've been working on myself as well. Java is a common requirement for jobs here as well. They often list a ton of Java frameworks and buzzwords, but I don't think it really matters if you don't know all of them - knowing some common ones should be enough, then you should be able to learn new ones quickly based on your existing exprience (remember to tell the employer you're a quick learner, assuming you are)

If you're not very strong in Java, I'd also suggest highlighting other programming concepts. If you know things like unit-testing, test driven development, refactoring, continuous integration etc. it's always a good idea to mention them, as languages can be learned more easily than good programming styles/concepts.

Jani Hartikainen
+2  A: 

Web experience with Java is a many-headed monster :)

It goes all the way from writing small servlets sending out HTML code, up to gigantic JEE servers spreading over several machines talking with databases and other bigthings.

If you have PHP experience and did a Struts application that is fine, because it is one of the more tricky libraries to get working properly. I would suggest that you start with learning the Java language thoroughly and pass the Sun Certified Java Programmer test, simply because it proves to your future employer that you can learn it well enough to pass, and you WILL need the knowledge you get. You may want to go the extra mile but the Web Developer test is harder, and may not pay off as much as having a mentor while doing real work would.

If you mention some things you like doing, I might be able to suggest productive ways to learn :)

SCJP: http://www.sun.com/training/certification/java/scjp.xml

Thorbjørn Ravn Andersen
A: 

If you don't want to join an open source project, which can be difficult for a beginner, try the following:

  • find a forum for java web development (obviously stackoverflow would be one option)
  • start answering questions.

That is at least for me an important way to improve my skills.

Jens Schauder
A: 

Check online for some tutorials on Java servlets and JavaFX.

Partial
+1  A: 

You can try to get an internship in a company taht does web stuff. this way you can meet people who work on web projects and exchange knowledge. also you can demonstrate taht you are ambitious to get into java web development. as the previous posts mentionend it, it's a good idea to create a private project and demo it.

Chris
A: 

I think you're already doing the most important thing - writing Java code. This is definitely relevant experience and when you go on interviews you should certainly mention it to your employer and describe your experiences. Personally, I don't see how this experience differs much from "work" experience - especially for an entry level position.

Another good idea mentioned is to blog about your experience with Java. You don't necessarily need to write a bunch of earth shattering observations, just relate your experiences and impressions of the Java technologies you're experimenting with. Again, this would be a good thing to point employers to in order to show your passion and proficiency.

Finally, in my opinion, language simply doesn't matter much. Once you know a language or 2, you can pick up others fairly quickly. It's definitely more important to learn what goes into making efficient, scalable, and maintainable programs.... concepts like automated builds, unit testing, design patterns, how to load test and profile your code, user interaction design, etc. These skills will make you productive in any environment.

Vinnie