How to build a SaaS from Scratch – Part 1

This is my yet another attempt to pick up Ruby on Rails. Given that I have a fairly extensive background on software engineering, Ruby on Rails has always eluded me. I first learnt about Ruby on Rails when I came across a presentation by DHH from 37signals.com. I like his no bullshit talk. The idea of building and owning a “fortune 5 million” software product company particularly strike a chord with me.

Well, long story short, I soon founded a mobile app company back in 2012 – CobbySoft Media Inc. It was built as a side business while I was working as a Software Architect in one of the biggest multi-national financial institution in the world. It’s profitable from the start and still profitable today.

I have been trying to invest the proceeds from my mobile app business to branch out into WordPress Themes/Plugins product via OptimalPlugins.com. While I have reasonable success in hiring iOS developers, my experience with hiring quality PHP developers has been a let down.

Initially, I opted for using PHP as the base for my SaaS application base for the following reasons:

WordPress is built in PHP and there are a vibrant community behind it. The more vibrant the community is, the more money to be made.

Ruby on Rails are popular in the startup community. The rate of Ruby and Rails developers are much higher than PHP developers.

Deployment cost. I can deploy an cash flow generating business for as low as $5/month on namecheap.com shared hosting. I can hire you scream “What about scalability?” I don’t know what business you are running, but by the point you run into scaling and capacity problems, you should have enough cash to pay an army of developers to resolve the problem. I have been fixing scalability and performance problems for companies since day one, and I can assure you that it’s really not that big of a deal for the few people who know how to fix it.

Lessons learnt:

Despite my experience from the software industry and hire/fire fast policy, hiring a good PHP developer has proven to be more difficult than I thought. Don’t get me wrong, there are plenty of hard working PHP developers out there, more than happy to work on your projects.

The most expensive developers you will find are the incompetent ones. What’s worse? The hard-working but incompetent ones. While an incompetent developer will tell you he just don’t know how to implement something or charge you outrageous rate, a hard-working incompetent developer will gladly do what you asked and deliver a half-baked.

Rolling Up My Sleeves:

I tried to pick up Ruby on Rails a few times through a few Ruby on Rails resources. The killer problem with Rails or any Open Source projects is dependence. In the good old days, all you need to do is purchase the MSDN Library disks and focus on design and implementation. In the realm of Open Source, that’s not true any more. More time is wasted on sorting out dependence issues from component designed by contributors who have no business in designing software in the first place.

I hate using Command Line Interface (CLI). Rails and Heroku are kinda pro CLI. I honestly can’t believe reading some comments the other day advocating using vi editor in 2016. It’s like seeing a caveman walking into my office. It’s one thing you can’t afford a decent IDE, it’s another to say you still prefer vi editor when you have a choice.

Here are the things I learn that I wish the Rails community was more upfront about it, just to save everybody’s time:

Ruby on Rails just doesn’t work on Windows. Don’t waste your time. I learnt this the hard way after messing with RailsInstaller on Windows for hours only to find out there are tons of incompatibly issues. The good folks in RailsInstaller, if you guys are reading this, just don’t everybody a favour and just scrap the Windows section.

Ruby Gem dependences are flaky as hell. From my experience, I took a simple multi-tenant sample app and ran it, and there is no way in hell to get pass the “Shoulda-matcher” configuration problem. There are TONS, I mean tons of fixes on gitHub, stackoverflow. It works for some, it breaks the other. So unless you are fortunate enough to have a compatible Gem version and dependence as the other guy, you are out of luck. This is another major problem with Open Source, there is simply no overarching plan and oversight. Everybody can contribute and every projects has their own release schedules. This is reminiscence of what I have to deal with in the Jave World. Maven is the root of all evil and a major money pit in the Corporate IT budget. Each developer wastes approx 30 mins to 2 hours a day dealing with dependence and build issues, multiple that by 300 developer across India, China, Canada, US, UK, Brazil etc. That’s 150 to 600 wasted hours per day.

Heroku is a strange beast, I think one of their UI design goal is to be the most anti-intuitive application on the planet.