I create software for fun and money.

I'm too good to learn Java

Mon, Mar 13 2023

Or at least, that's what I thought for my first three years of programming.

Before knowing much about the business side of IT, I only wanted to learn cool, beloved languages like Python, Lisp, or Haskell.

I used to watch videos and read articles about why object-oriented languages are inferior to functional ones, why I should avoid Java and C++ like the plague, and why I should instead spend my time learning the cool, smart, well-designed languages (oh, and never mind that no company ever uses them).

It is possible that those videos and articles are in some sense right. Perhaps OOP is inferior to FP. Perhaps PHP is ill-conceived and unsafe by design. Perhaps C++ really is a convoluted mess of conflicting ideas.

But as time went on, I slowly realized that I was too quick to dismiss those languages. I came to realize that no language upon which much of the global software infrastructure relies should be disposed of so readily.

I mean, the dumbest person on the C++ committee is likely smarter than me and at least five times as experienced a programmer.

Who was I to think I got nothing to gain by learning those languages just because they were deemed subpar by some purist blogger? As Bjarne Stroustrup puts it:

"There are only two kinds of languages: the ones people complain about and the ones nobody uses."

Now don't get me wrong. Sure, there's utility in learning Haskell, OCaml, or Ada. And I'm sure there's at least some validity in the criticism OOP and Java get.

But listen.

If you are like me, at the beginning of your software engineering career, eagerly consuming whatever programming-related content the YouTube algorithm throws at you... Don't be too quick to dismiss the languages the whole world uses to build software that runs on airplanes, handles your bank transactions, or calculates the premium on some company's reinsurance policy.

Sure, that software might not be written in the coolest language out there, but it's software that people use.

It's software that some guy named Greg got paid for and could, therefore, afford that new paragliding gear. It's software that got Greg's manager the promotion she wanted. And most importantly, it's software that Anne from accounting uses daily to automate at least some of the invoicing she has to do.

And yeah, it's probably built with some nearly-obsolete version of Java, and it's uncool and downright boring. It doesn't use any monads or tail-recursion or macros.

But again.

It's written in a language that the whole world uses, and I would argue that learning that language is not as complete a waste of time as some people on the Internet would have you believe.