16

I was reading Paul Graham's essay - Beating The Averages (2003) and here's what he had to say:

The more of an IT flavor the job descriptions had, the less dangerous the company was. The safest kind were the ones that wanted Oracle experience. You never had to worry about those. You were also safe if they said they wanted C++ or Java developers. If they wanted Perl or Python programmers, that would be a bit frightening-- that's starting to sound like a company where the technical side, at least, is run by real hackers

Now, this is a dated essay. However, I fail to see how using a non-commonplace language (C/C++/Java, C#) would be 'less dangerous'. If the programmers of an organization are very fluent with the development language they should be equally adept at cranking out code at a decent pace. In fact if you do use a non-commonplace language won't maintenance/enhancement problems hit you in the face since not too many programmers would be available, in the long run?

For making quick-n-dirty systems I agree, that some languages allow you to take off relatively sooner than others. But does Paul Graham's essay/comment make sense in 2012 and beyond? If a startup were to use typical IT languages for development, why should it's competition be less worried?

I fail to see how the language itself makes a difference. IMHO it's the developers experience with the language that matters and the availability of frameworks so that you DRY (do not repeat yourself) not just coding in a particular language.

What is it that I'm missing? Does it imply that startups better choose non IT-flavored languages (even if the developers may be extremely adept at them)? What are the (programming) economic/market-forces behind this claim?

PS: 'lingua obscura' is not meant to hurt anyone's feelings :)

Robert Harvey
  • 198,589
  • 55
  • 464
  • 673
PhD
  • 2,531
  • 2
  • 18
  • 32
  • 4
    The gap between the commodity languages and the power languages is still gigantic. It is still possible to outperform the Java or alike development pace with, say, Lisp in orders of magnitude. – SK-logic Feb 25 '12 at 22:51
  • @Nupul You wrote that "If the programmers of an organization are very fluent with the development language they should be equally adept at cranking out code at a decent pace." That's an interesting statement. Do you have any data that backs this up? How do you measure productivity? Lines of code? In my experience there are many different factors other than choice of programming language that make one developer stronger than a different one. – Manfred Feb 26 '12 at 00:25
  • 4
    @SK-logic - any data to back that up? – PhD Feb 26 '12 at 01:03
  • @John - nope no data...it feels like it should naturally be the case... – PhD Feb 26 '12 at 01:04
  • To some lingua obscura is a compliment. :-) – MathAttack Feb 26 '12 at 05:46
  • 2
    @Nupul, there's almost no formal research on programming languages productivity, so I can only rely on anecdotal evidence and my own experience. I've seen just a couple of papers, I'll try do dig them out later. As for Lisp specifically, it is different from the other languages in a way that it can be turned literally into *any* language cheaply and easily. So it combines *all* the properties and advantages of all the other languages, whereas the non-power languages are fixed and narrow. It can explain the productivity gap. – SK-logic Feb 26 '12 at 09:28
  • 1
    @SK-logic "all the properties and advantages" but static typing :( – BenjaminB Feb 26 '12 at 15:17
  • @Ubiquité, what's the problem with static typing? I've implemented ML on top of Lisp, with all the Hindley-Milner bells and whistles. The other way around is much more tricky (a dynamically typed language on top of any strict static system). – SK-logic Feb 26 '12 at 15:35
  • 8
    @SK-logic really? Despite LISPers arguments to the contrary, the fact is very very few programs of value have been built using a Lisp --with the possible exclusion of Emacs--, and almost no major websites --with the exclusion of ViaWeb circa 1997. So, despite claims to incredible productivity increase, most LISP advocates are all talk and no walk. They only have academic research stuff (more on research and less on production quality), hobby projects and some internal stuff used in a few companies. – Hejazzman Feb 26 '12 at 18:52
  • 1
    @foljs, there's a lot of in-house high quality Lisp code. Many systems had been prototyped in Lisp first before implementing them in a more mundane environment (e.g., .NET garbage collector is a famous example). I'm using Lisp a lot for prototyping the code which ends up being written in C++. – SK-logic Feb 26 '12 at 22:16
  • 2
    @SK-logic The problem is the lack of static typing, despite your ability to implement a statically typed language in lisp. – BenjaminB Feb 26 '12 at 23:51
  • @Ubiquité, why exactly this is the problem? There are optional type annotations in Lisp, if your concern is performance-related. You can bypass Lisp totally when implementing eDSLs in it, generating lower level code immediately. There are *no limitations at all*. So, again, what's the problem with static typing? Please note, I mean not just implementing statically typed languages *in* Lisp, but implementing statically typed languages *on top of Lisp*. This concept (of extending and modifying the very language) might be alien to you, so please check out Shen and Racket for example. – SK-logic Feb 27 '12 at 06:53
  • 2
    @SK-logic I know Lisp (a bit). Without static typing, there is no static verification of the code, that's sad. – BenjaminB Feb 27 '12 at 07:49
  • @Ubiquité, take a look at Shen - it's an example of how to add a very elaborate static typing system to the Lisp. That's exactly why Lisp is different - it can be easily turned into any kind of language, with an arbitrary complex type system. Metaprogramming is a key. Think of Lisp as a base language and low level compilation target, allowing to build and mix hierarchies of very elaborate DSLs on top of it. And for a static verification, take a look at ACL2. http://www.lambdassociates.org/specification/shen_1.8.htm – SK-logic Feb 27 '12 at 08:04
  • @SK-logic You can easly build a DSL with static typing in Lisp, but you can't add static typing to Lisp ^^ – BenjaminB Feb 27 '12 at 10:08
  • @Ubiquité, please, look at Shen and Racket first. Of course you can add static typing to Lisp, it's a piece of cake, since you can replace its compiler with anything else, or build up any number of layers on top of it. It is up to you to decide if you want to allow your users to bypass your typing. – SK-logic Feb 27 '12 at 12:52
  • @SK-logic I getthe idea, but if you replace the compiler it's no more the same language. – BenjaminB Feb 27 '12 at 16:46
  • @Ubiquité, Lisp is never the "same language". Everyone else's Lisp is a new, different language. That's the whole point of it. – SK-logic Feb 27 '12 at 16:55
  • 1
    Partly off-topic: Having played with LISP a little and written a few small scripts in it for my own amusement, I tend to agree that it is orders of magnitude more powerful than, say, Java, and that I can write LISP programs much faster than equivalent Java programs. Ruby, on the other hand, I find to be even faster than LISP, and in ways even *more powerful*. Ruby metaprogramming can accomplish most of what I'd practically use LISP macros for, and it's *higher-level*. And ruby has a much more vibrant community. So yes, I'd say the essay is dated. But its core themes are still valid. – Ben Lee Feb 27 '12 at 20:53
  • @foljs: http://www.franz.com/success/ should have at least a few lisp success stories, there may be more than you think. – Vatine Feb 29 '12 at 13:13
  • 2
    If there is a list, they are not enough. You don't see list of successful C/C++ programs, because they would run into the thousands... – Hejazzman Aug 28 '12 at 09:02
  • 1
    I honestly don't see how non common place and (C/C++/Java, C#) makes sense. This probably makes up the most popular languages of the day besides javascript and if you include markups, then xml and html. – Rig Oct 01 '12 at 17:20

10 Answers10

25

The choice of an obscure language would indicate uncommon technical self-confidence in a startup. A company willing to abandon common wisdom might know something about software development that most companies do not. Then again, they might just be wankers.

samwise
  • 351
  • 1
  • 2
  • 2
  • 1
    Indeed, that's exactly what Graham means by "*that's starting to sound like a company where the technical side, at least, is run by real hackers*" - a company where at least the technologists *might* be smart enough to be real competition for him. – Ross Patterson Feb 26 '12 at 15:46
  • 8
    Nowadays it's mostly wankers, though, because "choosing an obscure language" is the fad of the day among wankers and dilettantes. – Hejazzman Feb 26 '12 at 18:55
  • 2
    It also an indicate that the company is inward looking and focused "how to build" rather than "what to build". Such companies do not attract many customers. – James Anderson Feb 29 '12 at 01:58
16

The toolchain is a symptom.

When a company picks Oracle, this is an indication of:

  • Lots of money to throw around
  • Large corporation
  • Deeply nested organisational structure with many layers of management
  • Company is run by 'suits': either executive types, or marketing and sales
  • Makes large monolithic software products with gigantic codebases
  • Formal processes for everything

When a company picks Python, this is a sign of:

  • Small young company
  • No money to spare
  • Flat hierarchy
  • Company is run by programmers
  • Makes small single-purpose products with small codebases
  • Mostly informal processes

When these two meet, the large corporation's strategy is to avoid risks, use their momentum and out-marketeer the competitor. The small competition's strategy is to first beat the competition to the market, and then keep being the superior product. If the small company picks the right battles, they can easily out-perform the large company simply by being faster and more reactive, and taking advantage of the large company's tendency to avoid risks.

tdammers
  • 52,406
  • 14
  • 106
  • 154
  • 1
    The company using Oracle will probably still be there in five years time! – James Anderson Feb 29 '12 at 01:56
  • 3
    @JamesAnderson: depending on the market, yes. If they are trying to become the next facebook, probably not; if they are a large insurance company, then probably yes. But then, if you are a large insurance company, a garage startup is hardly something you need to fear. – tdammers Feb 29 '12 at 13:39
  • So it sounds like I want to work for a Python/Ruby/Scala/Clojure shop...mmm. Given my experience places that have paid back ends tend to be very slow to upgrade. Not sure why. Pain of moving one version forward is often more gentle than moving several versions forward. Paid software "usually" offers migration but that migration typically is version to version spanning in most cases. – Rig Oct 01 '12 at 17:22
13

I view PG's comments more about attitude than specifics of the language. People with an internal IT mindset play it safe. They use low risk technologies,have processes to minimize risk and take the low risk strategy. They are too busy worrying about their own lunch to eat yours.

People on the bleeding edge (python 2003) are ones to be worried about. They are hungry. They take risks. They are intellectually curious. The same type of person staying up late learning an exciting new language is the type who might upend your industry before you do.

MathAttack
  • 2,766
  • 18
  • 22
  • 4
    Of course they might also get swallowed whole by one of those risks they took... – Michael Borgwardt Feb 26 '12 at 14:39
  • 3
    """People on the bleeding edge (python 2003) are ones to be worried about. They are hungry. They take risks. They are intellectually curious.""" -- or they are fashion victims using the latest trendy language, and have no touch with development pragmatics. – Hejazzman Feb 26 '12 at 18:56
  • 2
    Both true. It's a numbers game. But take the extreme opposite. Sometimes outliers explode. Sometimes they succeed. But would you ever fear a competitor coming after you with COBOL? – MathAttack Feb 27 '12 at 03:28
13

Graham means less dangerous to him as a competitor, not merely less dangerous. His point is not that Java (or C++ in 2003, or COBOL in 1980) is less dangerous, but rather that it is normal, and that there is a good probability that companies searching for such skills are merely-average competitors. But companies that are looking for strong talent in obscure (or, more correctly, higher-powered-and-less-well-known) languages are companies to watch.

And yes, it makes perfect sense today. It made perfect sense long before Graham wrote it, we just didn't talk about Java in those days.

Ross Patterson
  • 10,277
  • 34
  • 43
8

Let's see what languages were first used by successful startups. An unscientific list, off the top of my head. Proper randomized research would be better, if anyone had the energy.

  • Facebook: PHP
  • Stackexchange: C#
  • Google: Java and Python
  • Twitter: Ruby on Rails

So, presumably, we conclude that Facebook and Stackexchange posed no threat to their competitors. Not very convincing.


Let's see whether Paul Graham believes it nowadays. He cofounded YCominator which funds startups. The homepage lists some of their succesful startups. I've gone through them in order, very quickly trying to research the languages they used in the early days.

Well, there are some signs of a preference for relatively obscure and arguably powerful languages. But Flash, PHP and classic ASP are listed too.


It's an essay. It's a hyperbolic boost for a relatively obscure language that he loves, with underlying advice that startups should love their technology and move as fast as they can. Fair enough.

MarkJ
  • 2,827
  • 1
  • 18
  • 18
  • 3
    Reddit *started* in Lisp, but they went and rewrote the whole thing in Python pretty early on because no one could understand the Lisp. – Mason Wheeler Feb 28 '12 at 23:40
  • Google uses a lot of languages for a lot of different things. They use C++ for most of their core products like search, chrome, etc. – mike30 Feb 13 '13 at 20:57
  • @Mike The question is about startups. When Google were a startup the first languages they used were Java & Python. – MarkJ Feb 14 '13 at 11:48
6

An average developer uses average tools, because he doesn’t see the value of more powerful ones:

“As long as our hypothetical Blub programmer is looking down the power continuum, he knows he's looking down. Languages less powerful than Blub are obviously less powerful, because they're missing some feature he's used to. But when our hypothetical Blub programmer looks in the other direction, up the power continuum, he doesn't realize he's looking up. What he sees are merely weird languages. He probably considers them about equivalent in power to Blub, but with all this other hairy stuff thrown in as well. Blub is good enough for him, because he thinks in Blub.”—Paul Graham, Beating the Averages.

(Emphasis mine.)

The more powerful the language, the fewer developers are going to use it, and the less common it will be. Popularity is thus a good metric of how far the power of a language is from the average. The more obscure the language, the better the chance that the developer using it knows what he’s doing, and has chosen it for a good reason over its run-of-the-mill peers—and a savvy competitor is a dangerous one.

Jon Purdy
  • 20,437
  • 7
  • 63
  • 95
  • 3
    That's not necessarily true at all. Tooling, advertising, existing libraries, and quality teaching materials, can also change the popularity of a language. – DeadMG Feb 26 '12 at 04:20
  • @DeadMG Well, yeah, of course expressive power isn’t the only factor. I guess I made the tacit assumption that all of the languages in the common awareness are roughly on par in terms of marketing, tools, and documentation; else they wouldn’t be reasonably compared at all. Hell, even personal preference has a lot to do with it. If you know Haskell is better for some task but you just really like C, then you might code something in C for the pure heck of it. – Jon Purdy Feb 26 '12 at 04:28
  • *I guess I made the tacit assumption that all of the languages in the common awareness are roughly on par in terms of marketing, tools, and documentation...* - And you'd be wrong to do so. Way wrong, in fact. – Jim G. Feb 26 '12 at 10:18
  • 1
    @JimG. Could you offer a specific example? Considering the TIOBE index, all of the top 10 and most of the top 50 seem comparable in those areas. Besides, people are fine making feature comparisons between languages that are vastly different in expressive power, so why not do the same for the other aspects? – Jon Purdy Feb 26 '12 at 11:12
5

The choice of language is hard for a startup. Plenty of very good startups choose "common" languages for speed of getting to market, familiarity of the founder and ease of future hiring.

Choosing the a lesser used language does sent out good signs. It says you are prepared to take development seriously and try hard to hire specialized programmers. Those are just signals though, a startup is more than just it's choose in language.

Bottom line is your choice in language should be evaluated properly in your context. Facebook for example did ok using php which is not generally considered a very scalable language

Tom Squires
  • 17,695
  • 11
  • 67
  • 88
5

Go ask the best and worst programmers you know, by whatever criteria you like, what other languages they know. Now write a job ad to attract the former, and you have your answer. Even if your app is in C++, you're going to get a better class of programmers if you hire ones who know languages that aren't taught in school.

Karl Bielefeldt
  • 146,727
  • 38
  • 279
  • 479
4

There are two different things that you should be worried about if a competitor is using an unusual language:

  • Productivity advantage - There are pros and cons of unusual languages, but assuming the competition has chosen well for their given problem domain then they might well have a genuine productivity advantage. Meta-programming capabilities in Lisps, for example, will probably give you a real and substantial advantage anywhere that you need to do significant amount of automatic code generation on-the-fly.
  • Cultural advantage - if a company uses an unusual language of interest to great hackers, then they are probably in a position to attract and retain great hackers. Companies live and die by the quality of their people, so if this translates into a long term talent advantage then it can be really significaant.

Both of these advantages may not apply in any given situation. For example, a startup could easily adopt a language "because it is cool" without really thinking through whether it is the right choice. They can easily make hiring mistakes. They can easily shoot themselves in the foot by abusing a "powerful" language.

But if a competitor picks an unusual language and uses it well then yes, you may well have a significant threat on your hands.

I think this principle is fairly timeless and is as true now as it was in 2003 - specific languages and paradigms may come and go but the idea of choosing a powerful, expressive language that suits your problem domain over a generic, safe, general purpose language will probably always merit some serious consideration.

mikera
  • 20,617
  • 5
  • 75
  • 80
0

If your customers are not locked in, then yes. You should be worried about competitors using powerful languages.

Java, C#, C++, are comparatively verbose, and have relatively slow edit/test cycles. This limits the speed that even the fastest developers can deliver features. More expressive languages, with powerful meta-programming built-in, and zero compile time, allow expert developers to build features as fast as possible. If you are in a race for market share, with a huge reward to the winner, it makes sense to hire the very best developers you can find, and use whatever language will let them go fastest. You can worry about scalability later.

kevin cline
  • 33,608
  • 3
  • 71
  • 142
  • 1
    -1: C#, when written with Visual Studio, Resharper, LINQ, and .NET 4.0 libraries has slow edit/test cycles relative to other languages? – Jim G. Feb 26 '12 at 10:26
  • 1
    @Jim: not sure what your comparators are but compared to Ruby, Groovy, Clojure and other modern dynamic languages that I've used C# is definitely closer to Java and C++ in terms of both development style and iteration speed. YMMV but I don't think your downvote is particularly deserved - the OP's characterisation is broadly fair. Give the "expressive languages" a try, you might be surprised what is possible..... – mikera Feb 26 '12 at 14:25
  • @Jim G., yes, comparing to Common Lisp, C# edit/test cycle is slow. You cannot modify a running system. And you have to write a way much more code in C#, which slows things down even more. – SK-logic Feb 26 '12 at 15:05
  • @SK-logic: *[With C#] you cannot modify a running system...* - OK - So now we're talking about interpreted languages vs. compiled languages? – Jim G. Feb 26 '12 at 20:41
  • 1
    No, for example Erlang allows runtime modification and is a compiled language. – Ricky Clarkson Feb 26 '12 at 21:17
  • 2
    @JimG., Common Lisp is a compiled language (well, most of the implementations are pure compilers). Incremental compilation allows to do all the same tricks as interpreters, whereas with a separate compilation they're barely possible. – SK-logic Feb 26 '12 at 22:13