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.
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.
If you talk about mastery in Java but exclude build tools like maven and gradle you are far from mastery in the Java ecosystem.
What’s making you leave Go lang?