September 19, 2022

I quit programming 3 years ago. But DHH's promise of Rails makes me want to get back to it.

For the past ~3 years, I have been making a living as a community professional. I help startups turn their faceless audiences into online communities where they can show their personalities and create value for each other. I love it!

But in my earlier life, before I was into communities, I was trying to build a career as a programmer. I wasn't half bad at it either. In fact, I enjoyed it. I even wrote articles to teach people what I learnt - articles that have been read by >500,000 people!

But I failed to build anything real with my programming skills. So, I quit.

My failure to build something real by programming

I have a bachelor's degree in programming but I never cared for it. I only got into programming because of my fascination with Paul Graham's essays. I read them in my 2nd year of college.

Paul Graham told me that building a startup is how nerds can take over the world and being a great hacker is the best way to start. So, I got inspired to teach myself how to code using the Internet and building pet projects.

I tried learning the C programming language by building the game of Tetris but soon realised that C was sorely outdated. Nobody codes in C to build real applications anymore. I had to learn Python or Javascript.

I tried learning Javascript/HTML by building a Chrome browser extension but then realised that it was ugly AF and I would have to spend months learning frontend technologies to make it beautiful. I saw this monstrous frontend roadmap and decided not to pursue web development.

Then, I got into Machine Learning and Data Science using Python. These were the next frontier of technology in 2018. But after spending months pouring through countless courses, analysing toy datasets and building prediction models for them, I realised they weren't enough to build a product. If I want to create something that I can put in the hands of people, I had to learn to develop web or mobile apps.

Long story short, I had spent 3 years jumping from one technology to another, just trying to collect skills that would one day enable me to solve real problems and become a founder someday. Bad strategy, I realise now.

Without a sense of direction, I got overwhelmed - there was just too much to learn in programming! So, slowly transitioned myself out of programming.

How to be a great programmer?

"Start programming at the age of 12"

My 3 years in programming told me that before I'm capable of creating any real impact using my coding skills, I would have to learn it for another - God know how many - years!

Anyone who has "done it" has either been coding since the age of 12 or working crazy hours or both. Probably both.

Then in 2020, I stumbled upon DHH. He:

  • is the co-founder/CTO of 37Signals, a bootstrapped company whose product Basecamp has millions of customers and has made hundreds of millions of dollars in revenue
  • is the creator of Ruby on Rails, an open-source framework which powers top companies like Shopify, Github etc.
  • recently launched Hey, an ambitious Gmail competitor that was a success right from the launch day

More importantly, this is a guy who breaks the mould of a "technical cofounder" in every way possible:

  • grew up, lives in Denmark (not Silicon Valley or even USA)
  • got into programming only at the age of 20 - with no programming/maths degrees or programmer parents
  • built and released the first version of Basecamp in 2004, his 3rd year into programming

You're probably thinking he must have incredible grit and must have hustled during those 3 years, working like 100-hour weeks. But you could not be more wrong.

He is arguably the loudest advocate for having a work-life balance:

  • By his own admission, he built the first version of Basecamp while working only 10 hrs/week.
  • He still works a maximum of 40 hours/week and often spends 100% of his day coding. Remember, he is the CTO of a company doing tens of millions of dollars in revenue with 2 major products.
  • He is also a New York Times best-selling author, Le Mans class winning racing driver and a family man who enjoys playing video games with his kids.

A self-taught programmer who only got into coding in his 20s and was able to build a product that does 100s of millions of dollars in revenue without hustling himself out of a personal life.

This should be impossible!

But here he was alive and real, speaking to me on Jason Calcanis' podcast.
DHH's story told me that there exists a path that I can follow to learn programming and build useful things. A path that wouldn't require me to pour years learning the craft.

I had seen the Black Swan and it had hijacked my brain.

The promise of Ruby on Rails

If you have dabbled in the world of web development, you may think that DHH's story is possible only because web development in early 2000s wasn't nearly as complex as it is today. And DHH would probably agree with you.

"There's so much to learn these days, if you want to be an expert in all the latest tools and techniques. The conventional path, as paved by solutions extracted from giant tech companies, is a journey akin to The Oregon Trail. You might well die of dysentery before you ever get to your destination!"

- DHH

