Wednesday, May 25, 2011
Lesson #36: Picking The Best Technology for Your Web Startup
I am a business person first, and a tech person second. So, I solicited the input of my technology colleagues, Tyler Jennings and Todd Webb from Obtiva, a leading web development company in the Chicago area, who have done terrific work for Groupon and others. So, be sure to follow up with them directly, for any detailed questions from here.
One of the biggest mistakes I made at iExplore in 1999 was building the website in entirely the wrong way. The first problem, it was not a lean startup, by any means. It was built using the most expensive technologies of its day, from providers like Oracle and Sun. We just assumed the site would be a huge success, so we built a "mack daddy" back end to hand the meteoric growth. But, the site never grew to 10MM visitors a month, it only grew to 1MM visitors a month. And then, we were saddled with huge overhead costs of around $25K per month, just to run the website. I equate it with building the foundation for a 10,000 foot mansion, but only constructing a 1,000 foot house on top of it, which was a very inefficient use of capital for a startup (with the 9,000 foot uncovered hole in the ground taking on water).
The second problem was the site was not easy to maintain, requiring complicated builds to refresh the site for even the most simple of changes and a staff of expensive, hard-to-find developers that were proficient in the technologies we were using. So, the key lessons: (i) never build a tech infrastructure in excess of reasonable growth targets (to keep your costs at an absolute minimum); and (ii) build your technologies in a scalable way where the site can easily be developed and maintained over time, by easy to find developers.
Below is some high level guidance on current trends in the startup tech community. But, the most important guidance of all: finding the right CTO is 10x more important than picking the right technology itself. Technology needs vary wildly based on the specifications of various projects. And, only a strong CTO or technology consulting firm will ensure you are heading in the best direction, based on your specific needs and budgets. And, in all cases, don't get romanced by "Rolls Royce" solutions, when a "Honda" will do just fine, for the needs of most lean startups. And, keep in mind, preferred technology platforms for startups continue to change from year to year, as new advancements hit the market. So, read the below from that perspective. And, hopefully, this post will not become obsolete by the time I have finished writing it!
Most lean startups with basic website needs today are building their web-based businesses using the Ruby on Rails coding platform, which is entirely based on inexpensive and freely available open-source technologies. So, if you can, avoid more expensive, licensed platforms based on Java, C#, PHP or VisualBasic.net. Ruby has become the preferred language of choice since: (i) you can get your product to market faster with less code to write; (ii) it is a flexible language easily tied together with other systems; (iii) it is easy to scale and iterate; and (iv) Linux based hosting providers are numerous and inexpensive. Many successful startups like Groupon, Living Social and Hulu, were all written with Ruby. The only real negative of Ruby is that it is still a relatively new technology, and experienced talent are in high demand (although many new developers are learning the language in force).
As for the alternatives, Microsoft's VisualBasic.net technology is not advised unless there is a real business need to using it, like having to integrate with other Microsoft based technologies. This is due to: (i) the ubiquity of open source solutions; and (ii) the higher expense of hosting sites on the Microsoft platform. But, there are times when more complicated or expensive technologies could be the way to go. For example, if you are processing tons of data, Java is a good choice. If you are doing tons of number crunching, C# could be the way to go. If you have a very small project that does not need to scale, PHP could be a good alternative, as it is inexpensive to host and requires fewer resources to operate.
Now, that we have picked our development language, we need to make our hosting decisions. And, for lean startups, you can't beat the low-cost of cloud-based hosting. So, instead of investing big monies in hardware, software and systems administrators, piggyback on the services of the cloud with a "pay as you use it" solution. This is much preferred to building your own infrastructure, to run in your own server room or in a full co-location facility, which can get really expensive. Leading cloud-based hosting providers with expertise with Ruby include Amazon's EC2 cloud, Engine Yard, Rails Machine and Blue Box, to name a few. At some point (e.g., once you get to Groupon scale with tons of traffic), the cloud may become too expensive compared to internally built and managed solutions. But, for most startups, the cloud works perfectly fine and is the preferred way to go.
As for other elements of your web architecture, assuming you move forward with Ruby as your coding language of choice, the following open-source LAMP stack is preferred: (i) Linux as the operating system; (ii) Nginx as the web page server; and (iii) MySQL as the database. PHP written sites would be similar, except Apache would be the web page server of choice. Other operating system options include RedHat, gen 2, and Debian. Another database option includes Postgres. But, in all cases, these are less used than the optimal set-up above. All of these are free open-source technologies. Each cloud-based hosting provider has their unique architectural set-ups and options, so research them accordingly, to make sure they are compatable with your needs.
The other thing to consider is making sure your product is readily available for use on multiple web or mobile platforms (e.g., web site, iPhone, iPad, Android). The most inexpensive way is to build a browser-based "touch site", which automatically resizes and reskins your website based on the users' device. This can cost $10-$30K to build this kind of functionality. The other option is to actually build and maintain "native apps" for each of the various platforms, which can cost $50-$75K per platform, or $200K-$300K for the 3-4 key platforms. So, much more expensive than the "touch site" option. The primary reasons to build native apps are the full customizability of each app to each platform, and the marketing benefits you will get as consumers are browsing for new apps in the iPhone Store or Android Market. So, consider this incremental investment as part of your marketing budget to attract new users, especially if you are a mobile based business which will be dependent on those stores for new business.
I hope this helps get your development efforts off to a good start in a "lean startup" kind of way: investing the minimum amount as possible to take a viable technology to market as quickly and cheaply as possible. Thanks again to the Obtiva team, for their help here.
For future posts, be sure to follow me on Twitter at: www.twitter.com/georgedeeb