Victories and defeats in computer programming

Programming Language For Startups

October 03, 2020 | 5 Minute Read

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. July 1995 Perl 1987 At that time, websites were text heavy and perl was possibly the easiest way to manipulate text 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 2005 Php 1995 By 2005, Php was the reigning champion for web programming. 2003 Php 1995 In 2003, Php was the reigning champion for web programming. 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. 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. 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 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. 2009 Python 1990 Around 2005 saw the release of Django one of the post popular web frameworks 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.

Observed Patterns

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.
  • Nodejs is very popular among people who started their life in frontend programming. One gripe I have about javascript is that it changes way too much and way too soon.
  • 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.

Parting Thoughts

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.