fbpx

When you’re building a new web or mobile app, there are really 2 factors to consider when deciding what framework to use: 1) what tools you know best and 2) the best tool for the type of application you’re building.

When you’re a non-technical founder hiring developers, then it’s really about #2. For the sake of this post, since this blog is mainly targeting non-technical founders (and not-yet-unicorn coders that still require technical help), I’ll focus on #2.

When To Use WordPress / Joomla / Drupal

These are all content management systems (CMS). In some cases, it makes the most sense to prototype with a CMS when you don’t yet have product-market fit. The obvious case is a blog, where a CMS can easily handle hundreds of thousands of users when you have solid hosting. The not so obvious case is when you’re trying to build a dynamic application. Programmers will say that eventually it’s not worth the trouble, because CMSes are a bit like a tree branch: it’ll bend to your will, but bend it enough and it’s gonna break (and cause tons of technical debt in the process).

But sometimes, there is an existing plugin or framework built on top of a CMS that works. For example, social networks. There’s jomsocial on joomla, buddypress on WordPress, and if you need something that’s closer to a middle ground between custom programming and CMS, drupal. There are custom plugins for all 3 platforms that allow aggregate ratings, if you’re trying to build a review site.

Wordpress right for you?

(Source: http://bit.ly/1VBN3uA)

In short, if there’s a custom plugin that does what you’re trying to test, a CMS would absolutely be the easiest, fastest way to get started. And even if you need to hire technical help, programming help for a CMS is always way cheaper than any other programming language.

When To Use Ruby on Rails or Laravel

First, Ruby on Rails and Laravel are not programming languages. Ruby is a programming language, and PHP is a programming language. Rails and Laravel are two frameworks that enable you to develop custom apps quickly using Ruby and PHP, respectively.

The reasons you’d look at either of these frameworks over a CMS are:

  1. You know some Ruby or PHP
  2. Your app is too data-intensive for a CMS
  3. Your main goal is a web app (or you plan to go mobile with a Rails API as backend)

I’m not a PHP dev so I haven’t played with Laravel, but I have built some things with Rails. First let me just say that a junior developer could get very very far with Rails. Much of this is due to the fact that Rails has a gem for just about everything (gems are basically more advanced WordPress plugins). You can finagle a database with ease from the command line using Active Record and via inline MySQL. And there’s just so much existing documentation at your fingertips. I have yet to run into an issue that I couldn’t solve by searching StackOverflow.

For beginning developers or prototypers, The Rails Way is a blessing because it enforces convention over configuration and you won’t get brainf*cked by 10 different ways to do everything (we’ll talk about the opposite case with javascript later). And lastly, Rails makes it easy to write an API, so you or your devs can build a custom frontend (like in React / Flux or Angular) or a mobile app that uses the API as the backend.

ruby on rails

(Source: http://bit.ly/1VBOXvo)

Where Rails has run into a bit of disuse is when you’re trying to build a Single Page App (SPA) or an app that feels like a SPA. This means that instead of routing to different pages for different purposes, you want to refresh parts of a parent page. This is basically how all the modern social apps like Instagram work. The Rails community is trying to catch up to this huge market by launching Rails 5 with ever-evolving turbolinks and Action Cable, although much of the developer community thinks it’s still not fully there yet.

My personal opinion? If you know Rails (or Laravel) use it to prototype any app where you need good SEO for your user-generated content. Your time to market will be much faster, and I believe that whatever disadvantage you get from not having a bleeding-edge SPA is compensated with the out-of-the-box SEO advantages you get from having unique pages for all your content, and the shortened time to market from using The Rails Way.

Also: ignore the myth that Rails is too slow unless you have 100k users. If you’re just starting out and your app is already slow, the reason it’s slow is not because of flaws in Ruby, but because your code needs refactoring.

I leave you again with this gem from Ben Horowitz: “There are only two priorities for a start-up: winning the market and not running out of cash.” Rails is built for both.

When To Use Javascript Frameworks

The reasons I believe you should be considering Javascript frameworks are:

  • You plan to know full-stack javascript
  • Rails is too slow for your app
  • Your primary goal is a Single Page App and/or hybrid mobile apps

When you enter the realm of full-stack javascript, you have to embrace having a bunch of different frameworks to pick from and needing to keep up the joneses. Full-stack javascript is in a constant state of change with new frameworks coming out every week. You may have heard of the MEAN stack which I believe was an acronym created to make full-stack javascript feel standardized next to Rails, but FreeCodeCamp (the largest javascript bootcamp in the world) has already replaced Angular (the “A” in MEAN) with React. MongoDB, which (the “M” in MEAN) is a NoSQL database, which most programmers readily admit is not the right fit for most applications because they need a Relational database like MySQL. Because JS lacks standardization, just getting your build environment ready can take days. To manage this application even if you have a dev team requires that you’re comfortable with this.

But once you’re experienced enough, the upside is that JS frameworks are undoubtedly more powerful, numerous, and flexible than Rails. Node.js is just far more powerful than Rails. Once Rails hits 100k users, you usually run into serious problems. Not so with Node. As far as the extensibility factor: Node is catching up to Rails in terms of NPM modules (the analogue to Rails gems). And I just have to mention my full-stack JS friends tell me Node is really fun to work with.

framework for app development

(Source: Hackhands)

Where javascript frameworks truly shine is when you’re talking about a mobile app. I believe that React.js + React Native are going to dominate the frontend wars for the next decade. Instead of forcing you to adopt a bunch of customs that are specific to a framework (cough, Angular), it’s pretty much all vanilla JS (i.e. plain javascript syntax). Using React means that you can essentially use one programming language to develop web apps + native iOS apps + native android apps.

So if you’re building the next big mobile thing, I just don’t see there being a better option. This or some form of it is the future.

Keep Calm and Think About The Best Tool For The Job

I hope that helps you navigate a landscape of too many programming frameworks by highlighting my thought process behind picking one for the purpose, whether it’s prototyping or scaling beyond 100k or going hard after mobile.

Have an idea?

Let's Work Together

Our industry-leading expertise with app development across healthcare, fintech, and ecommerce is why so many innovative companies choose us as their technology partner.