Startups and Choosing a Technology Stack

A technology stack is a fancy way of saying the products and programming languages used to build the behind-the-scenes piece of an application. Just like car companies source technology from a variety of vendors, so do startups, many of which are open source products.

Three weeks ago I was talking to an entrepreneur and he was looking at acquiring another company. Only, there was a big problem — the target company’s technology stack was Microsoft-based with ColdFusion as the primary programming language. Now, ColdFusion was amazing last decade but has been antiquated for several years now. Building a new startup around a ColdFusion-based app would be a bad idea.

Here are a few tips when choosing a technology stack:

  • Consider the cutting-edge nature of the technology being evaluated and if you are comfortable having more bumps in the road (e.g. JavaScript on the server side and NoSQL databases are gaining popularity but there are trade-offs that should be considered)
  • Analyze the expertise you currently have and the expertise you have access to either locally or globally through your connections (e.g. Ruby on Rails is awesome but there’s a serious talent shortage right now)
  • Three of the most popular programming languages for startups, based on the entrepreneurs I talk to, are PHP, Ruby, and Python with Java and .NET being more big-company oriented
  • Ask the five entrepreneurs you trust what technology stack they are using and if they recommend it
  • Using a simpler stack with faster time to market is the best approach when you’re starting out as you can always introduce fancier technologies later and deal with things like scaling when you have that high-class problem

Choosing a technology stack is an important decision and should not be underestimated. I recommend using whatever gets you to market fastest and is enjoyable for your team to use.

What else? What are some other tips when choosing a technology stack?

Comments

6 responses to “Startups and Choosing a Technology Stack”

  1. Chris Beauregard (@ciaobeau) Avatar

    Another consideration is the quality of computer scientist you want to attract. Great programmers want great tech stacks. If you product will be complex, better to start off more cutting edge.

  2. Nilesh Avatar
    Nilesh

    This is something I have been going through right now – trying to decide the technology stack for my new software product. I would like to go with Ruby or Python but I am afraid there isn’t enough local talent available. My best choice seems PHP, but I am afraid it might not be object oriented enough and there could be scaling issues later. Which one are you using? Any thoughts on PHP vs Python?

    Thanks.

    1. Rob Forman Avatar

      @Nilesh Having built systems extensively in both (PHP and Python previously, and now Ruby), I would steer you towards Python or Ruby. (Insert standard it-depends caveats if you’ve inherited a system. From your question I assume you are starting fresh.)

      PHP is a great zero-entry-pool-esque language. Its easy to get up and running, is tightly integrated with Apache and has good documentation. Literally install and go. There are good web frameworks to build your app with, like Cake, Symfony, or CodeIgniter. And since version 5, PHP covers OO pretty well.

      My main drawback isn’t the language but rather the community and tools surrounding it. I found the PHP community to contain (I admit I’m generalizing, but thats sort of the nature of the question) more entry level participants due to zero-entry. Whereas Ruby and Python developers are usually on their 3rd of 4th language/venture and are more advanced in their developer pursuits. This is reflected in the depth of the tools and plugins (pip install ) in Python and Ruby, as well as the architecture decisions each make. I found many more of the PHP plugins remain in alpha and never reach production-ready maturity.

      Look at the thought leadership in Heroku (initially, and still primarily, Ruby on Rails) or Google App Engine (initially Python). There are excellent ecosystems you can tap into and learn from. And, as the mayor of Atlanta said yesterday, good people want to be around good people.

      These communities not only continue to push their frameworks forward (look at asset pipelining in Rails3, its beautiful) and carry us with them, but they also peer-pressure their community into great habits like test driven development (look at how many test frameworks ruby has: TestUnit, RSpec, MiniTest to name a few) or deployment automation with Fabric (Python) and Capistrano (Ruby).

      In the end, its all about the right tool for the job. But all things being equal or close to it, choose the community culture you most want to emulate in your own.

      1. Nilesh Avatar

        @Rob Thanks for your inputs. I got similar feedback from other people and for now have go ahead with Python. As you suggested on your blog regarding the technical co-founder, I am trying to learn the language and also attending meetups.

  3. Shaiju Avatar
    Shaiju

    Guys…
    Great posting .At least for me at this time. Because I am at the same road block to decide upon the technology stack to be used for my new product venture,which is going to be a kind of online community portal. I am basically a java guy and we already developed our first product with java and associated frameworks.And I know the pain and the time required to market a stable product with java.
    After a bit of reading I am more inclining towards PHP , as it would be easy to learn and will have resource availability at a lower cost. I havent explored Python and Ruby much . Do you suggest me to evaluate both to make my final decision? I am absolutely zero in terms of both of these technology .
    My only worry about going with PHP is the thoughts about scaling up the system in future as the product grows.
    Appreciate your leads….

    Shaiju

  4. edwardbeckett Avatar

    @Shaiju … If your a java developer already you might get the most out of either sticking with a traditional java stack … JEE, spring, or a JVM framework stack like grails or play! … As mentioned … you’re going to have a better candidate pool with the languages that require some understanding of CS where java and python seem to fit that bill quite well. Ruby on Rails is very popular for web apps but I haven’t seen a lot of back-end work in Ruby yet …

Leave a reply to Chris Beauregard (@ciaobeau) Cancel reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.