It seems that it is increasingly becoming a polyglot world, whereas previously you could get away with a single language (if you were to exclude html/css and a bit of JS) now it appears that you will often pair languages together to get the most optimal app (and that’s not including the mobile or desktop side!)
When did you realise you were a polyglot?
Did you become one intentionally? Or it happened out of necessity?
Do you enjoy being a polyglot programmer? (Or would you prefer isomorphism, being able to do everything in one language.)
I guess I’m a polyglot since I’ve programmed professionally in JS, Java, C#, Kotlin and Elixir (the latter two just a little bit). I also know Python fairly well, but I’m most productive in JS, not because I love it, but because that’s what I’ve used the most.
I’ve actually come to dislike terms like “polyglot programmer”, “full stack developer” and even “dev ops”. It signifies a strange belief in one person being able to do “everything”. It’s as if the ideal doctor practiced surgery, psychiatry, dermatology all at the same time and also could do some dentistry if pressed. Would you wanna see such a doctor?
There’s something to be said for specialization. While it’s certainly good to have tried more than one programming language, preferably from different paradigms, mastering one programming language and one framework really well can really speed up development.
Instead, as a developer you are often expected to do backend and frontend and the set up some dev ops pipelines to boot. Yeah, it’s possible, it just takes a hell of a lot more time than if teams were divided by specialty, where developers could gain expertise in one area and perform really well.
I used to dislike the thought of becoming a polyglot because I hated the idea of having to spend a not insignificant part of my life learning or working with JS. Now of course thanks to the explosion of new languages and transpiliers as well as technologies like #liveview we can easily avoid JS.
I think another part of my thinking back then is also echoed by some of the other things in your post - that I felt I’d rather be good in one language (at the time it was Ruby) because I thought that was more achievable for me than being good in lots of languages (so I could have been a good Rubyist, but a poor polyglot). Of course I then discovered Elixir and learned so much that now I am really curious of what other languages could teach me - not just the technical differences (but perhaps more importantly) the different ways to approach problems or (and this greatly interests me!) architecting applications.
For me being a polyglot doesn’t mean you need to be an expert in all the languages you know (although that is the case for some people) but to have a reasonable amount of knowledge of each because that can benefit you in your specific role. So for instance knowing some devops can help you as a server side programmer, some backend as a front end programmer etc
Don’t get me started on doctors (I’d actually prefer they took a more holistic approach - than focus on isolated areas too much.)
Many people call me polyglot, though, personally I prefer the term “curious”
During the days since I started programming (at the age of ~10) I learned languages because they were either the only one available (Commodore Basic on the +4 and C64 I started with) or because there was some copy in a computer magazine (Some Pascal compiler back in ~1996 on my dads 486 compatible (or was it still 386? I don’t remember).
Later, when I switched out my own C64 for some Intel after 486 (not sure about the exact model anymore) roughly 2000 I also started browsing the web and was interested in learning “web programming”. Back in that days I searched the web, and found Perl and PHP as reasonable languages, and I took a look at both of them, but I mostly sticked to PHP as it was easier to get hosting for it.
Then I signed for 12 years of military service and barely kept my self up to date, learning some ruby and C# during that time, but not because of the web any more, but because I wanted to make recurring tasks easier for myself.
Only when I started my studies at 2013 I got introduced to so much many more languages and concepts, finally beginning to understand some things, and starting a hard process of unlearning! After which I started a period of looking into a new language about every month, solely out of curiosity. By that time I already discovered, that a good employer will not hire me because I can code a certain language but because I’m eager to learn about the project and beeing able to adapt.
Finally I found an employer that encourages me to learn whatever I want, even trying to introduce it in projects if technology hasn’t yet been decided upon. Though the 2 major languages used at that company are python and go, and this will probably not change.
Though we do not only program our own software, but we also often have to review customer provided code to integrate it into our systems, or to integrate our software into their systems. Or for various other reasons.
Though to be honest, having to read 5 or 6 different languages a day over a week can be cumbersome. Switching back and forth is not as simple as it sounds combined with the project context switch that sometimes has to be done it can really make you tired.
So in the meantime, I really try to avoid to deal with to many languages at once. Also my new team leads tries to not assign more than 2 languages per day.
I consider myself a polyglot, but as @NobbZ said it’s mostly because I am curious, as well as necessity. A quick list would be C++ / Lua / SQL / JS / C# / PHP for professional work, and Ocaml / Python / Elixir for studies and personal work.
About the web, I used to think it would be neat to code both the client and server side in one language, allowing to reuse code more easily and to reduce friction and bugs between those parts, but client and server sides are too different, and they don’t evolve at the same pace anyway, so I have been back on the polyglot train.
As long as they don’t start writing SQL statements all other the source code, making all refactoring difficult and painful. It’s also going to be a pain if you ever need to switch your RDBMS, or support several.
It’s a big source of inefficiency as you need to be able to provide ample work every day to every one. Only big software companies with many coders and projects can hope to allocate them efficiently, but then those experts have to juggle between several projects, which is another source of inefficiency…
I’ve had full time jobs focusing on 8 different programming languages (not counting ancillary languages like bash, SQL, HTML, CSS). I’m conversant in another dozen and know basics of probably another 20-ish. The more languages you know the easier it is to learn the next one.
Programming is primarily about solving problems. Learning a new language is just a required step to do that in some circumstances.
The ability to self-train has been very beneficial to my career. In my very first programming job they basically said they’d give me a one-week paid trial period to see what I could achieve as a demo in a programming language I’d never seen before. I got that chance mostly because I had at least heard of the language before.
I almost always have been, first two languages was assembly and basic, which the basic could call the assembly. ^.^;
Intentionally, different languages are useful for different tasks.
Eh, about the only language you can do everything in well is lisp, but so much more would need to be built in it first. There’s basically no language I’d love to do ‘everything’ in.
Absolutely yes! So much to learn from a variety of languages even if you don’t use them!
No clue honestly, but I’d imagine that the ‘better jobs’ that want more rounded programmers would want it, but the sweatshops jobs probably wouldn’t.
I’ve learned soooooo many different methods and patterns and so forth of doing everything! Locking yourself into one language misses out on so much better ways of doing things even in the one potential language you may use!
Yep, constantly. From build systems using multiple languages to shell scripts calling programs like perl or python or whatever, to elixir programs with C++ and rust components.
I see a polyglot programmer as one who knows more patterns that could be applied to a specific problem in a specific language even.
But you also miss out on knowledge and ways of doing things that other languages can provide.
Don’t have to be good in lots of languages, but at least understanding how they work and why they work they way they do imparts knowledge that is useful elsewhere.
Curious means self-learning.
Very familiar history there. ^.^
That’s been my limited experience so far. All the jobs I’ve worked wanted me because I could pick up things very quickly.
This is my current job, not my last one sadly. ^.^;
Hmm, I tend to find it easier to make huge jumps. Like jumping between different web apps between work and home tires me out, but doing web apps at work and writing an ECS engine at home, well now that’s very different and for me very engaging. ^.^
So true that, especially the more different the languages you already know are. Going from Ruby to Python isn’t a big jump and won’t really learn anything from it (other than pythonista’s hate monkey patching, lol), but going from Ruby to Perl/Rust/C/Lisp is a huge jump that will teach a whole lot more.
If you wanna use the term “polyglot”, I’m one in my entire live, not just in programming
Too many interests, so I’m doing many different things. It’s the way I am, and It’s good for understanding “the big picture”, but also keeps one away from truly master one thing, which would also be nice…
Besides programming, I’m doing cad/cnc, designing, building and flying rc airplanes (and helicopter, trains, boats…), riding and fixing my motorbike, running (up to half marathon), cooking & baking, travelling, … , and even my wife is from another culture. Each of this would be enough to spend a whole live doing just that.
For my jobs I used c++, java, c#, typescript/js, and for hobby reasons elixir and php. Having seen a lot in programming, I hope one day I can concentrate on Elixir & Rust, but companies here are still stuck in the old oop world
I’d say “being a polyglot” isn’t a boolean attribute. Moving from knowing nothing of a language to knowing it “fluently” is something that happens gradually over time. Beginners may be very fluent with an excuse me when bumped or a missing } when a compiler error says one is unclosed, but far from fluent in other situations.
If there were a time, though, maybe it was when I noticed my very first blog included both JS and PHP in its theme files and I was editing both.
I definitely wouldn’t want to use one programming language for ALL tasks. Most would probably be skeptical of those who do.
It’s essentially a claim that one tool is good for everything and that this wonderful omni-tool just happens to be the one and only one the person has learned how to use!
I frequently use CSS (which is Turing complete) with JS. I frequently use both with another language, such as Elixir or PHP.
Occasionally, I’ll mix Ruby with Bash scripts.
Long ago, I often paired Obj C with C/C++.
and in one project, AS2 with AS3 (bad idea!)
One combo I’ve been getting increasingly interested in is Rust + TypeScript via WASM.
To me it seems like a fairly unneeded term. Does anybody really just learn one programming language? I’ve met scores of beginners who scour the internet searching for what language to learn, get tutorials for several and try to evaluate them before getting even semi-proficient in any of them. In fact, I did that myself, too!
It seems almost contrary to human nature for someone who enjoys programming one language not to explore others. It would be like someone who only played badminton but never learned how to play another sport.
I’ve enjoyed almost every programming language that I’ve learned. Most of them learned for work (or the next job) but some of them just learned out of curiosity. Almost every job that I’ve held over the last 10 years has required at least 2 programming languages in order to be an effective team member. I don’t see that changing anytime soon.
During my career I’ve met lots of people who wanted to stick with whatever programming language they’ve found their first job in, Fortran or Cobol way back when or Java within the last 10 years. It’s just difficult to not get exposed to something else even if you don’t really want to be. Fortran folks got sucked into Ada, Cobol had its JCL, Java has … well all sorts of stuff (Groovy, Closure, SQL, are not uncommon skills for folks that profess to be only Java developers). Shell scripts for all of these languages with some awk, grep, sed thrown in there. JS and Regex expressions across everything.
As a hiring manager (in previous gigs) I’d prefer people that don’t pigeon-hole themselves. If they don’t have skills in more than one language I’d want them to be open to learning more. For senior roles I’d want them to have some basis for choosing the right tool for the job rather than just choosing the only hammer they know.
Nice! What are those languages and which do you use regularly now?
This is what I’m finding - and enjoying - a lot! Though I’m guessing my path may be something like single language → polyglot → back to one or two languages (or even preferring isomorphism if possible) but with the added know-how learned from other languages.
I think naturally humans are pre-programmed to simplify tasks hence why I’m thinking this, hence this conversation of how people are using various languages is very interesting!
I think it’s good to have an inquisitive mind and varied interests keeps life interesting
This seems to be a common pattern - match made in heaven perhaps? Hearing about Rust via this forum has definitely got me more interested in it
I’m not sure if anybody does, but I once said that I’d love to do isomorphic Ruby all day every day. I think what’s changed is that I’ve come to learn that however nice that sounds, it just wouldn’t be practical or as nice as I think it might be in the long run - and that’s not even including that it probably wouldn’t be possible either (in terms of scaling, etc).
Did you notice frequent pairing of languages Frank? For example I hear Elixir & Rust a lot…
Welcome to the forum Frank! What kind of apps do you think you will be developing in the next ten years?
Again, I’m seeing Rust and Elixir and this is making me want to learn Rust
The main point I was getting at is not so much the specifics of my language journey (which includes plenty more in a spare time capacity) but that yes, knowing multiple languages is a good thing. We should strive to be programmers, not “language X programmers”. Languages come and go, but the skills we learn from them and the ability to learn new ones never goes out of style.
I have started back in 1986 with Fortran, punchcards and the Euclidean algorithm. Then I switched to [in chronological order] TurboPascal, [all paid, starting from here] Delphi, C, C++, COBOL, VisualBasic, Java, Haskell, back to C++, Python, Ruby, Erlang, Elixir. Can I call myself a polyglot? I honestly dunno. Right now I feel comfortable with C, Ruby and Elixir.
Ten minutes ago. I did not think about from this angle.
Nope. I am just interested in exploring new horizons.
I do. When it comes to the new project I can clearly see we should do it in, say, Julia, with some patterns stolen from Haskell.
I think this question should be addressed to modern programmers.
It depends. Programming microcontrollers barely requires deep understanding of Haskell lazyness.
I can mix patterns. Like saying “chapuza” instead of “kludge” when I want a specific effect (usually that happens when I talk in Russian to my wife.)