From Bootcamps to College Classes — Python is everywhere
While we can argue ad nauseam that taking on a computer science degree should involve more than just learning how to code in a specific language, many courses and classes I’ve encountered and heard about from others tend to center around a specific language. Learning to think in code is a different matter — unless you’re taking Harvard’s Extension School’s CS50x class.
Java isn’t dead…but it’s not easy either
Let’s get real — Java is only easy if you know what you’re doing. Not everyone comes out with a computer science degree nowadays, and many tend to get thrown in with just the barebones basics. You need to be adaptable with the limited knowledge that you have, and have the ability to pick things up quickly if you want to survive and ship ’em tickets.
The new generation of developers tends to be a mixed group of those who are self-taught, Bootcamp graduates, and those that took a three-year degree in computer science — which is much broader and generalist than many people realize. The point is, everyone is entering the industry as junior developers at different levels. There is no standardization involved — just basically what you can show in your interview to prove that you can do the things you say you can do.
Originally, Java was the go-to language of choice by educators to teach because it was common in the systems and applications that students may encounter after they graduate. Teaching how to think in code was something that was an add-on. You learned about arrays, classes, and object-oriented ideas, in addition to a few other foundational things. If you go down the computer science route, then you get to hit topics like operating systems and data structures. How these things are applicable in the real work environment is a different matter.
As more students opt for shorter pathways into the industry, Bootcamps and courses try to be as useful as possible by focusing on giving you skills that are supposed to make you job-ready. In comparison to Java, Python is easy. There are no brackets. It is a minimal setup. You write something and it will most likely work. In addition to this, it has the traditional feel of being a programming language because it can live in the backend and infrastructure side without the additional bells and whistles.
Python is easy but does not mean it is simple. It has the potential to support complex logic whilst emphasizing readability and long-term maintainability. Java, in contrast, runs with a lot of historical baggage — mostly in the form of legacy code — that can discourage even the most enthusiastic junior developer.
Supported by the Cloud, pushed by the new generation of devs
Don’t get me wrong — learning Java is still relevant. There are still a ton of Java-related jobs in the industry. Android development involves Java (even though Google is now pushing Kotlin). Java is supported on all Cloud platforms and is always one of the options available for backend and infrastructure development. In short, Java is established.
However, the speed of development is often much slower when compared to Python due to the way Java works. Python can be as big, small, or lightweight as you need it to be. It can be a stand-alone little script that runs on a microservice or a fully-fledged API backend with implemented sessions and token systems.
As more and more developers enter the industry with Python as their first language, it is becoming more prevalent for organizations and startups to find themselves using Python code. There are fewer legacies to deal with and as we all know, everyone likes a greenfield kind of project.
And if existing projects already exist, the amount of technical debt is only a few generations of developers old and not entire decades to unravel.
Here is a little comic I encountered on LinkedIn that basically sums up the experiences of software development for startups and established organizations that sometimes struggles to move away from whatever system they are operating.
Java is sometimes seen as the equivalent of the big bad dragon as per the above picture. But that is not through any fault of its own. Over time, Python might become the big bad dragon too — depending on how badly the code is written.
Java got replaced by Python as the starter language because Python is much easier to pick up in a short amount of time — especially for beginners learning to code. It doesn’t mean that the beginner may never touch or learn Java at all. Rather, Python is more the preferred choice as a stepping stone into the world of software development because it lets newbies focus on the process of software creation and logical reasoning. Java can be overwhelming, if not discouraging, for those who are just trying to get things to work.
I have nothing against Java but the industry shift towards Python is not accidental. We’re in an age where ‘hard work’ is not the same as ‘smart work’. If there is a path of least resistance, then there’s a high chance that developers will latch on and use it.
Java, along with its complexities and various legacies, easily falls into the ‘hard work’ category. Python is ‘smart work’ because it can produce solutions quickly and effectively. The point of code is to materialize ideas and when it comes to startups and keeping up with the competition, speed is everything.
At the end of the day, organizations tend to stick with what they know. What they know is often defined by the cohort of developers currently employed and their combined knowledge pool. A group of Bootcamp graduates that learned how to code in Python is more likely to suggest a Python solution to the boss. This is the same for a group of legacy code owners who may originally be employed to maintain and improve on existing Java-based applications — they are more likely to suggest Java-based solutions because that is their expertise.