I need to introduce myself first. I'm a programmer with approx. 10 years professional experiences building web applications using PHP as a main language, for the last 4 years I have been a lead developer at my company. I know Test Driven Development, design patterns, SOLID principles and some frameworks.
I was introduced to a Java company, who told me they wanted to hire me and I could learn Java and Spring during my work. They where impressed with my agile development skills and overal programming skills (like design patterns and TDD). So I decided to become Java certified, and I passed OCA 8 with 83% in march. Because I think PHP is a good language, but I want to become a better programmer every day and that means knowing multiple languages. I believe Java is reasonably safe to learn, since it is still very popular and it would be a good introduction to the JVM.
I was wondering what is the best strategy with the most benefits? Is it to learn for OCP (or Spring, or something else...), in my specific situation. I already picked up Spring and OCP 8 foundations in my spare time. I think Spring is a great framework and not really that hard.
I was wondering how relevant is OCP 8 for a daily Java job. For example I know I will use Hibernate ORM for the data layer, and not JDBC. So for now it is not efficient to learn JDBC.
To experienced Java developers: Which parts of OCP 8 or 11 do you need on a daily basis?
And what would you do if you would be in my situation?
For example: I'm especially wondering about Concurrency, while i know the basics, like synchronized and stuff, I do come across ReentrantLock for example, and I was wondering how relevant this is on a daily job?
I vision myself using Google a lot in the first few months, actually I still do that now and then while working with PHP. So which topics would be crucial to understand?
I would assume lambdas and functional interfaces would be something I need on a daily basis and I need to understand it fundamentally. What else?
Advice from people who switched from PHP to java would also be appreciated.
Update In my spare time I have created 4 simple Android apps. And I have a few java repositories where I use tools like Cucumber and jUnit for TDD/BDD, I have implemented thinks like Galton Board and Langton's ant just as an exercise and that was before I became OCA certified. So I'm confident that I will overcome most obstacles, but I really want to get ahead quickly and efficiently. And OCP in itself is a lot of work, I think I need approx. 12 months to fully prepare (while now having 3 months of preparation).