Programming · Web Development

What is the most preferred programming language for startup?

Kishor Parmar SEO Manager at Herbal Remedy India (

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 - 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)

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)

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!

Hernán Durand Institute of Veterinary Genetics (IGEVET) - CONICET

October 16th, 2016

I tend to differ about asking Google being a wise choice, their results are not curated and their Machine Learning can never replace valuable human experience. Everybody can write a sound article about Scala, Clojure or any fashioned language and Google will rank it because is trending... But popularity is not productivity.

If you want people to reassure you're "safe" with Python, then you will be safe but your decision was biased in the first place because you just wanted to confirm Google results, which are not based on quality of technology. There are many choices for selecting a programming environment, or stack, toolset, etc. If you have Politics/Financial constraints, like your investors wants to go with Microsoft or Oracle to feel secure about investment, then you will suffer for them because they inverted the burden of risk. Shortly, if project fails you failed, not them (because they chosed the "safest" choice, for them). I must say also the quality of code produced by Python developers is **very** poor, if you take well-known OO metrics like Cyclomatic Complexity, Average Number of Derived Classes, Average Hierarchy Height, etc. (These are metrics supported by research papers, something that most practicioners don't read at all).

Now *it seems* that chosing Python or similar language will be nice because everybody is using it, and you can copy and paste code to death (an amazing promoted culture between some "developers"), but you have to see actually who is using it, the quality of what they've produced and its maturity (for example Scaffolding is NOT a gold qualifier for system maturity, Expert Systems are).

IMO the most preferred language for a startup is Smalltalk - a whole Object programming environment - specifically the Open Source MIT licensed Pharo Smalltalk. Ruby is like a file-oriented Smalltalk. In Ruby still some things aren't objects (control structures for one) and like Python, Ruby lacks a cool refactoring browser (actually they lack a Class Hierarchy Browser). In Pharo you can prototype with no need of a database to store your objects. You have libraries for SCC (GitHub, SmalltalkHub, etc), UI (Spec), Visualization (Roassal), Parsing ambiguous grammars, memoization, and left recursion (PetitParser), Geographic Information Retrieval (Territorial), OS communication (FFI, OSProcess), Science (Numerical Methods, BioSmalltalk), Static and Dynamic Web frameworks (like Teapot, Seaside + Bootstrap + Magritte for scaffolding), software re-engineering framework (Moose), Persistence (PGSQL, MySQL, SQLite, Oracle, DB2, ODBC, all of them through Glorp and GarageDB), Could SDKs (AWS), 3D, etc. There is a whole ecosystem worth to try it.

Smalltalk is the reference technology for Object-Orientation, Unit Testing, TDD, Reflection, Refactoring Browser, Generational Garbage Collection, and other artifacts (yes, all those things were created in Smalltalk) adopted by other camps. Today there are other FOSS Smalltalk flavors like Amber which compiles to JavaScript AMD, GemStone/S (active OODB), and Dolphin 7 for native Windows UI's.

So there is a whole world of nice tech beyond top Google results :)
About of lack of developers argument, there are *many* out there around Pharo (see Pharo Consultants for example).

In the end marketing words like "efficient", "quick", "scales better", "standard" doesn't matter at all.... measure them to see their system properties, everything else is just noise from coders doing marketing for their beloved language/stack.

Tim Boudreau Consulting Product Manager / Software Engineer at Oracle Labs

October 16th, 2016

The answer depends entirely on what your goals and priorities are, and what abilities the people who will write it bring to the table.

If your goal is to create something quickly and you don't care if it scales to large numbers of users, you will make different choices, and rewriting it to be able to scale is a cost you've deferred.  If you're goal is to make something that looks just good enough for your company to get bought, without actually having to work, you will make different choices than if you're building a business that's supposed to make money by making money.  If you have money to throw lots of hardware - which usually these days means lots of cloud servers which are not cheap - at the problem, then frameworks that are not very efficient will be fine.

I can see not wanting to go with Java - the Enterprise Java stuff that is typically what people know is inefficient, slow to develop on and does not scale well.  I would point out that there are alternatives in Java - for example, frameworks built on Netty (full disclosure: I am the author of one such) - that don't have those problems.

So it's really about what costs you want to defer vs. pay up front, and what ones you expect to be someone else's problem.

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 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.

Todd Blanchard Co-Founder at Rewind Inc

October 17th, 2016

It doesn't matter much.

You are going to build a web browser hosted application with some live ajax features (notifications, chatting maybe).   On the browser you're going to write in HTML and Javascript with some number of Javascript libraries (there are many, they all skin the cat a little differently).

On the server, you will likely use anything that can parse an http request and spit back json.  My personal preference is bare handed PHP.  It deploys quickly and easily.  It has a very robust runtime model.  It has very little overhead with respect to tool chain (no compilers, no "app containers" to fall over, dead simple deployments).  PHP developers are plentiful.   PHP has a bit of a bad rap because it is easy to get started and a lot of amateurs have build some truly horrific piles of pasta with it but PHP is coming into a new age of good package management via composer and more mature frameworks like Laravel (which I personally don't use).  PHP scales very well in the cloud.

Ruby on Rails is similarly productive and easy to build product with more deployment headaches and more overhead.

Python is a bit like Ruby but lacks a really cohesive web culture.  

Java has a fairly large tool chain overhead and is slow to develop due to compilers, build processes, application container overhead, etc.  It is always my very last choice.

NodeJS is gaining momentum but I don't have enough experience with it to recommend it and a few apps I have seen have been tremendously bad at error handling.  Server side javascript isn't a lot like browser hosted javascript even though the language is the same.

At the end of the day, language makes very little difference compared to architecture and algorithms.  If you are writing it yourself, use what you like.  If you are hiring it out, use whatever make hiring your team easiest.