The Bias of First Language

Posted on Jun 19, 2025

The first programming language you learn programming with is something else. I mean really learning though. I started doing some simple stuff in cpp, c# and js (i know). But, I really learned how to code with Java. I chose Java for some pretty good reasons (by my logic at the time) that would proven to be just outdated and false. My expectations were just being a purely backend dev (my naive ass couldnt predict yet another recession).

Whatever, where were we? Yes, me learn Java, me lock in, me get job, right? HELL NAH. In my first real job, I tried do implement a backend with Java, specifically spring and all the bells and whistles you all know. Dependency management SUCKED, I couldn’t change the logic fast enough to meet the rapid prototyping expectations and overall, it was a bad experience. I am not going to throw shadow to Java nor Spring (and this is an article about why I won’t do that tbh), but my ass was really kicked with a good reality check.

My first instict was moving to a programming language that I was familiar enough with, and implement the stuff there. The language chosen was Python, and frameworks were Flask and FastAPI. They were PERFECT for what I was looking. That day, I realized that I (and many other jr developers) wouldn’t work in big tech that would require Spring, Java and other fancy business tools for some time.

(I am really off the track, I will get there I promise, but the details are really important, this really is the best storytelling choice that I could give to you dear reader)

Then I found Python’s faults and the rapid prototyping and “deploy fast break shit” approach bite me in the ass. That’s when I researched for new tools. Working in small tech has its advantages like YOU being the tech stack itself. My dear friend Cansu recommended Go, and not going to lie, it is really good for what it is, but, with a random decision, I decided to go full Rust route. Started with the book, this that, it was like my 4th attempt to learn Rust, and this time, I got the grasp of what borrow checker actually is, and yeah all was working. I fixed that messy python codebase with a full Rust rewrite and everything was working perfectly. Python is not a bad language, neither Rust nor Java.

But, even after writing a whole ass aplication is Rust, I couldn’t shake the feeling that I was doing something wrong with it. I could’ve just learned more Java and “git gud”, but I went with a way that I know it’s better for the application and my development style for so many reasons. Now, I don’t think I have those doubts because Java dominates the field, it basically comes down to familiarity. In terms of DSA, I am still the best in Java, and if you gave me any leetcode, I could do it in Java the best way, despite the fact that I didn’t touch any java code more than a year.

The first language you learned shapes you as a developer, for the better or the worse (usually worse due to those languages having toxic mindsets, such as strict oop & imperative standards), but we learn and grow. Not because we’re developers, because we’re people. Our relationships with our tools define who we are professionally, and being afraid to burn a bridge will harm only you and the industry. So, fuck that bias, and rewrite that app in Haskell.