March 19, 2015

Why do many software engineers not like Java?

This is a Quora question, and the response which currently has more votes is so ignorant it hurts. Some of the comments are equally bad:

"Do you remember the rush of joy and accomplishment you felt when you deployed your first app online? If not(because you're a java programmer :P)  you may not understand what I'm saying.
For most people programming is about bringing communities closer, building synergy,  making life easy, maybe even helping save our planet. Java, I feel,  strongly discourages such creativity."

I program mostly in Java and I do feel a rush of joy when developing applications that help people (and I do deploy them online - with a single click, by the way); I've had great times working with colleagues doing Java code (like today); and I've never felt that Java stifled criativity (and I've seen Scala and Clojure).

This is common though. Java was never a cool language, and many software developers are driven by "fashion", believe it or not. For all its faults, Java is a language that works, and it would have never reached wide-spread adoption if it was as "bad" as some peopled wanted it to be.

Although the JVM is one of the strenghs of Java, the language itself has at least one feature that contributed to its current adoption: the language is really easy.

It is small, and in some ways restrictive. I think this is where the "creativity" argument comes from. However, this has a purpose: it also makes the language incredibly easy to read (the verbosity has also a role on this). Some people call it boring; people who do real programming work read more code than they write, and for them this is a blessing.

When I read responses like this one, my guess is that the person is not looking at programming as work and the language as a tool, but instead, as a way to "have fun", or as a "way of life". And by any means, Scala and Clojure are hands down way more "fun" than Java (although this is subjective, I also have a lot of fun with Java). But for large, multi-year, multi-person projects, my choice will most likely be Java (or languages with similar characteristics and support such as C#).

March 7, 2015

Hacknot - Book

I liked the book. Written ages ago, by Internet standard, it is a collection of essays on software, written from the point of view of a seasoned software developer. He explains, sometimes seriously, others sarcastically, what he does not like about the industry he works on.
I really enjoyed reading this book, even if I didn't agree with all of it. Probably it was because considerable space is dedicated to one of the great weaknesses of software developers: their infatuation with newness, fashion and coolness. People who are not programmers might think that programmers, when working, do rational and dispassionate decisions about what tools to use, and try to choose what is the best tool for the job. Nothing farthest from the truth.
In reality, programmers tend to gather around technologies the same way people gather around sport clubs or political parties. People choose tools because it has some "philosophy" that appeals to them; they try unproved, buggy technologies on their clients because they are new and cool; there are millions and millions of posts in the internet in quasi-religious discussions around technology that eventually boil down to "fanboyism".
(As a side-note, I was surprised by the positive view about academy, since usually it is the other way around when we hear from industry types. Instead of deriding academic practices as being out-of-touch with reality, he longed for some kind of systematic study and reproducible practices.)