Which web technology should I use?
A handy guide for non-technical founders
< UPDATE 22 March 2017: The world has moved on since I first wrote this article, Trump is president, UK is Brexiting and I’ve gone vegan. What impact does all this have on choosing your tech? — />
I’m frequently being asked by non-technical startup co-founders about which technology choices to make for building their businesses. In this article I’ve purposely not covered technical reasons for choosing one technology over another, rather have thought about what founders will be concerned about.
I hope this article helps you to make better decisions; please do make sure you get good quality technical advice specific to your project requirements before committing to a technology.
Prototype & Proof of Concept
As a believer in the lean startup methodology, I strongly suggest you build proof of concepts to prove the market. i.e. use whatever tools you have to get to market validation as quickly as you can and if you want you can throw the code away afterwards.
Last year, I built a prototype for my new startup No More Filing using PHP. It was built with no scalability but was thrown together quickly and importantly (as I was bootstrapping) cheaply. Now I’ve raised some seed funding, I am re-architecting and starting again with Ruby on Rails (my generally preferred backend stack).
How much tech do I need?
First you need to decide if you’re startup warrants a customised, in-house developed platform of it’s own or if your idea is actually suited to a CMS or other off the shelf platform like Wordpress, Drupal or Joomla.
Many startups are not actually solving technical problems but rather using technology that already exists to solve problems or provide products and services.
If you’re doing something fairly routine, like offering content or products via e-commerce, there are already a lot of platforms out there that you might just need help with to customise e.g. many of the largest websites out there are using Wordpress for part or all of their websites.
If you need something more built to your specification, you may need to hire some developers and build your products using a language/framework. Here are some pros and cons of some of the most well known around.
Hiring the right person(s) is as critical as choosing which technology to use, how to find them is the subject of another article.
My contention is that the single most important factor for a non-technical founder in choosing a stack is the availability of good quality resource.
Here are some of the most popular stacks and their pros and cons:
PHP — Possibly the most widely used web development language.
Pros: There are a plethora of PHP frameworks and plenty of developers available on the market at a reasonable price.
Cons: With the popularity of the language and ease of learning basic PHP, the barriers to entry for a developer are very low. Therefore, there are a higher percentage of poor to average developers on the market which makes finding good ones that much harder. There is also a lot of fragmentation due to the amount of frameworks.
.net / asp.net / C# — Popular with fans of Microsoft
Pros: .net is easy to learn if you have experience of visual basic and working in a Microsoft environment. There is a good pool of developers available. .net has a reputation for great documentation. C# is a well respected language.
Cons: .net is being seen as a passé framework with many developers moving on, therefore the pool of available development talent is shrinking. Not popular with developers who don’t like anything Microsoft. In addition, many developers hate the Microsoft stack which may be unfair but creates a large divide between users.
Python — structured and mature, python has been around since the internet was still in nappies
Pro’s — stable mature, well supported, great quality pool of developers, code is well structured so easier to pass on to new developers. Tends to be very popular in maths heavy environments.
Con’s — development pool relatively small but strong, possibly the hardest to developers recruit in London due to their scarcity..
Ruby on Rails — my language/platform of choice
Pro’s — fast to build in, very well supported, large contractor base. Ruby developers tend to be very passionate and often more commercial / business savvy than other developers
Con’s — London contract day rates now at £500-£600. Very hard to find good permanent developers (contract rates are just too good).
When to use them? The advantage of a front end MVC framework is the ability to do a lot more of the logic in the browser which is most useful in one page web applications where you want to do things without hitting the server.
angular.js & angular2 — Biggest user base and best supported (google is backing the platform). Quick to pick up.
react.js — Fastest growing, Includes a path to hybrid mobile applications through React Native. Probably has the highest learning curve.
ember.js — Quick to get started, good for feature rich applications. Not as widely used as Angular / React but has very strong support.
meteor — Full stack, contains back-end elements and therefore an interesting choice.
Beware false economies
Despite the greater day rates, I tend to use Ruby on Rails for serious projects because the caliber of developer who will ‘get’ what I’m trying to do and implement it quickly is (in my experience) above those of other technologies. There is also a reduction in risk as the chance of hiring someone who doesn’t work out is lower.
bootstrapping — developing your startup with no external fundraising
back-end — the part of your platform you don’t see, as opposed to front-end which is visible to the user
stack — stack of tools, languages, test frameworks etc that make up your technology platform
nappies — British English word meaning diapers