I have been a Java developer for more than 10 years and the last 4 years I have been focused on micro services architecture with Spring boot, hibernate and Oracle for a consultancy company where we have to deal with the full release process until we put the code in production, every month approximately.
Last month I applied to a selection process for a company who has an on-line application (not a consultancy) and they were looking for Senior developers in Java. After some interviews with the recruiter and a team lead I started the second phase, which was a code challenge. I spent the weekend implementing the solutions, trying to cover the acceptance criteria, building tests and trying to apply all my advanced knowledge about java 8 and Spring Framework.
I am not entirely satisfied with the final solution but I think I did a good job. I passed to the next phase which was a live coding with some members of the company. We reviewed the code and they were asking me questions about the followed approach and about java. Besides my nerves (blocking my mind) I realised that I am not able to answer basic questions about Java, things like: "how does the garbage collector work"; "differences between ArrayList and LinkedList"; "Why is it required to implement Equals() and HashCode()", etc. They had also proposed to use java inheritance to create a baseDTO and despite being able to surf The Internet I was too nervous that I failed, and therefore I was out of the process.
Now I have some doubts about what to do with my future. Some days I think that I should become a Java certified and review all the java stuff while I am preparing for the exam. But other days I think it is better to have some rest of Java and try something new, like Ruby/Rails or Golang, which will allow me to have different perspective about the ways of implementing a solution.
Top comments (10)
That's cool. It's great that you want to improve. First of all, don't be discouraged. Interviews are always stressful and you may get asked questions that you're not ready for. It doesn't mean that your work isn't good. In fact, it sounds like you've been doing pretty well, especially since you passed to the next stage.
As for how to improve, both options you mentioned sound good. Learning something new and different gives you a different perspective, as you mentioned. But also going deeper into Java would be good too.
Since you're asking for an opinion, I would say:
Hope that helps :)
Thanks a lot, it really helps! I read some books related to spring framework and I should do the same with Java, as you proposed. I will look for a book similar to your suggestion but for Java.
Regarding point two, I know some techniques related to clean code and design patterns and I always have them in mind when I review code, but it’s true that reading the concepts again will always help.
As you said, as Java is what I usually use in my day to day, it might be better to go deeper with it and maybe give a chance to functional programming in Java.
I think the decision to go deep or learn something new depends on what direction you decide to take your career. If you want to go to a Java company for your next job, then by all means study Java deeper. But if you want to explore companies that use Ruby or Python, then you should study those languages.
If I were in your situation, I'll study other programming languages so I can widen the net on the companies that I can do interviews with.
That’s a good point. I can increase the number of companies to apply. I will consider it, thanks!
Continuing with Java or not, that's something I can't tell you. What I can tell you is that Ruby is great language, and it's easy to learn especially if you know Java. Ruby will make you happy when you write code, that's for sure, but I don't think you should break with Java. Take a look about Ruby for Java developers, make some research about that, you'll find interesting articles.
Honestly, learning Ruby is quite tentative, i have read very good things about it. But my concern is how difficult it will be to find a position for Ruby developer and if the recruiters will consider me as a Senior or Junior developer, having so little experience using it.
I will take a look about Ruby for Java developer, I'm sure it will be interesting.
Thanks for the comment.
I can highly recommend going for Go for these reasons:
Understand each line of code that you write will be a good approach to go more deep in the language. Design patterns, clean code, solid will help you to improve.
Yes, that's clearly something I need to do. I have this knowledge in one forgotten place inside my memory and I must recover them and put them in the line of fire.
Thanks.
Change is good but you might lose some benefits that comes with the senior keyword. If nothing is affected then, I'll gladly change focus