HACKER Q&A
📣 profwalkstr

Which has more jobs: Python or Java+Kotlin? For a Go dev


I have the impression that only a small fraction of Python jobs are for general programming and backend (my area)... Data science (not my area) seems to be the majority of Python positions. Am I correct in my analysis? Java+Kotlin, on the other hand, rules the backend.

What I love about Python:

- Programmers culture of simplicity, simple solutions are always preferred (contrast that to Java, below)

- Fast development and iteration

- Easy debugging

- No need to deal with Maven or Gradle

What I hate about Python:

- The language is huge, a lot larger than Java, takes a lot more time and effort to master it. It's easy to get started programming in it, but I'm talking about mastering it, not intermediate-level knowledge of Python. And it keeps growing. It's going the way of C++.

- The GIL and lack of multithreading. There are several workarounds but they are still workarounds.

- Deployment (pip, venv, etc)

What I love about Java:

- The JVM

- The performance

- Easy deployments with JARs

- Language small enough to master, unlike Python which is huge (although it seems that Kotlin is also huge)

What I hate about Java:

- Cold start time

- Maven (which is its own beast)

- Gradle (which is its own beast)

- XML obsession

- forced OOP where it doesn't fit well

- Programmers culture of complexity, love for "design patterns", overengineering, "enterprise" stuff, getters and setters (public fields frowned upon), etc

(I know modern Java has gotten better and less enterprise-y but some points above still stand)

I have a feeling I'd be happier writing backends in Python instead of Java (or Kotlin), but the availability of jobs is a huge factor for me.

Background: software developer with >10 year experience, haven't touched Java since 2012 (so I'd need a big refresh and relearn it), have worked on simple Python scripts for automation (so I'd need to dive deeper and learn it more) and most of my work has been with Golang. Plus if I decide to go with Java I feel compelled to also learn Kotlin since it seems the future in the JVM world.


  👤 tgflynn Accepted Answer ✓
> The language is huge, a lot larger than Java, takes a lot more time and effort to master it.

Could you elaborate on why you believe that ?

I'm not especially up to date on either Python or Java but I've certainly never had the impression that Python was particularly "huge" or difficult to master. It does come with a comprehensive standard library but I'm not sure why that would count against the language itself.


👤 testbjjl
> The language is huge, a lot larger than Java, takes a lot more time and effort to master it. It's easy to get started programming in it, but I'm talking about mastering it, not intermediate-level knowledge of Python.

If you talk about mastery in Java but exclude build tools like maven and gradle you are far from mastery in the Java ecosystem.


👤 wizofaus
I do wonder what world people come from when they praise the performance of Java. But the "cold start" is definitely my biggest issue, compared to the C#/.NET world where source can be clean compiled and the server accepting requests within seconds - I'm guessing Python may be similar (esp. with no compile phase).

👤 mr90210
I’d go with Java if you are used to and want to keep building enterprise-like systems.

What’s making you leave Go lang?


👤 pacarvalho
Out of curiosity: Why are you considering only these two? Why not Ruby, Elixir, Rust, etc?

👤 umen
How does java equal performance ?