I have code, for work, in: FoxPro, Delphi, Python, VB, VB.NET, C#, F#, Obj-C, Swift, Rust, Sql, Js.
I rewrite apps and codebases, and move them. I rewrite the same stuff many times, and make my own pseudo-ORM is my main thing when learn new languages.
Absolutely I'm more productive in some Langs than others:
- Fox, Delphi, Python (#1), F#, Swift
- VB, C#, Obj-C, Js
- Rust (this is my last lang, and also doing a programming language that I have sketch in python, swift, f#. The task hit against the hardest and weakest parts of rust).
I look at C, C++ and my instinct tell me I will suck forever at them. Same Haskell. Ocalm? I will fly. Lisp? Nope, that crazy stuff never click. Kdb+? I don't know, maybe.
I don't buy the meme "the language not matter, is the people" because languages are made FOR the people. And some stuff click on you or not.
That is the reason APL is a thing for some.
I briefly studied French in college, and to say it "didn't click" would be an understatement. It was the worst grade I got in any class ever, by far. And yet, even the dumbest French person is fluent from when they were just a kid. It's probably not the case that French is simply impossible for some people to learn. Something else is going on.
Couldn't it be that we simply haven't figured out a good way to teach programming languages yet? Software is still generally "go read the reference manual online and you're good", but most other mature fields have moved beyond that. Boeing is in hot water this month in part because they essentially used that as pilot training for the 737 MAX, and it's clear to everyone that this is not an adequate way to learn a complex new technical tool.
Unlike you, I don't find Swift particularly productive (and I've written tens of thousands of lines in it!) -- but maybe with the right training, I would.
I also add that you need to explore that languages to become talented.
I'm pretty certain to be an average developer, at most. Not because low self-esteem, but after 20+ years I have know people above and below.
BUT, the use of many paradigms have help me to look like much better than if I have been stuck on a single lang (or paradigm).
I credit, by intuition, to FoxPro in how I tend to be better on RDBMS work. Delphi, for how build UIs and have certain understanding of low level. And so on.
Every new lang/paradigm make you better, and that lessons carry over.
One of my favorite anecdotes was someday I was stuck with C# solving a task, that even with libraries can't get.
I think to myself "let do that on python". I solve it in no time. I port it to C#, and almost get the same line count!
I consider "talent" as the amount skills you have at your disposal. I think a average idiot will be more productive the more broad is their horizons ;)
A good example to strengthen this argument is Petr Mitrichev who has won numerous competitive programming competitions and his language of choice is... Pascal https://en.m.wikipedia.org/wiki/Petr_Mitrichev
Then why is it that so many good developers who have learned these more esoteric languages cannot stand going back to Java etc?
Like, it wouldn't even matter to me if PHP is a good language if I have to sift through thousands of comments of "I did this and it worked" without any description of why it worked, why it is better than other ideas, or what problem it is even meant to solve.
They write a mini-lisp in Java and obfuscate it. I've been on project where this had happened.
But are you really "above average" if you are incapable of actually producing something large scale because your temperament is such that you can't stand working in a "boring" "unproductive" language?
It's sort a tortoise or hare type situation: the hare runs really fast but if that doesn't win you the race, who cares? There is an even rarer breed of programmer who operates as both the tortoise or the hare. Those are the true "above average" programmers in my view, but you can pretty much exclude the elite crowd of folks who "refuse to program in Java" or will confine their entire job search to companies that use their favorite language from that category.
Wasn't the OP's conclusion that large scale was due to not being able to scale the team into the hundreds and not any limitation of a small team?
There's only so much code that a handful of programmers can write and maintain in any language. The scaling issues comes up when you need to make your team a lot larger.
So it is possible for 3 - 10 developers to maintain a product that perhaps, would need 50 developers using fully maintainable methods. But the 3-10 developers can never produce what 500 developers can. And there's a valley of death between about 10 and 30 where you actually go backwards. With 20 developers you might accomplish less than with 10 unless you very carefully and strictly compartmentalise the team (at which point you have two teams of 10 developers that don't interact ...).