Why should you hire a polyglot programmer?
thoughtworks.github.io
thoughtworks.github.io
But there are other technologies or "languages" which, paradoxically, many developers think are trivial to learn, like CSS and SQL, but in which years of experience matter far more than any kind of natural programming aptitude. CSS and SQL are heavily implementation-specific, with edge cases upon edge cases upon edge cases that often wind sucking up the majority of your time. If you want complex queries that are still performed efficiently, or complex layouts that don't take weeks to get working properly in all the different browsers, no astronomical IQ or general programming aptitude is ever going to win against years of experience.
However, I consider myself seriously unqualified to do anything relating to advanced styling/css.
Anyone know of any good tutorials? Everything seems either really basic, or really advanced. I know csszengarden has loads of examples, but I would prefer something that explains it (I can't find anywhere that explains the nesting and the relationship to the syntax / structure of the css file. I always feel like I am just trying random things until something works).
Indeed.
Historical accident, sure, but remedying it might benefit future users at the expense of the vendors and the current ones.
Writing web apps backed by db in Python, Java, and Ruby are considered as breadth repeated 3 times.
She is anybody but a polyglot programmer.
So this thing the author writing about is common misconception. Yeah, if know some mainstream(ish) languages and can do some common tasks you will unlikely have problems doing some common tasks in another ruby-java-python. Now go write me something rock solid in Erlang. Or (oh boy you better forget your java) Haskell.
I use ruby ~ 3 years, not professional but more than 5 hours per week and I can say that I don't consider myself a pro or advanced in any way. There are huge parts of the language that eludes me, even in things/frameworks/situations that I have successfully used/implemented.
No. What you're essentially stating is more experience is detrimental. That someone with a few months experience who is writing her first application in a particular language / stack will perform better than a veteran. Knowing the basics is important, but having experience not only with the language but with the libraries, apis, build tools, frameworks etc. is what separates a good programmer from a decent one. Both programmers in this case have the basics but the experienced person has a lot more than the basics. I'm not against hiring a polyglot, even one with no experience in the language/stack that will be used. Hiring a polyglot does not make up for experience and knowledge, however.
It's not so simple. Not all experience is equal. Some folks have 10 years of experience developing software. Others have one year of experience, repeated 10 times.
In the end, they are essentially performing the 11th time.
Also, while Perl's standard OOP, is a bit of a hack on top of the language, it helped me really understand what was going on, unlike Java, where a lot of these things are like a black box.
Maybe I should have emphasized learning a second language with a different / multiple paradigms.
(Saying that when I later moved to a job using Visual Basic 6, I didn't feel like I learned much).
While there are (small) values that one can get out of Java => Perl, being dynamic and functional, your experience seems seasonal (hashes, maps, etc). I felt that these days if one wants to learn algorithms and data structure, Java Collection libraries and Guava seem to be the defining standard.
I don't disagree if one is learning Erlang to write scalable message queue coming from Rails. But I definitely disagree if one is learning another programming language and ended up coding the basic web-app, which seems to be the case these days.
While yes, the 5 year C# coder is probably a veteran of the language, they probably don't have the breadth of experience of styles you get.
I'll take a bloke with a year of C, a year of Javascript, and a year of Ruby/Lisp/Smalltalk over a veteran of a single language for three years. You learn to think differently about problems.
Now, this experience has left a wonderful taste in my mouth with regards to C#, and I wish I had more opportunities to use it. And honestly, how long do you have to be immersed in a codeabse to being writing idiomatic code. A month of hands-on C# is enough for someone to write idiomatic code, and I wouldn't expect someone to be fully integrated into a team in under a month, so it kind of evens out.
Those people are not polyglots.
sounds like every backend person forced to do javascript, ever.
Well, until node happened.
Does the dev who prefer to go deep in a specific tech have no desire to learn just because the dev does not look like learning on the surface?
When it comes to programming, attention to details matters.
Does it get easier or do new technologies always have differ just enough to require new learning, for them to be useful?
For example, Python has something called "list comprehensions". These might be interesting to a new programmer, but if you've used a functional programming language before, you have already used something more general (list comprehensions are essentially a syntatic sugar for a couple basic FP functions). Same with many other things like iterators/generators, which are a special case of coroutines. Etc.
So if you're familiar with functional programming, you can instantly understand Python's list comprehensions, whereas someone learning Python as one of their first languages might have trouble with them or might not be aware of the various constructs they can get away with.
So you really should seek out languages that are very different. As a point of comparison, I wouldn't consider Python, Ruby, Lua, Javascript to be very different from each other. You should try harder than that. But it does pay off and it does get easier as a result.
I think these terms can be used interchangeably.