The Best Programming Language for a Lean Startup

Think arguments between religious zealots are intense? You’ve obviously never witnessed two developers – usually new developers – debate the following question: What is the best programming language?

There is a good reason why a programming debate resembles a dogmatic religious debate: both sides have invested heavily in something that achieves essentially the same goals but cannot point to a specific reason why their choice is “better”.

Of course veteran programmers find these debates tedious because they have seen so much come in and out of fashion. Their usual – and correct – answer is “it depends”.

This ambiguity presents entrepreneurs with a dilemma since ultimately a start-up has to make a decision to bet on a particular technology stack. Just today I saw the following tweet from @RemyMiralles:

Someone on aardvark is asking me “Why is Python so much better than PHP?” There are just different!! it depends on what you need!

Indeed.

But Remy’s answer highlights the dilemma of the entrepreneur committed to pursuing a lean start-up path: By definition you are trying to solve something where both the problem and the solution unknown so you don’t know what you need.

6 months ago I would have attempted to answer this question with some rambling diatribe about scalability, developer cost, frameworks, etc. I now think I have a simpler answer:

The best lean start-up language allows you to iterate your ideas the fastest with the market.

Or, as Eric Ries likes to call it, minimizing total time through the start-up feedback loop:

What Eric Ries calls the core feedback loop for start-ups

My assertion raises the obvious follow-on question: What programming language allows me to iterate the fastest?

Well, if you are truly following a lean approach you probably realize that the choice of dev environment isn’t your top concern. It probably isn’t even in the top 10 for most web-based start-ups these days. You can learn a lot about your customers’ needs with mockups, phone calls, and sketches before you write a line of code.

When you finally are ready to start building the product, the decision might be obvious:

1. If you are a programmer, just pick what you know the best. This isn’t the time to learn Python if you’re already a PHP stud. Get coding, start failing, start learning.

2. If your employees or partners are programmers, just ask them what they can use to iterate the fastest. 99% of the time it is whatever they already know. This isn’t the time to “build it in Erlang for future scalability”. You should be so lucky to have scaling problems some day.

If you’re a “business guy” who plans on completely outsourcing the “programming” to contractors … well … good luck to you. Hopefully you have some idea for how you’re going to pivot. My advice is to find a technical co-founder. You can even use the technology stack choice as a recruiting tool. I’d pick Python to just to get Chris Hagner on the team or Erlang to get Rusty Klophaus even though I’ve never written a line of code in either.

Great developers – not programming languages – build great products.

Finally, if you still don’t know what language to pick, choose Ruby on Rails because it is the best. If you don’t agree, get ready for a public stoning.

