The Best Programming Language for Startups

I have a friend who I've worked on many side projects with in the past. Each time we'd start a new project, he would say something like, "What do you think about using [insert new backend] for this one?", or "How about this time we try out [insert hot new Javascript or CSS framework]?"

At first, when we were just working on side projects, I didn't think anything of it. We were having fun and trying new things. Learning new technical skills is part of the fun of side projects. We're developers, after all.

Eventually, my friend and I co-founded a startup together. Our startup went through several iterations and pivots, some of which required us to start over from scratch with a new codebase. With each pivot, my friend continued suggesting we use some different piece of technology as part of the core product.

As context, we're both skilled Ruby on Rails developers. We'd built several Rails applications in the past and could architect Rails apps and write Ruby code in our sleep. Getting setup and deploying to Heroku took a matter of minutes. We knew all the most common libraries, and had a process in place that allowed us to build and launch new ideas in weeks, if not days. We could get the job done using another tech stack, but it took a lot longer.

Speed is so important for startups. It's what gives us a chance against the big, entrenched competitors who, through sheer size and bureaucracy, have lost their ability to build, launch and iterate quickly. It didn't make sense to me why we would sacrifice our greatest strength in the name of learning a new toolset. Especially when most of the newer toolsets inherently had less documentation and fewer libraries, both of which result in writing more code and a longer time to launch.

So, why was my friend so keen on incorporating new technology into our projects?

He was still operating in Developer Mode instead of Founder Mode (see what I did there?) Developers enjoy solving novel challenges with code. If you keep building with the same technology over and over again, you don't encounter as many new issues. And this can be 'boring' to a developer.

A side effect of staying in Developer Mode is you tend to focus on developer problems rather than business problems. Instead of talking to customers and figuring out what to build, you default to writing more code and improving your existing code. For a developer, these are familiar types of problems with familiar solutions, and it's easy to trick yourself into thinking this is progress.

But while we're running a startup and in search of Product-Market Fit is not the time to prioritize learning a new programming language, unless it a) allows you to ship code faster (it probably won't) or b) helps you solve a necessary and immediate problem that you otherwise couldn't solve (it usually doesn't).

There are two primary reasons startups fail:

  1. They run out of money

  2. The founders lose the willpower to continue iterating long enough to force the startup to succeed

Prioritizing speed is the best way to avoid these fates. You'll learn enough along the way just by solving the necessary challenges you encounter when building a startup. Things like learning a new tech stack, refactoring code and optimizing for scale when scale is still a distant dream are all distractions that feel like progress to a developer. In reality, the only progress for a startup is growth.

The best programming language for startups is the one in which the technical founder(s) can build and launch the fastest.