Working with many startups I was wondering recently why Python and Ruby are so popular and common with young and promising startups, especially Scandinavian ones as my experience shows. I am curious if anyone has analyzed the trend towards Python over Ruby with startups? Also I would like to find out what are the advantages of Python over Ruby if they are so?
I think a lot about choices and decisions at startups. Picking the language/platform to use at a startup is one of the harder decisions. Here I would like to mention the fact that most of startups today make their choice toward Python or Ruby over PHP or Java. From what I have read, PHP is just an inferior language to Python and Ruby. Even though a lot of people are using PHP because it is easy to get started, it seems to be easier to develop bad habits with PHP. Why jump on a bandwagon when you obviously know is broken? I’ve come to realize that the main reason why PHP gets into trouble with the purists is that there are just so many ways of doing one thing — it is not that standardized. I think it became the most popular language only because it’s so easy to pick up!
Python/Ruby win over Java on speed of development, and conciseness of code. This generally makes Python/Ruby a better choice for small startups for whom speed to market, and ability to implement new features matters most. Most of the modern sites chose Python when they were small startups. Only later did they have to scale. Websites tend to be horizontally scalable, meaning that for a surprising range of volumes of traffic you can just throw more webservers at it and the bottlenecks will be at other layers (for instance the database).
Searching for relevant information to compare both Pyton vs Ruby languages and analyzing customers’ demand on the software development market I found out that Python appeared to be the more popular choice for startups trying to get a minimum viable product launched and seek out potential venture capital.
This has less to do with the merits of either language and more to do with the philosophies of the frameworks represented by either language. RoR really can’t be beat as a rapid application development framework, and developers discussing Ruby on the web are generally referring to RoR. Django purports to do the same, but the overall philosophy of the python community is more minimalistic – python developers generally prefer to make their own selection of tools such as ORMs, Persistency layers and libraries. A lot of people start Python web development with Django but move on to something more minimalistic like Flask, simply because the community seems predisposed to building its own stack in this way. RoR is more opinionated, and developers who are more predisposed to hitting the ground running, especially in the startup field, often take the Ruby fork in the road.
There is a “coming of age” point for startups coming from RoR or PHP, however. I’ve heard about several companies who had this exact same experience and ended up moving towards something like Python or Scala. I’m not certain this is specific to python, but I can say that as startups grow and become more ambitious, they move into problem domains poorly represented strictly by web frameworks/languages. Search features and data extraction increasingly rely on advanced data mining techniques utilizing things like natural language processing and find they need to reengineer their stack a little to accommodate new ideas. Increasingly I see companies not abandoning their RoR/PHP/Django frontends, but creating separate REST APIs that almost always use bare python or a JVM language to take advantage of more complex computation outside of the HTTP req/response model. Ruby could be used for this kind of offline processing, but the toolkits are just better and more mature in other languages since RoR is so prevalent in the Ruby community and consumes a great deal of the mindshare.
The fact of the matter is that most web startups represent feature sets early on where development speed is the prime concern, and so the language/framework with the biggest potential hire base and best RAD features typically win out early on.
As my personal point of view that no single language can answer every problem satisfactorily, and it is foolish to stubbornly stick to a single language for every case. Nevertheless a lot of our clients stick to Python when starting up their business. Let’s try to see what are the advantages of Python over Ruby?
The two are more similar than they are different, in everything from design to disadvantages to common uses – you can’t really go wrong either way, and shouldn’t base your decision on syntactical differences.
As Ruby developers say, Python’s main advantage has nothing to do with the language’s features. It’s more subjective: it seems that Python has more momentum amongst serious computer scientists. It’s increasingly popular in academic and scientific applications, and a lot of the technologists I respect the most seem to prefer it. By comparison, the Ruby community feels more designer-y and relatively more novice.
What this means is that while the Ruby world has very slick out-of-the-box product solutions, the Python world seems to produce more exceptionally well-written components like Tornado (web framework). Combined with it being used at Google and the potential for stuff like LiveNode to be released as open-source, I’d cast my lot with Python if I were starting today.
Thinking Python may be the best choice of startups, what is your opinion on this?
Looking forward to hearing from you!
We chose Ruby over Python because:
– Python is mainly used in academic circles (in Norway atleast), and hardcode research / computing / algorithmic problems.
– The hype around Ruby made it more ‘sexy’ at the time (2 years ago), and hence we reasoned it’d be easier to attract talent.
– Ruby on Rails was the hot thing among startups in Sillicon Valley when I was there, so we believed in it to become a mature platform with a lot of backers. Which it now is.
– The worldwide community and support was in my opinion better for Ruby than Python. More of our common problems was expected to be found answered on StackOverflow, which is really important. Also, there’s more tutorials and stuff on the web to get up to speed on RoR.
On the other hand, we’ve discovered that there are probably more developers in Norway with some experience with Python than Ruby. Since Python is used in Algorithm and Data structures courses in the top universities, and a lot of research environments use ruby for prototyping stuff. The ruby community in Norway was less, and is increasing less than we hoped (since it still takes a good amount of years from something is hot in Sillicon Valley, until it becomes hot in Norway). Java/C# is still prevalent, since a lot of the jobs are in consulting where they develop enterprise apps.
I learned Ruby as a scala developer and found them to be quite similar but scala has the performance advantages of running as bytecode on jvm. Appears scala and maybe the typesafe stack (especially play) is today where Ruby and Rails were a couple of years
Sometimes It seems like Enterprise and Business apps is more common to use Java and .NET stack but for social network related Ruby, Scala, Python and Node.js are more common.
Also Python is a language that is great for writing prototypes. It doesn’t require much time and the working prototype is already there, while other programming languages can take too long to do the same. The company I work in (Flyaps) use Python as key technology. Startupers are welcome: flyaps.com
Ruby is also just as great for writing prototypes. You can be up and running in no time with using Rails scaffolding (Python doesn’t have scaffolding yet, to my knowledge), or the Sinatra framework, which is very popular for small apps/prototypes.
I’m flattered you felt it necessary to copy my words verbatim from my Quora answer 🙂
According to the auther, it looks like some part of this article is coped from this Quora article and comments…