

Ask HN: best language for hiring? - petervandijck

I'm thinking about spending 6 months learning another programming language. I'm good at PHP, and nothing against it, but I think it'll limit me if I want to do a startup, in terms of hiring smart people.<p>So:<p>What language (Ruby, Python, ...) should I learn?<p>Requirements: it should be well webby (ie. have libraries for all the usual web stuff you want to do), and be exciting/easy to hire smart people for.
======
hello_moto
I'm going to make a bold statement that might not be well received around
here.

There is no smart people in what you think "webby" is.

Smart people tend to be the master of their domain: data mining, capacity
planning, operations, specific business domains, embedded magicians, security
experts (the real ones, not the fake ones), OS masters, programming language
linguist.

Most people can write RoR, Django, CodeIgniter apps (or, known as the CRUD
app). Very few people can do Business Analysis, Data Analytic, understand (and
fix, improve, innovate) Healthcare, or bend Oracle as they wish so it worth
for their bucks (surprisingly not a lot people can do this).

You can hire a $100k Ruby developer that know Ruby inside out, but what are
you going to do with that knowledge except to build a company around Ruby
language? (improve VM, sell enterprise supports, etc). I don't think you'd
hire this fellow to write a crud app. That would be a non optimal business
decision.

Node.js is the new hotness. Alpha-programmers will flock there for a while
just like they did with RoR. So you're going to hire these programmers for 2-3
years, 4 max before they jump out. What are you going to do with Node.js other
than to re-write pretty much almost everything that exist in another platforms
already.

New language/platform becomes popular, people (early adopters) flock to it,
then the notable ones (the next early adopters) flock to it as well, then the
rest. I don't mean to disrespect the people who improve new platforms but most
problems have been solved. All they do is to re-implement that in another
language. MVC, ORM, Caching, Routes are still what they are in other
platforms.

~~~
cppsnob
> I'm going to make a bold statement that might not be well received around
> here. There is no smart people in what you think "webby" is

A large number of web programmers I've met do not have a degree, they know
very little theory, and often do not understand the most fundamental concepts
like memory allocation or semaphores.

Though, I'm not sure I'd go as far as saying that that means there are no
_smart_ people. I've met a lot of smart people who fit the description I just
laid out. Their problem is they just don't have the training or experience to
make good technical decisions.

~~~
hello_moto
Perhaps I should revise my remark.

Web Developers are the new "average".

This is what people will be judged upon as the entry point.

------
3pt14159
I'll actually answer your question.

Ruby and Python are now _too_ good at doing webby stuff in that there are not
enough Ruby devs to meet the demand of companies without skyrocketing
salaries. It is easy to hire good Ruby devs, provided you have $400k to spend
per year, but that isn't your _real_ question.

Your real question is what languages will people really, really want to work
for my company to use because nobody else is using them. I can only think of a
couple: Common Lisp, Closure, Scheme, Smalltalk. There are others that are
happy-fun languages but not necessarily _I love you_ languages that few
startups are using: Scala, server side CoffeeScript, Io, F#.

But the problem you run into there is that many of these languages don't have
as many webby aspects to them which is why fewer startups use them in the
first place.

I'd probably recommend Scheme because it has the best book of all time:
[http://www.amazon.com/How-Design-Programs-Introduction-
Progr...](http://www.amazon.com/How-Design-Programs-Introduction-
Programming/dp/0262062186) That book can teach _anyone_ how to code Scheme.
Although all the languages I listed are awesome.

~~~
cppsnob
Oh, that's what he's asking?

To the OP: do your startup in Java. Then at least you'll be hiring devs who
give a damn about building _your_ product, rather than ones who just want to
screw around in whatever's shiny and new.

~~~
hello_moto
I don't know why you guys downvote cppsnob (unless if he's being sarcastic).

Some of the Java startups look more solid than the rest. Zimbra, SpringPad,
LinkedIN.

~~~
cppsnob
Thanks hello_moto. I wasn't being sarcastic -- I mean what I said earnestly.

Put another way: find developers who want to work for you because they want to
build what you want to build, not ones who will only work for you because you
chose "technology X" to build it. One way to guarantee that is to choose a
tech that you're positive can do the job and is boring... Java is that tech.

~~~
olliesaunders
_find developers who want to work for you because they want to build what you
want to build, not ones who will only work for you because you chose
"technology X" to build it_

Some people will be perfectly content to build anything just as long as it’s
written in <their choice obscure language>. For other people it might be
really important that you use agile, or that they are given a greater level of
control over the development process, or that they can work from home, or
whatever it is that they care about.

So really I’m saying is that you should generalize your advice here: find
people who care about what you care about. Don’t try to guess what that is.
And to do that, go away and figure out what exactly _you_ care about, ask
other people to do the same and compare notes.

~~~
hello_moto
This is the way to go: people that are in the same page with you. Leading such
group is definitely far easier.

Ask yourself who you are and find the same people.

------
0x12
If you see the language as the 'barrier' that people have to jump over in
order to be accepted as smart then maybe go for something exotic. Clojure or
Haskell?

I'm not sure if a test like that is meaningful or not, you can narrow down the
field of applicants substantially but you may end up with people that have
more theoretical than practical knowledge.