22 Comments

  1. Joel Gascoigne October 15, 2009 at 10:43 am #

    I’ll be honest – I came to this post expecting to have to argue somewhat. However, your conclusion is the main point, and answer, for this question:

    Great developers – not programming languages – build great products.

    We’re following lean startup techniques at OnePage and luckily for us, I am a true technologist from a Computer Science background and I have had a passion for web technologies for many years. My Co-Founder is all about business and marketing specifically on the web, having just completed a masters in eBusiness Management.

    As a developer turned entrepreneur myself, I’d love to learn Ruby and Python sometime, but as you have very rightly said:

    This isn’t the time to learn Python if you’re already a PHP stud. Get coding, start failing, start learning.

    That’s the very approach we took.

    My opinion is that it is the framework you create within whichever language which will be the most important part. The framework needs to be engineered in such a way that things can be rapidly modified and extra functionality added quickly. In addition to that, the ability to constantly refactor the code such that it is continually improving is vital.

    I couldn’t agree more with not outsourcing the technology aspect of a startup though. BIG mistake. Web development is not a one-off product which can be outsourced, and by going the waterfall route of development you are going against the lean startup concept before you even begin! Also, at the early stages of a startup it is the developers who are the most valuable asset. Entrepreneurs must realise and embrace that the ideas are worthless without successful execution.

    • Kevin August 8, 2014 at 1:35 am #

      And look how far Buffer has come since then. I’m working on building a startup myself and these are valuabe lessons to be learning early on

  2. Craig Taverner October 16, 2009 at 10:29 am #

    When I started my new business last year I made the ‘strategic’ decision to base the product on Ruby, but when it come time to build the development team, guess what? I could only find top coders in Java. So, now most of the app is in Java, and I switched my ‘strategy’ to JRuby, so I can benefit from both worlds.

    One other point, experienced developers, or great developers, can switch languages. When I asked my top Java guy to allocate a day to read ‘Programming Ruby’, he was mildly offended that I thought he did not already know Ruby. Now he’s my top Ruby guy too.

  3. Marco Tabini October 17, 2009 at 5:13 pm #

    Excellent article, to which I would only add not to get hung up on writing “beautiful” code—at least at the beginning. As you say, don’t worry about scalability, or “clean code” or anything other than getting things done (that is, focus on functionality, UX and security).

  4. Matt McKnight October 18, 2009 at 1:13 am #

    I really like the idea of the technology stack as a recruiting tool, as long as the person you are bringing on can find/train others willing to go that route. I’ve seen projects run into problems with people having trouble adapting to functional programming, for example.

  5. Ant October 18, 2009 at 2:42 am #

    Especially when talking about startups and Web based applications, there is a tendency to apply the same argument to process too. Agile might be great for a web app but not appropriate for building spacecraft. It frustrates me that experienced developers, as you say, know that the best language depends on the problem and their experience, but the best process is the shiny new idea.

  6. Parag Shah October 18, 2009 at 3:43 am #

    I agree “the developer matters more than the language”

  7. cristian ditoiu October 18, 2009 at 3:50 am #

    Actualy the startup-feedback loop is a…remake(?) of dmaic from six sigma, nothing new .
    http://www.isixsigma.com/dictionary/DMAIC-57.htm
    The best language is the one you have control/expertise

  8. reboltutorial October 18, 2009 at 8:13 am #

    @cristian ditoiu and six sigma is a (bad) remake of original quality founders Deming and Shewart PDCA http://en.wikipedia.org/wiki/PDCA 😉

    As for the best programming languages the easy and general answer is “there is no best it depends” so maybe for example Rebol is one of the best programming language but I confess it’s far from the best as for the ECOSYSTEM so I’m pushing the Company (I’m not employee of it though but just a user) to focus on that point with the next version of R3.

    Rebolution3: think Solution not Revolution

  9. Greg October 18, 2009 at 12:13 pm #

    The majority of software life-cycle cost is spent in maintenance and enhancement. True, as a startup, your first focus has to be getting stuff done quickly, and that goal is best served by using the toolset you’re used to. But if you can also select a software ecosystem that has wide adoption and a huge support framework, you’ll have the advantages of finding new talent much more readily, and of being able to slam in large chunks of functionality from open repositories, such as CPAN for Perl.

    If I were saddled with this problem, I’d maybe have a look at Perl 6. It’s almost done baking, and it not only has a language feature-set that makes it an awesome choice in terms of structure, flexibility and whipitupitude, (IMO Perl 6 > Python 2 > Perl 5), but also has the backward support of all the existing Perl 5 modules and culture (both features that Python never really gained).

  10. Piet Hadermann October 18, 2009 at 4:18 pm #

    You could also use the technology as a recruitment filter. A job position for a java or C# programmer will attract different kind of developers compared to one for python or ruby. (just picking the programming languages that pop into my head here – I wouldn’t dare to say one is better than the other… I have an almost abnormal preference for ruby though)

    Not saying that java or C# programmers aren’t any good, but there will be a lot more ‘career programmers’ who aren’t really passionate about what they do, and just as well do something else if it would make them more $$$. Not sure you’d want these in a startup.

    But then, I know someone who started a startup last year (probably the most brilliant developer I’ve ever met) and he’s looking for people with F# or Haskell skills, and just is unable to find someone. There’s no advance in that either.

  11. Jason Huang October 18, 2009 at 8:05 pm #

    Depend on what you feel most comfortable with, skills you have, situation calls for specific technologies vs. others.

    A good developer can often do it in different languages, they have the good judgement of making the good call.

    PHP is highly recommended because it’s straight-forward and widely used with lots of resources & help available if somebody gets stuck.

  12. philip andrew October 18, 2009 at 8:11 pm #

    There are “sweet-spots” and “ugly-spots” in computer languages and software tools, frameworks, etc. For example, if you were programming Struts version 1 in Java, thats a ugly spot. A sweet spot may be Liftweb in Scala.

    Be careful of the ugly spots.

  13. Jack Mullaney December 26, 2009 at 10:52 am #

    Yes, it is the programmer more than the language that makes the difference, but there are a few basics:
    1) Choose a popular language so you can easily find programmers.
    2) Object oriented is best.
    3) Structured is best.
    4) Probably the simplest way to identify good code (and a good language) is to read some. The more straight forward it seems, the better it is. (Easy to understand = hard to hide bugs)
    5) Evolve instead of Develop your code. (Build simple apps for fast feedback, change/add code to improve it.)
    6) Whatever you have written will be wrong. Plan for change. Expect to undo.
    7) Write the code in two orders.
    a) Code the observable (probably GUI) first for feedback
    b) Code the confusing/problematic parts first for feed-forward

  14. RazorX August 25, 2011 at 5:41 pm #

    Sometimes being a great programmer is not enough especially if the tool become the bottleneck. Mod_python executes code 15 times faster than PHP. This doesn’t make a difference in small scripts, but in medium to larger applications PHP gets slower and slower. I’ve written in PHP for years now, and Python is still the better tool.

  15. Kevin October 26, 2011 at 11:58 am #

    Just choose c#, nuff said.

    • Lisa September 20, 2012 at 8:32 am #

      I deal in startups and C# is rarely used, it makes no sense to go Microsoft and the associated infrastructure startup and ongoing costs as shown by 99% of startups avoiding it!

      • Matt December 5, 2012 at 9:35 am #

        What you say is true in regards to the popularity of C# in startups. But not because you’re tied to Microsoft and the associated costs.

        Quite frankly, C# isn’t cool. It’s the language of the man. Young entrepreneurs are likely to want to show off their independent thinking and anti authoritarian methodologies. While those traits are actually vital for new startups, choosing a language based on that is a matter of the perceived culture surrounding the languages. Not any actuality.

        C# has an uptight suit and tie sort of image due Microsoft’s influence and it’s predominance in the Business software realm. Ultimately it’s just a Byte code compiled language with some interesting features and a quick pace of advancement. People like to say that c# ties you to microsoft, if they even know of Mono it tends to be dismissed as unstable or fitting a square peg in a round hole. All that is hogwash, Mono might not have been up to production standards back in 2008 when people started saying that. But it’s come a long way, unfortunately people like to just repeat what they’ve been told in a knowing manner. Right now, while java may run in more devices… (like your washing machine). In the user land role c# is at the top for ease of cross platform productivity. Aside from native c/c++ code which typically takes 5/10 times as much time and effort to get to run seamlessly crossplatform.. c# is pretty much the only game in town if you want to target Windows, linux, mac, IOs, Android, Xbox, and Playstation. Can’t do that with java, and a lean startup is going pretty late out of the gate if they roll their own in c/c++.

        There is some value in going with a language like python or erlang.. Like the article says great programs are written by great developers, not great languages.. And a lot of really smart people gravitate towards the “cool” languages because of the culture they feel most aligned with. That’s a completely valid reason for going with those languages.. Avoiding c# which is a ECMA standard that advances at a much quicker pace than just about any other language because you feel it ties you to expensive software isn’t..

        It’s extremely important to realize that C# does not equal .net. Though many of the .net languages have been ported to mono.. Some of the Propriety windows ones haven’t. That’ doesn’t make mono an incomplete language as their are open source alternatives.. It’s still more complete than the STL and BOOST combined, with plenty of open source frameworks GTK# etc to fill in the gaps.

        I may sound like a C# evangelist, but I’m not. I just hate seeing the whole let’s bash the evil corporation and everything attached to it propaganda being perpetuated. For the record my favorite language is Lisp, my second is c#, and my third is c. I just call it like I see it.

        • Luis August 29, 2013 at 12:27 pm #

          “I’m not a C# evangelist… but it is my favorite language after a quirky one that is mostly used in Emacs, and that’s just partially.”
          Hilarious.

  16. Juan Pablo Kutianski August 2, 2012 at 11:48 pm #

    The best programing language for a Lean Startup is the one that allows you to code faster and learn faster to minimize the time through the loop.

Trackbacks/Pingbacks

  1. Why Every Entrepreneur Should Code - March 2, 2013

    […] How to Learn how to Build Your MVP The Best Programming Language for Lean Startups […]

  2. Programming language - which one is right for my startup? - July 31, 2017

    […] leave you feeling more comfortable with the upcoming tech negotiations. But in the words of Kevin Dewalt, there’s only one thing you really have to keep in […]

I read EVERY comment and want to hear from you