Programming · Web Development

What is the most preferred programming language for startup?

Kishor Parmar SEO Manager at Herbal Remedy India (HerbalRemedy.in)

October 16th, 2016

Tell your experience if you are tech entrepreneur. If you are non tech entrepreneur then explain what your developer recommended and what points he/she pitched to select particular language.

I want to develop a web app which is going to be like Google Analytics dashboard.

One can add different metrics and predefined factors for analysis.

Also I want the real time notification just like facebook.

Which language is best?

I have researched on google and quora and Python is so far found to be recommended most of the times.

Java is top recommended but I don't want to go for it.

After python, Ruby is second preferred.

Tim Boudreau Consulting Product Manager / Software Engineer at Oracle Labs

October 16th, 2016

I realized my earlier response didn't give much practical advice, so:

First, web applications really divide into two categories - server-side HTML generation (which is slowly dying), versus flat files served by a plain old web server plus a JSON REST API for dynamic content (scales far better, but requires more client-side Javascript expertise, and SEO is tricky).

If the goal is a quick'n'dirty prototype you know you're going to throw away, server-side HTML generation might get you there faster.


Server-side HTML generation:

  • PHP - fast to develop, plan on paying for 10-20x the compute you'd need otherwise and constant vigilance to avoid being hacked - PHP is by amateurs, for amateurs.  Easy to find developers, but competence level will vary wildly, and not easy to determine.
  • Java EE - not fast to develop, plan on paying for about 5x the compute you'd need otherwise, developers are easy to find
  • Ruby+Rails - similar to PHP minus some of the getting hacked, a little harder to find developers
There are, of course, many smaller frameworks - these are the big ones.

