Investing in a new programming language is something few professionals take lightly. It’s a serious time investment and a leap of faith.
Would you learn a well-established language that lives in a massive ecosystem, or embrace a new language that is not production-ready but could yield a high return?
My answer will be revealed in a moment.
But first, a story…
In 2012, I was looking at taking PHP out of my life. I was fighting against the interpreter and the code I was writing, probably because I was a bad developer.
Around that time, I had a short-lived professional encounter with C#. Good, clean language, but my relationship with Microsoft had already end up in divorce in 2006, after years of “independent studies” sponsored by Microsoft vilifying Linux. Feeling like a puppet in the hands of a large corporation, I was done with C# too, because all roads were leading to Microsoft.
Finding Go
I began researching. I narrowed down Go(lang) as a better candidate. I started investing my time studying it.
The language simplicity, the team, the openness, the language spec in nine pages, all created a compelling case for someone on a Linux box that could only react with disgust when looking at Java code.
Finally I had a simple, powerful language I could put my weekends and holidays on, a time investment that would pay off.
Trouble began
Eventually I joined a company for a new project and urgently needed a back-end language. Go wasn’t cutting it. It wasn’t able to integrate with the systems I needed. Apache Cassandra drivers? Sorry, no community.
I spent some time evaluating Dart, another interesting language. Same barriers, no drivers, tiny community.
So, I took the plunge and embraced Java. I’ll explain why.
Java changed my life
As a junior and mid-level developer I was drawn to lightweight code editors (or “cute syntax highlighters” as I jokingly call them), and shiny new languages, with a disregard for ecosystem maturity and my customers’ or employer’s needs.
I just wanted a lot of speed and cool toys.
This time, I had to change. And put other people first: I was in a tiny startup, bootstrapping the whole IT infrastructure and tooling. I had to get it right.
After overcoming the typical “ugly”, “verbose”, “boring”, “bloated” reactions (which Java developers secretly know it’s all false), in just a few days, everything started to change.
All the trouble and fighting was gone. I was quiet, focused, mindful, delivering.
Java provided everything I needed. Java was all about structure, small methods, well documented clean code, tooling you can trust.
It took a while, but eventually I learned how to structure my code files nicely as controllers, Data Transfer Objects (DTOs), mappers, interfaces, repositories, services, enums, entities, exceptions.
I adopted IntelliJ IDEA. Later I learned to love Spring Boot and Lambdas.
The feeling of finally being a professional software developer stayed with me to this day.
Here’s the truth about Java:
If we react emotionally against Java, most likely, we’ve never used it in a professional context, or we haven’t used it at all.
Anecdotal evidence, but after rewriting a relatively small piece of Go code in Java, I was surprised when I realised Java was not being verbose at all. The rewrite had a few less lines than my original Go code.
We just name variables, methods and classes in a more readable way. It reads more like English and makes the code self-explanatory.
Let’s be honest and mention a drawback: Java is slower at compiling, and that affects developer productivity.
But enough of my love affair with Java.
COVID times and Python
In 2021 I was “funployed” with my new data-intensive project.
Initially I used Node.js / JavaScript, but soon things started to feel like my PHP times.
I was struggling and fighting again — against the language, libraries and toolset: either I was bad at it, or I couldn’t trust my tools.
For a Java developer used to static typing, everything was falling apart. JavaScript seemed to suck at number-crunching. Those crazy comparison operators… the true / false vs. truthy / falsy thing… and the community was not data-oriented.
So… Python was the way.
Nice to use, interpreted, very slow, a bit quirky (pseudo-private methods?…), but good enough, so I’ve taken my project to a very successful outcome.
But something was still missing and Python would not be the one for my production battlefield: Looking at my background in Web, Java and Javascript, I needed a compiled, statically typed, fast language that could take the place of C, C++, and Go in my toolbox.
Back into language research…
Since 2014, both Go and Dart didn’t live up to their promises.
Go added generics. Last time I checked, the language specification had grown to 90 pages. So the simplicity selling point wasn’t there anymore.
The joke comment I frequently make is:
Eventually, all languages become Java.
Not that Java doesn’t steal good ideas from other languages… for example, they’re introducing variable deconstruction.
But why would I adopt Go if I know Java already?
Nowadays Java builds into binaries without the JVM, it provides massive concurrency with Virtual Threads (akin to Node.js), it has an amazing Reactive stack, and it gets updates all the time.
The Dart community eventually pivoted to mobile development (Flutter) after an initial backlash from the web community around their proposal of a new web development toolkit, basically seen as an attempt to replace JavaScript in the browser.
So I’ve been all over the place looking for “The Language”: Zig, C++, Rust, so many out there… trying to extract some meaning from TIOBE Index and PYPL Index.
According to Stack Overflow’s yearly surveys, Rust has emerged as the most loved language by developers.
But Rust is complex and imposes a steep learning curve, which potentially means increased costs for organisations to adopt, even though it can decrease costs by shipping less bugs to production due to its safeguards.
So, what’s the alternative?
The answer could be a language that brings the good stuff from Go, the good stuff from Rust, and the good stuff from C, offers an inexpensive learning stage, and is not subjected to large corporations’ agendas.
In my opinion, that’s V, bearing in mind the community is tiny compared to Java, Python and JavaScript.
This sometimes means trouble for larger companies recruiting developers, but some smaller companies are OK to take the risk.
V is rising
I’ve never been so excited by a new programming language.
After hours reading V’s documentation, I thought: “The V language will take over the world”.
It ticks all the boxes.
As a hobby, I strongly recommend the V language (vlang).
And I will recommend V for production when the toolset and community mature.
V can be used for both front-end and back-end development.
V focuses on building maintainable software. It attempts to bring the best from other languages (see comparison / details).
It already has a good IntelliJ IDEA plugin.
With more than 600 GitHub contributors, an impressive range of capabilities, a refreshing simplicity, for those who need a low-level language that feels like a very-high-level language, V could be the perfect match.
The documentation can be studied in two days.
Also, it automatically translates between C and V, and compiles itself in one second with zero library dependencies.
V is still under the radar, but getting stronger as the community grows around VOSCA, the association created to steer the language development.
Message to the future
To the earthlings living in 2035:
It’s December, 2023. When you read this message in 2035, I hope that:
- V is the most widely used and loved programming language in the world;
- V is still simple;
- V still compiles fast;
- V is still not dominated by a large corporation.
Best of luck, V!