Programming Language For Startups
Over the last decade and a half, I have had the opportunity to architect many products from scratch. As the mast of my blog will say, I have tasted my share of victories and defeats. In all these endeavors, I have never stopped loving programming and wanting to be a better programmer. Quarantine is 2020, and I wanted to use my free time dissect architectures of websites that inspire than to look at my follies.
Today, centering a div and choosing a programming language are some of the most challenging computer science problems. Like all faith matters, it has led to many battles and fights between well-meaning and smart people. In the past few years, numerous studies on the relative quality of programming languages. PYPL, TIOBE, Stack Overflow regularly comes up with a score for programming languages. All these metrics have their merits, but I wanted to do a more qualitative study of programming languages.
In the thirty years since Time Bernard Lee created WorldWideWeb,
many companies operating on the web have made it to the list of most valuable companies.
In my research, I found many articles on companies’
current architecture and how they solved significant scaling problems.
I was more interested in the early days of these companies.
I chose fourteen companies that inspired me. Collecting data is not enough.
I wanted to find patterns.
As Leo Tolstoy once said, “All successful product architectures start alike;all unsuccessful products are unsuccessful in their own way.”
|Product||Year Made||Primary Language||Language/Framework Founded||Hypothesis on why did they choose it ?|
|MS DOS||1982||8086 Assembly||1972||Microsoft had to deliver a new operating system for IBM in limited time. Instead of building from scratch , they modified the 8 bit CP/M for 16 bit PCs.|
|Yahoo Directory||1994||Html||1991||No definitive article on the initial architecture of Yahoo but based on architecture of related WWW Virtual Library, it can be guessed it was pure static pre generated html.|
|Amazon.com||July 1995||Perl||1987||At that time, websites were text heavy and perl was possibly the easiest way to manipulate text|
|Google.com||July 1996||Python||1990||In 1996, python was probably the easiest way to crawl the web as compared to any other language. At it’s heart, google is a crawler|
|Youtube.com||2005||Php||1995||By 2005, Php was the reigning champion for web programming.|
|Facebook.com||2003||Php||1995||In 2003, Php was the reigning champion for web programming.|
|LinkedIn.com||2002||Java Servlet||2002||Around 2002-2003, Sun was spending a record 500 m $ in marketing java. This created an ecosystem of performant backend.|
|Docusign||2003||dot net||2002||Docusign started as docutouch in 2000. At that time, they were signing microsoft word. Hence, they continued leveraging their strengths in microsoft stack.|
|Paypal||2002||dot net||2002||Paypals payment code started as client side application and migrating to dot net for the web world was easy.|
|Shopify.com||2006||Ruby on Rails||2004||They built the entire website in two months time for their own store and then decided to create a platform.|
|Twitter.com||2006||Ruby on Rails||2004||The app was rapidly prototyped in a few days by a few friends at work and ROR was the fastest way to prototype in 2006|
|Dropbox.com||2008||Python||1990||At its core, dropbox is a distributed file server. Dropbox founders liked python. They needed to work well both as desktop and web server and python fits the bill better than ruby or php at that time.|
|UberCab.com||2009||Python||1990||Around 2005 saw the release of Django one of the post popular web frameworks|
|Stripe.com||2010||Ruby on Rails||2010||In Patrik’s own words, there was little to choose between Ruby and Python . They knew ruby better . They also punted on solving scalability problems.|
In my anecdotal survey of languages, a few things stand out.
- Successful companies picked languages that the founding team knew very well. Quite a few products owe their birth to intellectual curiosity, but I did not find a single company whose original architecture was an indulgence in intellectual curiosity.
- The founding team optimized for speed of iteration over everything else.
- The founding team executed fast. Some groups had moved from idea to release in under two months.
- Scalability was never an existential crisis. A lot of products had a change of stack later. Youtube became python while Twitter moved to scala. Facebook decided to create compiled PHP to optimize performance.
My take on today’s programming languages
- Php is the most straightforward language to deploy.
- Python is the best general-purpose language due to its wide array of libraries.
- Ruby on Rails has proved that convention is better than configuration. I like that it restricts the options available to developers. The lack of choice ironically leads to faster web development.
- For my startup, I would use Elixir. I have been coding in Elixir for the last two years. I like that it is as opinionated as Ruby on Rails without the metaprogramming.
To sum up, I will borrow Patrick’s answer as to why he chose ruby. “It’s reasonably powerful, it has a large community, there are lots of actively-maintained libraries, and it’s sufficiently widely deployed that you’re unlikely to hit big, unexpected problems” We can use the same justification for any language.