Here are three articles that explain how to use CDI. I am posting them as much for me as anyone who wants to learn about CDI
CDI Dependency Injection
CDI Dependency Injection – Tutorial II – Annotation Processing and Plugins – Java EE
CDI AOP Tutorial: Java Standard Method Interception Tutorial – Java EE
This just happened to me recently. I have been looking for a job actively for the last six months. One of the major questions I had were if I wanted to stay in a government contractor firm or go full time in a private company. With contracting, one knows when is the last day. On the other hand, I know there is no plan to dump me by a certain date. That may be too harsh but most contracting firms just do not have the money to keep an employee that is not billing to some account besides overhead.
The Real Problem
One of the great things about being a contractor is that about every five years or so, one is doing something different. It is exciting and one learns a lot. The problem with that is you get a Senior Developer with four or three years of this and that. I have become a jack-of-all-trades-and-a-master-of-none developer. See where this is going? I get turned down by companies that want ten years experience on a certain technology. I simply do not have that kind of experience. The only companies that get excited about that kind of experience were really only contracting companies with “long term” contracts of six months plus. I am working on a five year contract that just got a six month extension and I have benefits with that job. Can you give me that kind of job? The answer was “No.”
After talking with one of the many recruiters that I had. I really enjoyed working with him. One of the best recruiters I have ever had. No, he did not land me my new job but I could not have done it without him. If you are in the market and know Java, please contact me and I will get you his information. If he cannot help, he will know someone that does. We worked out a strategy to convince managers that I was worth the risk. I distilled that talk into the following things:
- I pick up technology quick – As a contractor, when I get into a new contract, I am already behind. If I do not understand what is going on, the customer will not be happy. If the customer is not happy, they may start asking for someone else. Except for four to six months, I have been doing this my entire career so I learn quick. For example, when I started learning Primefaces, I made a custom drag and drop interface in a week. Ask another developer how hard that is.
- I have seen what does not work – My varied experience is a benefit here. I have seen what does and does not work. One may not be doing it the best way possible. Ask me during the interview how I would do things given the situation.
- I am cheaper than one thinks – Sure I am asking for a lot but I have never been in a job where software development was my only thing to do. I have stood up and maintained continuous integration, bug tracking, wiki and software repository servers. Start doing the math and I am getting to be pretty cheap.
- I have passion – I love software development. I like learning the “problem space” and developing a solution to the problem. I am so eager to learn that I will try different technologies to see what works. No, I do not have ten years in Java EE, that is because I was fulfilling requirements in the best way possible.
Moral of the Story
In the end, I decided to take a job with another government contractor. Everything about the job felt right. However, if one is looking for a Java developer and finds a resume that has a lot of different technologies but not enough of one to meet your experience requirements, do not dump it. Give him or her a call. That might be the one that fits the position better than one hoped.