Flat files + REST (you can use any web server, I'd recommend NginX):

  • Java EE + Jersey or another REST framework - simpler to develop, standards-based so developers are cheap and easy to find, but still relies on 100Mb footprint application servers
  • NodeJS - lightweight and blazingly fast; a number of frameworks build on top of it (I'd personally recommend HapiJS)
  • Plain Java + async frameworks such as Akka.io/Play/Acteur - scales better than NodeJS, and more maintainable code (static typing has proven less costly for long term maintenance)

Shea Valentine Data Science Lead

October 17th, 2016

So, I want you to take every comment here with a grain of salt.  "What is the best language?" is to a certain extent a religious war, and the biases of the person answering are going to factor strongly into their answer.  As someone who prefers Python, I could tell you why I think it's "the best" for all sorts of technical reasons.  I'm not going to do that, what I am going to say is that for the initial build the best language is going to be relevant to your immediate need.

Since you want to develop a webapp, I'd suggest you skip all the System Programming Languages (Java, Scala, C#, C/C++).  They trade performance for development speed.  What you want is a language that can scale horizontally, not one which has a low latency - which is what you'll get out of Java.  (It costs way less to have 3x servers than to have 3x developers)

I'd also recommend you avoid unusual languages unless you already have someone with expertise in that language available (Haskell, Ocaml, Erlang, Smalltalk).  These languages all have great features about them, but hiring is going to be hard enough getting your core devs productive.

I think you're left at this point with Python, Ruby, and PHP.  I think each of these has one place that it's strong:
PHP is the ideal language if there are relative few dynamic elements to your site.  For example if you want a form that can be filled out and have it send an email, PHP is ideal.
Ruby really means Ruby on Rails.  There are a great many web developers that can very quickly whip up a webapp in Rails.  For medium complexity webapps that mostly involve CRUD (Create, Read, Update, Delete) operations and a bunch of javascript it's probably ideal.  The thing is, you don't actually need much computer science expertise for most webapps, and this is where Rails does well.  (I don't much like it myself, but it clearly works).

Finally, Python has Django which is _almost_ as good as Rails for medium complexity webapps.  It also has Flask for high and low complexity webapps.  If your program require complicated algorithms I would suggest you go with Python.  Python is "safer" than Rails, and it's application is wider than Rails (that is to say, Rails gets in the way at a certain level of complexity, and many Rails devs aren't actually software engineers)

Scott Bundren Marketing Director at 3 Cents Media

October 17th, 2016

Tim from Oracle thinks Windows is an unstable O/S, OK noted. I would have to agree with him, to be very careful about who you take advice from ;)

Justus Eapen Visionary Technologist

October 18th, 2016

Typically, startups rely heavily on programming velocity, time-to-market, etc. Generally, Ruby is the best language mentioned.

Python would probably be a close second.

If rapid prototyping is your main concern (i.e. finding product-market-fit) then choose one of these. There are plenty of developers globally who would love to program for you in these languages.

If you've already found product-market-fit and are looking to scale. Node.js is probably the sexiest, most performant option. Lots of devs love being able to write the whole stack in JS.

Like others have said, I'd probably stick with Ruby unless data science was highly important to your MVP development. Then Python would probably be your best option.

Frankly, you should go with whatever your lead dev or CTO wants to use. They'll pick something they know well and develop rapidly with. That's assuming you've selected a solid technical partner, which is much more important than the language you use anyway.

Good luck!

Shea Valentine Data Science Lead

October 17th, 2016

By the way:

Python is probably the #1 data science language that also works as a webapp, but there isn't enough information here to know if that's relevant.


Also I want the real time notification just like facebook. 

PHP, Ruby, and Python are all going to support websockets, Jabber, and other related protocols.  This is going to be more about getting the right System Engineer and platform than it is going to be about choosing a language.

(Also, I didn't mention NodeJS above because I haven't worked with it much.  What I can say is that it still hasn't resolved dependency hell with its package manager, and it's good at threading.  Neither of these are likely to make or break it)

Tim Boudreau Consulting Product Manager / Software Engineer at Oracle Labs

October 17th, 2016

I'd like to point out that while a few of the people responding here are actual software engineers, a lot are not.  "I like it" is not a credible technical argument.

A few particular bits of bad advice stand out:

  1. C# - yes, it's viable, but you will have to deploy on the most vulnerable OS on the planet, which is a significant liability
  2. R - R is good for data mining, yes.  It also suffers from performance problems which become a real issue at scale - you're talking about real-time analytics, which suggests you are taking some data in in real-time, and then for each customer and each unit of data collection they have, you run some calculations and push out your notifications.  What is acceptable performance for someone running some computations on their laptop to spit out a one-off report - say, taking a few seconds to chew on the data - becomes something with huge compute requirements if you're trying to do it for a hundred thousand clients and get that done for each of them before the next wad of data arrives.  If data needs to be processed faster than the system can do it, you don't have a product - and the early choices you make on this can make orders of magnitude difference in how much work the system can do per second - and therefore how many customers you can support at what cost.  Fine to try it, but get some performance numbers early and multiply that out for a large number of customers and see if it scales before investing heavily in it - I've heard of startups paying $80k/week to Amazon for servers because they didn't do these sorts of calculations upfront.
Stepping away from the language choice issue for a minute, there are a lot of off-the-shelf technologies for real-time dashboards you might be able to use, many of which are open-source.  These tools don't care what data they're displaying, and are real-time capable - a lot of them grew out of the need for companies to monitor their systems in real time.  Grafana might be a good place to start - http://grafana.org/ - and look around for other dashboard-like things that work with Etsy's "statsd" metrics collector - it's a good jumping-off point for that sort of thing.  Adapting things like that could save you some months of development.

Again, you will make different choices depending on whether the goal is to build something quick and dirty to impress investors vs. building something that's supposed to exist long-term for a company that's going to make money on its own - there you want to minimize long term maintenance costs, while for quick'n'dirty, it just needs to prove the concept could work (and you should plan to throw it away).

Scott Bundren Marketing Director at 3 Cents Media

October 16th, 2016

The standard approaches are ASP.Net or ASP.Net MVC on the Microsoft side, or PHP on the Linux side.

You should look at tech stacks that have been around for at least 5 years or longer, that also have established experienced developer bases.

There are frameworks on top of these that can provide for fancier UI, etc. You want to consider flexibility, extensibility, stability, time it takes to code, cost of developers, etc.  You might want to consult a few senior devs about this--make sure they understand your needs, so its not just you hearing about their favorite latest hobby language.

Valeriia Timokhina Eastern Peak Software: Custom software development

October 17th, 2016

I can suggest you Ruby on Rails. You can read more about it's benefits in the article:

Ruby allows efficient ways for building applications at each step of development process, when many important components can be generated instead of being coded. Besides, Ruby on Rails contains many proven methods and policies, recognized by both junior and senior devs, thus guarantying good software design results. It also means that it would be easier to modify and maintain the code in future. Even after launch of Ruby web site, adding new features and making other changes would be a piece of cake.

Howard Shubs System manager / programmer

October 16th, 2016

Well, I'm currently looking at Rust.  It has hard typing and variables which are read only BY DEFAULT.  So cool.  There may be a problem with it that I've not yet seen, having not yet parsed the whole language, but the main problem may be that few people know the language.

Scott Bundren Marketing Director at 3 Cents Media

October 17th, 2016

Just as a comment on the other commentors--C# is not exclusively a "Systems language".  It is also the primary language in the Microsoft stack for developing web apps.  It has been used for this purpose for at least 10 years.  Its a quite stable solution and does not take much more effort to code than PHP.  

I realize a lot of people want to be on the Linux stack, but the Microsoft stack is also a very viable option to consider.  Personally, I've used it for most of my projects.