
Why should you hire a polyglot programmer? - Garbage
http://thoughtworks.github.io/p2/issue08/hire-polyglot/
======
crazygringo
With languages like Python, PHP, JavaScript, Java, or C#, sure -- they're
fundamentally very simple languages with a handful of gotchas to learn,
they're easy and fairly interchangeable, and your overall programming skill is
what really matters.

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.

~~~
Cless
Ahh, CSS. The hardest language to master.

~~~
collyw
As a back end developer slowly moving my way into the front end, I am glad to
hear other people find it difficult.

~~~
Cless
I am glad to hear other people find it difficult, too. I really am.

~~~
JimmyM
I can't tell if you mean 'because I find it difficult too', or if you mean
'because it means I have less/easier competition'. Of course, this could have
been your intention all along, but if it wasn't could you clarify?

~~~
Cless
Because I find it difficult too. :) Been using CSS for 7 years and still have
some trouble with it, compared to typical programming which tends to be quite
easy.

~~~
JimmyM
Cool! I definitely have trouble using CSS, I depend heavily on CSS frameworks
& libraries to lay out anything remotely complex.

------
pavel_pt
One should hire people who care, and who continuously broaden their own
horizons. When it comes to developers, these inevitably happen to also be
polyglot programmers in my experience.

~~~
edwinnathaniel
First sentence is correct. Second sentence, the jury is still out. Plenty
polygots fail short in writing high quality idiomatic code due to focus in
breadth not depth.

Writing web apps backed by db in Python, Java, and Ruby are considered as
breadth repeated 3 times.

------
lelf
> _2 years of Ruby, 1 year of Python and 2 years of Java_

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.

~~~
atmosx
Not to mention that to many rubyists, pythonistas or Javaneze 1 and 2 years of
experience, is like saying that you just _learned the language_.

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.

------
joesmo
"The person with the second CV could be a better developer on a C# project
than your language expert, despite having little or no C# experience."

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._

~~~
jasonwocky
"What you're essentially stating is more experience is detrimental."

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.

~~~
collyw
Yes, if people have at least learned a second language you can tell they are
one step up from the 1 year repeated ten times.

~~~
edwinnathaniel
They are exactly at the same level of proficiency. Writing a loop in a
different dialect does not make you one step better. You're still walking
albeit with different rythm.

In the end, they are essentially performing the 11th time.

~~~
collyw
I went from Java to Perl (back when Java was all the rage). That really opened
my eyes. Perl is dynamic, and you can program functional / imperative. You
could do so much more with it in way less lines. You learn to use hashes /
maps / dictionaries (instead of arrays being the obvious way to do things)
because hashes are encouraged by the language.

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).

~~~
edwinnathaniel
My experience was the other way around Java => Perl, not liking it. I suppose
people have different taste buds.

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.

------
benaston
This is, after all, how Thoughtworks make their money - they insert polyglot
(read graduates/juniors with a smattering of experience in different
languages) into projects and bill for experienced professionals (the
"seasoned" developers in this article). This article conflates "varied
experience" with "good developer" and "seasoned developer" with "bad
developer". In the real world, this is not the case. So whilst I agree with
the premise that varied experience contributes to being a good developer and
that polyglotism is very healthy and a positive sign, I disagree with the
broad conclusions implied by this article.

------
mello151
A lot of great points. I've worked with a lot of people that know one language
well but are almost willfully ignorant to others... even when the skills are
needed on the current projects. I've gotten to where when I interview
applicants I worry less if they know the answer to esoteric questions about
rarely used features of certain languages and spend more time on architecture,
testing/debugging and deployments. It's amazing how many people interview with
15 years of Java but no experience with Continuous Integration and testing
techniques beyond JUnit.

~~~
AdrianRossouw
> but are almost willfully ignorant to others...

sounds like every backend person forced to do javascript, ever.

Well, until node happened.

------
sitkack
In this case polyglot seems to mean, "has experienced a lot, traveled the
world and is primed for stuff." One can get that and still only have Java or
Python or C++ on their resume. We don't litter our CVs with all the stuff we
dabble in. Exposure and priming matters, but most of these labels, using
github as resume all seem like shortcuts to actually interviewing and talking
to people. There are no shortcuts, building teams is difficult and shit is
always way more complex than we make it out to be.

------
n1ghtmare_
Agreeing with the comments here and the post - I'd like to add that having
experience with many different languages also shows that the dev has a drive
to learn, and that's a + in my book.

~~~
edwinnathaniel
How do you know that the dev has a drive to learn? Maybe the dev jump to the
bandwaggon of coolness?

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?

~~~
n1ghtmare_
I see your point, however for me It's a pretty safe bet that a dev having
experience in multiple languages has a drive to learn. Jumping the bandwagon
is not necessary always a bad thing (it could be of course), sometimes it's a
sign of curiosity and experimentation.

~~~
edwinnathaniel
I don't disagree with curiosity and experimentation. But it's a very slippery
slope with short attention span as well which seems to be the case nowadays
(look at various Rails plugins, majority of NPMs, and 10001 Python web
framework out there).

When it comes to programming, attention to details matters.

~~~
n1ghtmare_
Yeah, I absolutely agree!

------
JamesBaxter
I'm new to this game but I think there's a lot more to programming than
"programming". I'd love to be a polyglot but I spend so much time learning the
differences between App Store "guidelines"/tools, IDEs, application life
cycles and the minimum required to use/design for different OSes. That I don't
have time to fully grasp each language I use.

Does it get easier or do new technologies always have differ just enough to
require new learning, for them to be useful?

~~~
tokipin
You should aim to learn languages that are different. The point of learning
very different languages is that you can start generalizing in ways that make
mastery of future languages easier.

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.

------
tomasien
All I want right now is a polyglot programmer - tommy@knoxpayments.com -
remote fine, solving a problem that is killing businesses

------
kushti
I think, "programmer" is always polyglot while "coder" could knows only one
language.

~~~
collyw
What's "developer" then? "Software engineer"?

I think these terms can be used interchangeably.

------
potash
Offtopic: It's funny that an article about polyglottism has a grammatical
error in the title and a misspelling in the first sentence.

~~~
Cless
"Sceptical" is actually the British spelling of the word "skeptical."

~~~
potash
Interesting. Thanks!