~~~
adbge
Speaking as someone who has dabbled in both Haskell and Clojure (emphasis
"dabbled"), I'd have to currently recommend Clojure over Haskell, for a couple
reasons:

    
    
        * The Clojure community has a strong focus on web stuff, while
        the Haskell community has (to date) been primarily concerned with
        more math-centric fields.
        
        * Haskell's web stack is still very much a work-in-progress. It
        severely lacks when it comes to documentation of even "simple"
        stuff necessary for the web, like shuffling data into a database.
        Unless you're looking for a type signature. The Haskell community
        loves to provide documentation in the form of type signatures.
        
        * Learning curve. While both are functional languages, it was my
        experience that Clojure's emphasis on simplicity and ease-of-use
        made it very easy to pick up and start tackling real things. 
        There is some ramp up time if you're getting used to the tools,
        such as Emacs or the Java ecosystem, but you don't have to worry
        about things like monads slowing you down.
        
        * It's a LISP! LISP is cool.

------
sycr
Instead of looking for fashionable languages, why not look for a history of
creativity and a passion for learning? And you can never, ever underestimate
the value of good communication skills.

------
gaius
It's never easy to hire smart people.

~~~
ams6110
This is the real issue, not languages. Anyone who is smart and has a solid
conceptual background in software development can pick up a new language
quickly.

Rather than picking a language to attract smart developers, attract the smart
developers by presenting them with an interesting challenge and let them pick
the language.

------
agconway
This dataists post of the popularity of programming languages is relavant,
though the data may be a but outdated.

[http://www.dataists.com/2010/12/ranking-the-popularity-of-
pr...](http://www.dataists.com/2010/12/ranking-the-popularity-of-programming-
langauges/)

Thankfully, the good folks at Redmonk revisited this analysis recently.

[http://redmonk.com/sogrady/2011/09/06/dataists-anguage-
ranki...](http://redmonk.com/sogrady/2011/09/06/dataists-anguage-rankings/)

------
jianshen
Your product vision and company culture is what will draw good talent in. Work
on building out those principles and learn how to communicate them efficiently
to prospective talent.

Smart people tend to adapt (in much the same way you're trying to right now)
and they will ultimately follow passion and vision over the convenience of
knowing the same tools as you.

------
cppsnob
C.

Understand the foundation and everything else becomes a lot easier to learn.
And yes, you can do the web with it. Many still do.

------
Mikera
Probably Clojure - It's cool, has a webby angle, you can cherry-pick the good
Java libraries and to quote Eric Raymond: "Lisp is worth learning for the
profound enlightenment experience you will have when you finally get it; that
experience will make you a better programmer for the rest of your days, even
if you never actually use Lisp itself a lot."

------
RandallBrown
If you want to work for a small startup, Ruby seems to be what most people are
looking for. If you really want to show off your programming chops, learn
something lower level like C++. Of course you said it should be "webby" so
another option is something like C#, as long as you don't mind Windows.

------
swalkergibson
Why do you suppose it is difficult to hire smart PHP developers? Facebook
seems to be doing just fine, and as far as I know, most of their codebase is
still straight up PHP. Bottom line, build something that customers want. The
customer cares that the solution solves their problem, not that your
technology stack is bright and shiny.

This is worth reading: [http://pud.com/post/9582597828/why-must-you-laugh-at-
my-back...](http://pud.com/post/9582597828/why-must-you-laugh-at-my-back-end)

------
dennisgorelik
Pick a startup first.

Make sure you'd like to work for this startup with these people for years.

Then pick development language that's most suitable for that startup.

------
amorphid
Focusing on being a better coder and communicator is your best bet. It'd be
more interesting to solve advanced problems and only know PHP than to pick up
another language and never have really solves problems anyone cares about.

If you still want pick up a new language, in my work as a recruiter in San
Francisco I see a shortage of web developers who are good with Ruby.

------
Bootvis
The problem with this strategy is that your potential hires are more
experienced in whatever language you choose so gauging their skill solely on
this particular aspect is hard.

If you really want to learn a new language I would go for one that fits your
problem domain or what your friend use.

------
blackiron
Python is versatile, easy to learn and has lots of nice libraries. Check out
Paul Graham's article about python and hiring smart people
<http://www.paulgraham.com/pypar.html>

~~~
aDemoUzer
+1 for Python + Django combo

------
zhemao
Instead of answering OP's question, most posters seem to be saying "learn
language X because it is my favorite language and the best programming
language ever!" Completely unhelpful, although not entirely unexpected.

If you want to learn a language with a strong developer community and is well
suited to building web applications, either Ruby or Python would be good.
Personally, I prefer Python because I find the syntax to be clearer and easier
to understand, but that's just my preference.

For the most part, the specific language isn't that much of a problem. Good
programmers generally know more than one language and can learn a new one
fairly quickly. Therefore, you shouldn't limit your hiring to people who are
highly experienced with one particular language.

------
gtb
Do you want to do a startup to make money or win a IQ competition?

------
gtani
ruby/python shd be relatively easy, I recommend immersing in Java ecosystem,
including scala, JRuby, groovy, clojure.

------
diN0bot
node.js, google closure library

------
michaelochurch
I don't think there's "one" language for this purpose.

Don't pick C++ or Java. If you need the Java libraries, consider Clojure or
Scala. Don't pick C: it's a fine language, but too low-level for what you want
to do. Javascript literacy is a must in web development. So learn it, but not
only it.

What's more important is that you choose a language that _you_ are comfortable
with. You can learn basic Python in a couple of weeks. Is Python a perfect
language? No. Is it "good enough"? Generally, yes. (Switch to Scala if it's
too slow or if you find dynamic typing doesn't suit your needs.) Then build a
great demo. You're going to get more leverage, in terms of hiring smart
people, out of having a great demo than having picked the right language.

~~~
DonaldG
Wait for Dart.

~~~
neilk
There is no language that's so good that it's better to wait for it to be
released than to write working code today.

------
VagisaurusHex
scientific Python!

