You're not a Java Developer

You are not a “Java Developer”.
You are a Software Developer who is capable of writing software in Java.

You don’t want to hire people that call themselves “Java Developers”.
You want to hire devs that either have extensive knowledge in Java (and are also good software developers), or hire superb developers that don’t, but can close the gap quickly.

Java, or any other language for that matter, is just syntax. Learning a language is a long process, which consists of:

  • Understanding how to write good software with it
  • Understanding How the language works under the hood
  • Understanding What are the language’s limitations
  • Understanding which problems are good to solve with it, and more importantly - which aren’t.
  • Learning the eco-system: libraries, tooling, etc’

I can’t stress that enough.

The language does not define you. What does?

  • Your ability to make the right architectural decisions
  • Your ability to take responsibility for your work
  • Your ability to grasp new ideas
  • Your ability to learn new languages & technologies quickly
  • Your passion for software crafstmanship & understanding that you have to constantly learn in order to be good at it.

You don’t want to be an “X Developer”, because that means that you are only expected to know X. IMO, that means that you have only one tool in your toolbox which you use to solve every problem.

You want to learn new languages, new operation systems, new tools, new techniques.
Each one teaches you new ways to reason about & solve problems.

Java is very good language for a given set of problems. It’s a very bad language for others. Furthermore, Java has it’s own view on how to solve problems. Haskell, for example, look at & solves problems in a completely different way.

The “I’m an X Developer” kind of people look at (and reason about) problems from the wrong angle. Instead of looking at a problem and searching for the right tool to solve it, They use the tools they feel comfortable with in order to solve it.

Don’t get me wrong, being proficient in a specific domain (which might be a language and its ecosystem) is important, but the domain does not define you and you should not limit yourself to only one.

The way I see it, there is no such thing as a “Java Developer”, there’s a developer that is proficient in Java. This subtlety is important.