Paul Graham wrote (13 years ago) that you can learn a lot about startups by reading their job listings .
The companies looking for C++ or Java developers were generally slow-moving and useless, because programming in Java is like throwing down a boat anchor. The ones looking for Perl or Python programmers could prototype quickly. A startup looking for Lisp hackers would be most formidable.
But now with so many Platform-and-Infrastructure-as-a-Service offerings to facilitate quick deployment, rapid prototyping has become the default. Anyone with a modicum of computer knowledge can put together a mobile web app in a day.
We can still learn a lot from startup job listings based on their programming skill requirements:
Ruby on Rails – The startup’s main product involves web development and is unlikely to introduce technical computing. Ruby as a language is more symbolic than lexical, and teams that employ Ruby tend to be visual and creative.
Python – Built for data analytics and scientific programming. The developers are practical, probably academic, and appreciate structure and consistency. The frontend almost certainly looks like crap.
Node.js – A language created so that frontend developers could also build server-side functionality. The company is full of hipsters in skinny jeans who don’t really know how to code, but I’m sure the UI is beautiful.
Then there are the languages designed for high-performance computing and concurrency: Go, Clojure, Scala, Erlang, Haskell (in order of trendiness).
Companies who list these skills don’t actually need programmers who are well-versed in esoteric languages; they just want programmers who care enough about programming to learn an esoteric language .
Our VP of Engineering at Barnacle recently submitted a hiring request. Here’s the job listing:
- Well-versed in Hadoop ecosystem technologies
- Experience with building multithreaded and distributed systems in Haskell, Go, or Scala
- Familiarity with information extraction algorithms, e.g. Hidden Markov Models
- Previous experience with database integration systems (Redis, Riak, or CouchDB)
- Solid knowledge of Linux kernel internals (process scheduler, memory management, concurrency/synchronization, memory allocation, file systems) and networking or storage subsystems architecture.
- Must play well with others
Only some of the skills listed are actually relevant to the job. The rest guarantee that the new hire will remain delightfully single and available to work nights and weekends until IPO.