Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Possible Duplicate:
Best way for a senior programmer to switch languages/environments in next job?

I have about 15 years of IT experience in IT Security and Networking. I am looking for a career change and I really would like to take a stab at Java programming. I have a CS degree but it's been about 5 years since my last class. I have intermediate experience in Perl (that is still current) and I am also trying to learn Python (although it has taken a back seat to Java). I picked up Sam's Teach Yourself Java in 24 Hours as a refresher to my Java classes I took in school. I am half way through it and luckily it's all coming back to me. I also have HTML and some SQL experience.

The reason I chose Java and not Perl is because a.) I liked programming in Java in school and b.) Java seems to be in high demand these days. I wouldn't mind being a Perl programmer but it seems like all of the jobs have Perl listed as "nice to have" experience and not a requirement.

I guess my question is what kind of jobs should I be applying for? I am thinking I only have enough knowledge for a beginner/intern type jobs but it's going to be almost impossible for me (personally) to take a job that only makes 1/3 of what I'm making now ($90k). Will I be laughed at if I attempt to apply for "real" programming jobs or is there such a demand for Java programmers now that someone will be willing to give me a chance?

Thank you for any advice. I would really like to make this change within the next 6 months.

share|improve this question

marked as duplicate by Anna Lear Dec 13 '11 at 4:10

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

1  
    
Anything that claims it can teach you X in 24 hours is lying! –  Jungle Hunter Oct 13 '11 at 3:13
add comment

4 Answers

Java is one of those languages where if you want to do it professionally, then you need to know more than the language ....

In addition to working on learning the language, invest heavily in learning the libraries and commonly used frameworks and containers.

I would also look into applications of various design patterns. Because Java's OOP features and structures are very explicit (unlike say, Python's) then they become a bigger part of complexity management and working with other programmers.

Get your hands on some real-code in an Open Source project and take a look. Beginners code is easy to spot ... the hallmarks are various degrees of code-smell, not understanding the APIs available and not correctly structuring your code to be maintainable and to support graceful refactoring.

Much of this is learned with experience, and I am sure you already know alot of the above. With Java, more than some languages, there is more than the language to learn.

Recommended Reads:
Code Complete
Design Patterns: Elements of reusable Object-Oriented Software
and popular books on Web/WebServices, Concurrency, Struts ...

share|improve this answer
    
I recently transitioned to a job that's primarily Java, after having only briefly used the language 12 years ago. I was frightened due to all of the tales like the one you tell. Within a matter of a couple of weeks I was doing just fine - sure, sometimes I need to go to google for 5 minutes but it's not rocket science. The whole "It's the libraries & frameworks" mantra that's replaced the "OMG it's the syntax!" over the last few years is complete BS. –  geoffjentry Nov 6 '11 at 15:32
    
@geoffjentry - Not sure I would describe my answer as a scare story! –  Aiden Bell Nov 28 '11 at 22:48
    
I didn't mean to imply that you did, specifically. It's just that the tale you tell is a common one and was somewhat intimidating. I'd always felt that anyone with solid fundamentals could pick up a different language fairly competently quickly, but everyone claimed things are different in today's world. As I noted in my comment, IMO that emphasis is a bit overblown as I really didn't find much difficulty in transitioning to Java, and I also wasn't coming from the C# nor C++ world (hadn't used C++ in nearly a decade, never used C#). –  geoffjentry Nov 29 '11 at 2:39
add comment

It would seem that the main thing you are missing is Java experience and (maybe) experience in building production quality applications.

There are two ways to get these:

  • Take a low level position and learn on the job. Your degree + experience in other IT topics should mean that you have a bit of an edge over raw graduates, but you won't be as productive as a 5+ year Java developer should you should expect that salary.

  • Get involved with some worthy open source Java project or start a project of your own. Build your Java programming skills by coding real stuff ... making sure that you pick up experience with J2EE and other framework technologies that are likely to land you a job.

I would really like to make this change within the next 6 months.

I think you may need to plan for a longer term transition than that ... especially if you want / need a good starting salary.

share|improve this answer
add comment

IT and security is a good secure career path. Most companies don't outsource their core IT and security functions. And if you have 15 years of it, you are probably working on the parts that cannot be outsourced. As soon as you switch to programming, you are competing against hordes of programmers from India, Vietnam, Argentina, Romania, and other popular software outsourcing places. Their presence in your new (programming) job market will depress your wages.

If you are a senior person on one domain (e.g. IT and security), it is hard to break into a Java shop as a senior. It is also hard to break in as a junior because you're old, and young people are perceived to be cheaper and more malleable.

Do you really want to learn how to program in Java? Keep your current secure prosperous job. Then use your spare time to write Java applications. (This is the time which you would be spending on unpaid overtime if you were working somewhere as a junior programmer). Learn what it takes to use Java, J2EE, Ant, Maven, svn/git, SQL, as well as popular Java libraries. Deploy your applications to a Java hosting platform (e.g. heroku.com), and see what you learn.

If you still want to work as a Java developer, then you'll go in with useful knowledge on how to build something beyond what they teach you in the syntax lessons of those "24 hour" books.

I started as an embedded systems programmer using C/C++, and ended up doing non-coding jobs (management & architecture) for too many years. I got back into coding because nobody in my job market no longer wants managers and architects who don't code. I tried Java and .Net and failed. I tried Ruby/Rails and succeeded. I can tell you that learning the language syntax is the least of your worries. Learning the technology domain of building web applications is a lot more than mere language syntax. And learning the domain of knowledge in which my applications solve problems was hard too.

share|improve this answer
add comment
  • First learn or re-learn Java, then look for a new job programming in Java. Even an entry-level position will require some degree of proficiency, and the better you know what you're doing the more competitive you'll be.

  • Look for ways to incorporate some Java into your current job. Are there any repetitive tasks that you could automate? Small tools that could help you do your current job better? Reports that could be generated automatically? Adding some informal programming to your current job could help you do your current job better, make your work more interesting, add a marketable skill to your CV, and earn the same salary that you do now.

  • When you're ready to change jobs, look for ways to leverage the experience you already have. There are plenty of Java programmers out there, but not many who have the additional skills and experience that you have. If you can show off some of the tools you've already written to help you do your job, even better.

share|improve this answer
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.