Luckily, DHH is fighting this complexity with his open-source framework Ruby on Rails. His vision is to create the One Person Framework:

"A toolkit so powerful that it allows a single individual to create modern applications upon which they might build a competitive business. The way it used to be."

And that's the promise that Ruby of Rails boldly states on its homepage:

It is this ambitious promise backed by a man whose achievements feels incredible yet reachable that makes me want to get back to programming. This time with Ruby on Rails.

Not just a toy

As an aspiring founder, I find it comforting to know that despite being beginner-friendly Rails is not just a toy. Which means that if I create something using it, I don't need to worry about replacing it with serious tools as I get bigger.

Rails is the real deal. DHH created it by open-sourcing the backbone code that Basecamp and now, Hey runs on.

That's not it - countless recognizable companies have used Rails to create products that have reached millions of users and billions in market valuations, including Shopify, Github and Airbnb.

Ruby on Rails framework has been around for two decades now. That's ages in the web development world where new frameworks are released every month.

So, if you go by the Lindy Effect, you can count on Rails being around for atleast two more decades. That's a long lifespan for a web framework!

Rails doctrine for the aspiring founder in me

One of the reasons behind success of Rails is the controversial doctrine at its core that drives its development. This doctrine, written by DHH, comprises of a "wide set of heretical thoughts about the nature of programming and programmers".

Here are 9 excerpts from the Rails doctrine that are especially attractive to the aspiring founder in me:

  1. Optimise for programmer happiness - "I created Rails for me. To make me smile, first and foremost. Its utility was to many degrees subservient to its ability to make me enjoy my life more."
  2. Convention over Configuration - "beyond the productivity gains for experts, conventions also lower the barriers of entry for beginners. There are so many conventions in Rails that a beginner doesn’t even need to know about, but can just benefit from in ignorance. It’s possible to create great applications without knowing why everything is the way it is."
  3. The menu is omakase - "with Rails we decided to diminish one good, a programmer’s individual privilege to choose each tool in their box, for a greater one: A better tool box for all."
  4. No one paradigm - "The way to alleviate some of that learning burden is to simply just make it easy to get started, make something of real value, before you understand every single aspect of the framework. We have a rush to Hello World for this reason. Your table already prepared and an appetizer served. The thinking is that by giving something of real value early, we’ll encourage the practitioners of Rails to level-up quickly. Accept their journey of learning as a joy, not an obstacle."
  5. Exalt beautiful code - "Part of the beauty comes from these calls honoring the previous principles, like Convention over Configuration. This leaves the programmer with very little code to write. This is very different from a programmer making all this happen and stitching the workflow together from libraries they call themselves."
  6. Provide sharp knives - "Ruby on Rails is an environment for chefs and those who wish to become chefs. You might start out doing the dishes, but you can work your way up to running the kitchen. Don’t let anyone tell you that you can’t be trusted with the best tool in the trade as part of that journey."
  7. Value integrated systems - "Rails specifically seeks to equip generalist individuals to make these full systems. Its purpose is not to segregate specialists into small niches and then require whole teams of such in order to build anything of enduring value."
  8. Progress over stability - "...it’s why it’s so important for us to continue to welcome and encourage new members of the community. We need fresh blood and fresh ideas to make better progress."
  9. Push up a big tent - "It requires work to be welcoming. Especially if your goal isn’t just to attract more people who are just like the ones who are already part of the community. Lowering the barriers to entry is work we should always take seriously."

Rails for non-technical founders

It is becoming more and more difficult for non-technical founders to create an MVP:

  • Hiring developers is becoming increasingly more expensive.
  • Tools for modern web development, built by the Googles and Facebooks of the world, are becoming increasingly more complex.
  • Even with the "no-code" tools, it often impossible to bring your sketch to life without reshaping its scope to fit the tool's capabilities.

In this environment, Ruby on Rails feels like the perfect solution for all the reasons I have stated above.

Therefore, my goal is to learn enough Ruby on Rails so that I can confidently build the epicenter of whatever new product idea I have. It is too early to tell how long this journey will take or if I'll succeed at all in reaching the goal. But I'm sure whatever the outcome, it will be a remarkable journey.

If you're a founder or an aspiring founder looking to build useful web applications, you can follow my journey in the Rails for Founders newsletter where I'll write about my hard-earned lessons!