> Git might be a source of frustration to many developers (it certainly is for me!), but it’s rare that people admit it on their resume ...
That statement doesn't make a lot of sense. The "dislike" tag is understood to be the list of things you don't want to work with (as in, "don't contact me about jobs if the job involves using xxxx tool/tech/language"). Resumes don't generally have a section for "sometimes frustrating/tricky stuff that I don't even question that I'll be using."
You just can't ignore the alternatives (or lack thereof) to any of the "disliked" stuff in the article.
The running theme in the strong dislikes are languages and tech that were once popular but have been surpassed by newer, easier to use or work with alternatives. That may happen one day to git, but it would seem a long way off.
There's also a running theme of the dislikes often representing working with older legacy code. So the listed languages might just be the devs' proxy for disliking working with legacy projects (vba strikes me as an example of this, since it was hugely popular but no one is really using it in anything new).
The article defines "like" vs "dislike" in terms of what developers list as preferences on their jobs profile. For example, Perl is the most "disliked" language; what that really means is that developers have actively listed it as a job opportunity they don't want.
The analysis shows that there is a correlation between a language's "liked-ness" and its growth as a tag on Stack Overflow. Correlation-is-not-causation and all that, though it seems that what developers will take for a job is similar to what they actively use. This, of course, is rather cyclic.
> For example, Perl is the most "disliked" language; what that really means is that developers have actively listed it as a job opportunity they don't want.
In the specific case of Perl, this makes the analysis highly skewed. I liked
using Perl (I no longer write in it because my current team already knew
Python well and not even a bit of Perl), but almost all the job ads around me
that mention Perl come from big, old corporations. I wouldn't want to maintain
a corporate internal tool written in Perl, because Perl in such an environment
means a very old and overgrown script (virtually all newer are written in
Python) in a complex and complicated system that cannot be updated to modern
architectural standards, and Perl from '90s and early '00s has a history of
being used mainly by dilettantes who couldn't tell global and local variables
apart.
We have rewritten a web app that used CGI.pm and ported it to Mojolicious. It also uses JavaScript on the front end. I'll choose Perl any day over JavaScript/ES/Node.js. There is still innovation going on in the Perl5 community, like Mojolicious, Promises, Moo, MOP, Moxie etc. Most tooling is sane and you don't end up with competing package managers, a plethora of build tools, transpilers, frameworks and an endless chain of dependencies.
That's a good point - I'd never list COBOL, or APL or any number of other languages I'd never want to program in, on my jobs profile because I've never, ever been approached for jobs in those languages (and if I did, it'd be a novelty to be approached about it). Java, on the other hand, I might list because it's a major, popular language that I personally dislike working in. Doesn't mean I consider Java worse than COBOL.
Twenty years ago I practically got a job offer merely by asking a question on Usenet about a particular piece of test equipment.
IIRC it was some HP 'bed-of-nails' beast for programmatically testing circuit boards. You would setting pins as inputs/outputs, analog or digital, give pulse or waveform patterns, etc.
It sounds really cool, but this thing was horrendous to use, you had to run it on a specialized HP-UX box with a Motif interface, and it was not very pleasant.
But I was surprised that by asking one random question on some HP or Motif usenet forum (which I don't believe I could get anybody to answer), some tech company was practically offering me a job to use this system for their own test workflow.
I refused, but it did give me some confidence knowing I had some obscure job skills I could fall back on if needed.
Earlier in my career we moved to Ruby over PHP because Ruby was "cool" and PHP was not. Now it is interesting to see them lumped in the same group. Incidentally, PHP has improved greatly because of the rivalry with Ruby because the competition inspired PHP and PHP Frameworks to step up their game in the early 2000s / 2010s.
Python's continued popularity surprises me. While I like Python and it is good for data science I don't understand why people use it for websites. The PHP and Ruby ecosystems are far more mature if you consider ease of use and if you are going for performance, Go and Java based frameworks are better. Even in the data world, I kind of like R over Python.
I'm also glad to see Javascript highly ranked. I was under the impression that Node.js in particular was going the way of PHP and Ruby. But personally I like working with Node.
Edit: I wonder how much of this is due to popularity too. PHP is insanely widely used. Which attracts more entry level coders than a language that is broadly used for specialty / high performance / niche languages.
> Python's continued popularity surprises me. While I like Python and it is good for data science I don't understand why people use it for websites. The PHP and Ruby ecosystems are far more mature
My guess is a big part of it is Python’s “one right, preferably obvious way to do it” principle.
Rails does this “convention over configuration” thing which really means “anything could come from anywhere”. View not rendering? Literally anything could be going wrong anywhere in your stack. Some convention somewhere is tripping you up.
The “one right way” principle in Python mitigates this chaos. You can at least reason about what’s “pythony” when you’re thinking about it. It helps that the ecosystem is smaller too.
The Ruby community, and JavaScript to an even greater degree, are more focused on individual preferences, which vary greatly. So you have to wonder... is this a “modern”, transpiling, framework-thinking JavaScript developer, or a functional, small is beautiful, package-oriented one? Or something else entirely?
Python wins because they value consistency over the bleeding edge of architecture innovation. This is consequently also why they lose.
> Do not underestimate the power of make a "full stack development" with just one language.
unfortunately we already have that language and to use it you need to transpile... It will always be Ryby/js, py/js, php/js until web assembly becomes a thing I guess.
PHP, Ruby, Node.js all have excellent tooling for making command line applications as well as websites. While none of them have focused much on having a GUI, projects do exist.
Ruby in particular is very widely used as a system automation language.
I thought Ruby is/was mostly known for the Rail framework.
I know that both Chef and Puppet are written in Ruby, but is there any particular reason why Ruby is better as configuration management/system automation language?
> Python's continued popularity surprises me. While I like Python and it is good for data science I don't understand why people use it for websites. The PHP and Ruby ecosystems are far more mature if you consider ease of use and if you are going for performance, Go and Java based frameworks are better. Even in the data world, I kind of like R over Python.
Python is very easy to use and often targeted towards non-programmers. You'll find a lot of tutorials online that don't require any previous knowledge of programming, different to other languages. At the same time, Python is popular with many full-time programmers which gives you the feeling that you learn a professional language very easily.
I personally think it's nice for scripts that only run once or need to be adapted continuously, which is often the case in data analysis. I switched from R to Python, I found function naming in R so confusing that I constantly had to Google basics even after years of using it.
> Python is very easy to use and often targeted towards non-programmers.
Maybe that is my problem is I am coming at it as someone who knew 10 programming languages before even looking at Python. But my wife is trying to learn Python right now and she's not a code (she's an biomedical engineer) and I can't say her experience learning it has gone any smoother than it would have with some of the other languages.
> I switched from R to Python
R suffers from the same problem as PHP. The standard library is too large, does too much, and grew organically. So you have things like inconsistant naming. I do agree that is horribly frustrating about R.
Python and Ruby are very similar in most respects, they have pretty similar availability of easy web frameworks, and Python's been around a bit longer and has more chance of being something any given organisation is already using. If you were choosing purely for web dev then maybe Ruby would have a slight edge, but if someone in the company already uses Python for a sysadmin script or a data science project then that's probably enough to tip the scales.
> Django is at least as mature as any Ruby web framework and more performant besides.
I've only worked on one Django project and I inherited it from another team so it could be because the coders on it originally were no good but my experience with Django was the opposite. You're milage may vary, maybe I'll give it another shot someday.
Completely agree with your comment, I remember a time where Laravel's goal was to catch up with RoR. Both these frameworks are a pleasure to work with as opposed to Django in my opinion.
I remember writing a cross-platform library for web authentication that worked with signed cookies. You would log in through a PHP form and then I wrote modules to check the cookie and refresh it in just about every language used in web development in the early 2000s. That included PHP, Perl, Java, C#, Cold Fusion, and others.
Of all the authentication modules, the one in Perl was the shortest and sweetest.
I think of it a bit like some huge regexs, you only arrive at the final point by building up to it in small (succinct) steps, and if you need to revisit it later, the old grey decompiler has to work harder.
Perl coders I knew prided themselves on illegible but powerful one liners in a smug/elitist way ("Ha! You can't read that?? That'd be three lines in C. Ha idiot."). I prefer readable code.
There might be a bias in this analysis. The programming languages listed in the no-no list are the one people dislike AND know. I can't say if I dislike a language if I don't know it. This is visible with r language.
Yeah, but a lot of people have passing familiarity with perl or have at least been tainted by the sheer number of "I hate perl" sentiments around the web.
The list as presented is obviously biased. When I see that fewer people dislike MATLAB than C#... I don't know what to say to that.
But a lot of us who either can't write Perl or can only write really bad Perl have still read enough Perl to have good reasons to dislike it.
Though I'll concede that with languages like Perl there is probably some degree of hipster-tendencies to actively disliking Perl in that Perl in many circles are seen as a prototypical example of "crufty old language".
The most fascinating section of this, in my opinion, is the "Rivalries" at the bottom that show the relationship between liking X and disliking Y.
However, what isn't clear to me is whether this is one-directional or a blended bi-directional rivalry. For example, the third item from the bottom is iOS : Android. Is this the coefficient of liking iOS and disliking Android or is it a coefficient of liking either and disliking the other? Can anyone clarify that?
OP author here: the rivalries there are directional, "if you liked X, you probably disliked Y", but not vice versa. (One thing I find interesting is that most rivalries really are directional: you see git users disliking svn, but not svn users disliking git).
Perhaps there's a way I could make that clearer in the post!
> OP author here: the rivalries there are directional, "if you liked X, you probably disliked Y", but not vice versa. (One thing I find interesting is that most rivalries really are directional: you see git users disliking svn, but not svn users disliking git).
Awesome, thank you! I agree that the direction of the rivalry is an interesting part of it.
I just noticed that "backend : frontend" and "frontend : backend" both appear on the chart, which implicitly answered my question.
Perhaps another sentence or two that highlights this would help readers understand the directional nature of the chart. For example: These rivalries are directional, which demonstrates how rivalries are often asymmetrical. For example, as seen in the results chart, those who like backend have more distaste for frontend than vice-versa.
Yeah. I first observed this and was confused because the phi coefficient should be symmetric---I understood what's going on only after proof-reading the description (again).
backend : frontend and the reverse are both present, that implies unidirectional relationship.
I like how illustrative it is in the general context of rivalries: I observed that people are most negative towards their neighbors, as opposed to those who are very different.
Perhaps it's because similar agents need to compete for similar resources?
> One tag that stands out is the functional language Clojure; almost nobody expresses dislike for it, but it’s still among the most rapidly shrinking (based on question visits, it only started shrinking in the last year or so)
That's an interesting observation. Having learned Clojure this year without asking a single StackOverflow question, I don't think this means Clojure is shrinking. I suspect that Clojure's crazy good stability means no new questions are really required for core things.
Also, Clojure tends to not be anyone's first language, if Clojure Conj is any indication. Most Clojure developers I've ever met have been programming for > 10 years. Experienced programmers don't tend to ask as many "how do I do this in language X" questions.
>Having learned Clojure this year without asking a single StackOverflow question, I don't think this means Clojure is shrinking. I suspect that Clojure's crazy good stability means no new questions are really required for core things.
That seems like wishful thinking. If new people are picking up the language there should be noob questions on StackOverflow no matter how stable the language is.
It's also shrinking on Github participation, which I don't think is good. Are you saying that Clojure is growing, but it's growing with people who feel like giving back less?
Meanwhile, Scala is skyrocketing. I would imagine that this is because Clojure somehow missed the big data race.
I'm not making a judgement call about whether Clojure is growing or shrinking. Just saying that StackOverflow isn't a good gauge for the reasons I listed.
Github is a better gauge. I wasn't aware that it was trending downward. My impression was more that it was slowly accreting instead of following a sharp curve, which is just fine by me.
I would guess that most active dislike of a language comes from being forced to use it for a job.
Some of the languages with really low negatives are probably only there because they are rarely used commercially so no one is being forced into using them.
JavaScript's standing is pretty amazing considering how widely used it is commercially and that everyone is forced to use it.
R is the most liked! I have to say that over the past 5 years the language has really just been getting better and better.
I know a lot of people have a bad taste with R but I blame the bad non-programmers that used the language but Hadley Wickham and his tidyverse has turned this DSL into one of the best languages to use for its purpose.
R is one of those languages that the only people using are the ones who seek it out. Same with lots of the trendy new languages in the "well liked" category.
The disliked languages are weighted towards older ones where people have inherited codebases over the years and been asked to maintain them. That hit Perl especially hard I think.
I probably have written more lines of R than any other language, but I wouldn't say I like it. It is just so useful because of how much stuff is implemented in it already. From time to time I get fed up with it and try to use Python or Julia, but while I like both better as languages, there is always something I would have to spend a week implementing that there already exists an R package for, so I return.
I have talked with several people who were in your steps and then I mentioned that "hidden" inside of R is a scheme influenced part of the language. I ended up learning Racket, a fork from Scheme, and I have to say my enjoyment of R has grown, especially using it within the tidyverse family.
Least disliked — big difference. What I see in the graph is that the dislike measured here seems to be a combination of two factors:
1. The badness of the language is palpable and well-understood.
2. It is easy to imagine that a different language could have been chosen for the task at hand.
For instance, Groovy and Go are about equally disliked. I'm not a huge Go fan, but I would expect it to be preferred as a language over Groovy. However, since it's a new language being used mostly for new systems, it's a language of choice rather than necessity. A programmer working around an annoying wart of Go can find himself thinking that his life would have been easier if only someone had been smart enough to choose language X instead. People using Groovy are working on legacy systems involving Grails, where the language choice was in the far past and may have been a good one at the time, or Gradle, where people may feel that at least Groovy is better than XML.
The same reasoning explains why Bash and Perl are on opposite extreme ends of the chart. Bash is unavoidable; Perl is as avoidable as cargo pants.
People tagging Like or Dislike on their programming language are usually comparing it to another one. So programmers will "like" Apache Groovy compared to Java, "dislike" Perl compared to Bash, or "dislike" Go compared to C++.
There's so much of it out there that you don't really have to program in it as much as copy-paste in it. Your expectations probably would have been met or exceeded if people still had to actually write things in it.
Misused? How so? Are you referring to those that give advice with "just import lodash and use ___" or "you can do this easily in jQuery like _____"?
I find that a lot of the JS answers are pretty good, and there are many 2-3+ year old answers that are edited with ES6 updates to the answer, which is pretty amazing/nice.
And opened the field of programming to many. Delphi, PHP and VB/VBA were the first languages of many of my friends back then who then went on to study computer sciences. They were easy to understand and to create basic functionalities, despite the shortcomings.
The next step is obviously to take the most-disliked technologies and combine them into something so bad it's good, like "the most unwanted music" (https://www.youtube.com/watch?v=-gPuH1yeZ08).
I love javascript, it's basically the language I like working in the most after python, yet I expected it to be near the top of the disliked tags. Good, I guess, even if it does appear anyway.
Loving that postgresql, docker and python are so uniformly liked.
The backend/frontend rivalries I found hilarious for some reason.
This would definitely not be my top, I guess someone's top is mostly influenced by their own path.
I would definitely not list Ruby as a language I wouldn't work with, it reads nicely and is very close to Python for me. Perl and PHP are somehow similar and reads nicely as well imo.
What I would have put up there are things like Lips and Scheme that are just a succession of parenthesis.
Probably Java would be the #1 thing I would refuse to work with.
Putting examples in the entry fields in the questionnaire seems like a leading question to me. When it says, "Tech you prefer not to work with: e.g., javascript, c#, php", one is immediately going to thing, "Well of course people hate javascript! So do I" as opposed to letting the respondent decide for themselves which they least prefer.
I'm going to guess that's because using Delphi today means "legacy Win32 project I deeply resent maintaining".
The general principle of a programmable RAD with a nice IDE and a visual designer is still very popular. I'd wager Delphi would also appear on a list of "most-missed" languages, because using Delphi back then meant a pretty nice developer experience.
I have to admit I never learned Lisp or any of its descendants. Its prefix operators seem nice because they can make your code more concise, but its endless parentheses make the language literally looks like ())
There's also an age effect. If you're maintaining a Delphi or VB or PHP codebase now, you're probably working on an older system, which means you spend a lot of time stepping on rakes that someone left in the code ten years ago. If you're writing something in Elm, it can't be more than a couple of years old, and you're probably still in the green-field honeymoon period.
This emotional response probably transfers onto the languages themselves, which means any language in decline will naturally attract resentment.
If someone to dislike a programming language, they have usually been exposed to a codebase written it. Very few dislike something they have never encountered. That means that the language must have been popular at least at some point if a large number of people dislike it. That may either be because it is no longer considered modern (e.g. Fortran, Cobol) or different communities are split in their view for some reason (PHP, Visual basic).
I would say a language has to be popular to be disliked. That rust and kotlin score so low on the dislike-scale could be because people love it but probably also because the rest wouldn't consider it. If a language is used by few, there's no real reason to dislike it.
At least that's the case for me. I can say that I dislike PHP because I used it in the past. I couldn't say the same about rust.
Sad to see coffeescript so disliked. It has some bad choices, like the time-bomb-scoping, but it was a promising era for programming language syntax when coffeescript was in fashion.
But I guess most programming is mindless IDE-bingo where the least-common-denominator churns megabyte after megabyte of same repeating crap badly solving the same repeating problems, so it doesn't really matter that the syntax is in your face hiding the logic all the time.
2nd chart seems more driven by fashion/geek-cred than intrinsic language qualities.
Never met a Delphi expert who didn't love it. Never met a C++ expert who didn't have grave reservations about it. It's like, "Here's your bag of infected needles. You can make really slick games with them, but be careful!"
I think it’s because it’s getting into the next stage. When it first came out almost all projects using it were new. Now it’s getting to the stage where new people are coming in to maintain existing RoR code bases, and that’s very different. RoR is great for quick development but it can be much more challenging to jump into an existing code base that’s been running for a while and has had a few different developers go through it ;)
We're moving away from a Ruby codebase now. Everytime I have to grep the codebase to find where a method magically came from, I die a little on the inside.
I won't say it is a bad language, but it allows and seems to encourage some bad habits.
I pretty strongly disagree with the idea that Ruby encourages those bad habits. But Rails? Specifically, ActiveSupport? Yeah, totally. But, effectively, Rails is building a context-specific DSL for web apps that happens to be leaking methods into your code. This is much, much more a Rails problem than it is a Ruby one.
My standard web stack is grape, grape-swagger, grape-entity, and Sequel (with some handy libraries like Ougai kicking around) and I don't run into any problems like that.
Rails in particular is the worst about that. Bonus points if you're working on an older codebase that's been upgraded through a couple versions, but is still fairly out of date. I hate having to keep so much fiddly crap in my head when, with a better language and/or framework, my tools could tell me what I need to know when I need to know it. Ugh, dynamically-named automagical variables and methods the definitions of which are ungoogleable and ungreppable. Gross. "Magic" is almost never worth the cost.
A Sinatra project written with some discipline and taste isn't too bad, though, and Ruby's still my preferred language for throw-away one-off tiny scripts, mostly because it's very concise, has lots of available libraries, and isn't Javascript.
I don't think Ruby's a bad language, but unless you've built some very good programming habits, it's really easy to get "too clever" with Ruby metaprogramming and do something that's conceptually neat, but makes everyone else who works with you want to strangle you.
I left Ruby behind last year to program Go full time. It's much easier for me to not have to do the mental gymnastics of figuring out where a Ruby method came from.
How hard do you think a Go app would be for a medium-large sized web app? I wanted to write a payment processing website in Go, but I'm hesitant to start using that language.
> Everytime I have to grep the codebase to find where a method magically came from, I die a little on the inside.
Are you using Rails? My experience is a lot of the "magic" comes from the use of Rails not the language itself. Though since Rails inspired so many other Ruby frameworks and libraries, the magic has spread a little bit.
Overall I like Ruby for writing DSLs since it has tools in the language that make doing so really easy. But for a website I would... and this is going to be really unpopular... actually probably choose PHP over it. Easier to find coders, equally bad coding practices, but less magic.[1]
[1] IRL I tend to choose Node.js or Go but I have used PHP extensively in my career because it is everywhere. And Ruby because for the longest time Ruby was cool and PHP was frowned upon. Now they are both frowned on.
I don't think that is why with Perl. Granted it's been over a decade so opinion might have changed but when I was in college Perl had a reputation as being a "write only" language. Where unless you had comments / documentation to explain it to you, if you encounter code you didn't write (or you wrote 6 months ago) good luck figuring out what it does.
All languages are like that to a certain extent but Perl more than others.
I had a lot of junior folks complaining about "un"readability of my Perl codes back when I used to work in finance. There were a lot of seasoned Java and C++ programmer on the business side who didn't have much problem hacking their way around Perl, but most folks on the operational side had less than a few year of shell, Python, PHP. I ended up rewriting their codes for speed, brevity and correctness -- and it drove them crazy.
But I've also seen a fair share of properly functioning, yet incomprehensible Perl codes so I could see why so many are turned off.
Perl definitely can be "write only", but it doesn't have to be as long as you don't try to be too clever, but I could say the same about most languages. I wouldn't want to work on a stack that was centered around Perl, but it is fantastic for quick one off scripts or relatively simple file processing tasks
I could see myself using VBA more if the "IDE" was not a 20yo piece of crap that pops a MessageBox every time you have an error (I seem to always forget to add the "then" when writing an "if").
Just underline the error but let me continue to code dammit.
That has to be why C# is ranked below Java. I don't understand a world in which people would prefer Java, the language, over C#, the language, all else being equal.
Working with C# likely means working in an MS-centric environment which is probably what this is measuring more.
That statement doesn't make a lot of sense. The "dislike" tag is understood to be the list of things you don't want to work with (as in, "don't contact me about jobs if the job involves using xxxx tool/tech/language"). Resumes don't generally have a section for "sometimes frustrating/tricky stuff that I don't even question that I'll be using."
You just can't ignore the alternatives (or lack thereof) to any of the "disliked" stuff in the article.
The running theme in the strong dislikes are languages and tech that were once popular but have been surpassed by newer, easier to use or work with alternatives. That may happen one day to git, but it would seem a long way off.
There's also a running theme of the dislikes often representing working with older legacy code. So the listed languages might just be the devs' proxy for disliking working with legacy projects (vba strikes me as an example of this, since it was hugely popular but no one is really using it in anything new).