Choosing the right technology for a startup

Technology strategy has always been close to my heart. I am very interested about software processes and the decisions related to choosing the right technologies for different types of software projects. Earlier this year I joined a startup called GigsWiz. GigsWiz is my second startup and the third company that I have given birth to. In all startups my main input has been in product development and technology strategy. GigsWiz is a very early stage startup and we have been doing the most important technological decisions during the past three months.

The world has changed a lot since I started my previous startup, Floobs, in 2007. When we started Floobs we basically had to decide between Java or PHP. Basically there were two limitations on decision making. First it was very hard to find developers for other platforms in Finland and secondly there were very few web apps built with other technologies. It is safer bet to use a platform which is proven to scale. Today you can basically choose from various different platforms like Java, PHP, Python, Ruby or something more exotic ones like Scala. There are plenty of projects implemented with these technologies and it is also a lot easier to find a team of developers for each platform

In Floobs we chose Java because most of the developers I knew were Java developers and because we decided to use specific open source software which was only available in Java. Because of this we choose to use Java across our product catalogue which enabled our developers to do little bit everything. It was also easier to develop competence when focusing on one programming language.

In most of the startups it does not matter which technology you choose. What ever weaknesses the chosen platform has you can fix them later or just change the platform. Example of the first one is what Facebook did with PHP. After an aggressive growth period Facebook came up with HipHop to help them scale their system. Twitter ran into problems with Ruby on Rails and started using Scala, still being a super successful startup. More information about Twitter’s move towards using Scala on Artima Developer blog. Usually startups begin with some technology they feel comfortable doing the first iterations and later on when growing start adding new technologies when needed or just build something on top of existing technologies. It is very simplified statement to make that Facebook or Twitter is written in some single programming language.

In GigsWiz we are again using Java as our primary programming language but this time we focus more on developing the core technology. We are building APIs which enables us to outsource software components that are not close to our core technology. We chose Java because that’s what we were using in Floobs and it was fast way for us to get started.

What matters is that you get started really quickly and that you can iterate as fast as possible, learning in between iterations. The team is the key thing also when choosing the technology. Some developers like to take their time on making these decision but unfortunately time is a luxury startups cannot afford. The most important thing is to keep the iteration snow ball rolling and learn on as much as possible on the way. This puts huge load on software development process. More about that later.

May 6, 2010. Tags: , , . Startup, Technology.

7 Comments

  1. Niklas replied:

    Why Java again and not Python & Django or Ruby on Rails, sure the team knows Java, but anyone knowing Java can easily learn Python & Django (Can’t speak for RoR)? The only reason I see for anyone using Java these days is scalability and some legacy libraries that can only be found for Java. Why not give Django a try? I think Java is most certainly not the right choice if you want to iterate as fast as possible, sure there’s a learning curve to some other language and framework, but it’s not that steep and it won’t be long until the product development goes at 10x the speed of using Java.

    • Kai replied:

      Thanks for the feedback! Sure anyone knowing Java can easily learn Python but it takes time. When you have killer idea (like we do) you need to start developing value to users asap to validate the idea.

      We are also using other technologies in GigsWiz but our core development is in Java.

      Another thing is that I dont know that many startups that have failed because software development has been too slow. Usually it is just that you cant find the customer in time or you just build crap that nobody wants.

      • Niklas replied:

        Sure, yeah, you make some valid points. But there are some new really successful startups that do use RoR & Python. I’m seeing this from a developers perspective using Java at my part time job and Python & Django for my own projects – I can’t imaging wanting to do a new web based project in Java. Maybe using Java in a later stage, as it does scale well, but not early on.

    • Hannu replied:

      The Java platform kicks ass with its performance, scalability and ability to mix and match various languages on demand. I myself prefer statically typed languages over the duck-typed ones. Scala though being more type-safe than Java, is still immature in the API and syntax level in addition to its worse tool support, these being the reasons ruling out that option.

      Anyway I highly doubt that Django development would be 10x faster. When taking into account the level of abstraction provided by some Java tools it might even be slower.

      As a comment to Kai’s initial post. Are you sure that the programming language ecosystem has changed into a more heterogenous one or is it just your professional network that has developed to include people with different mindsets?

  2. Miku replied:

    Well, choosing a technology does matter, even early on. Even though you can quickly switch platforms, it is vital that the selections are made with some basics kept in mind. You should always use technologies that are proven to work (at least on a conceptual level), startups cannot invest massive amounts of time to study new technologies (unless your startup is about innovating new technologies). Different languages/platforms work better for different tasks. Another key issue which matters a lot is choosing the right developers. (Here is some more insight on this whole issue: http://inter-sections.net/2007/11/13/how-to-recognise-a-good-programmer)

    • Kai replied:

      Thanks for the comment Miku. I totally agree that you should use technology that are proven to work (at leas on a conceptual level). One point I was trying to make was that it does not matter that much which one of those proven platforms you choose. People matter the most and today it is easier to find people who do something else than just Java or PHP.

  3. Janne Savukoski replied:

    Btw., less platform-related but with utter technical significance however: most major single factor effecting the development speed in our startup is clearly Google AppEngine. Absolutely no kidding. Time savings are just huge when you have a ‘zero-maintenance’ high-level platform (and nothing’s more valuable than time for a startup.) No deployment scripts, apache configs, firewalls, load balancers, etc. And you can get there only by not knowing on how many servers your software is running at some point in time. As soon as you have a concept of a ‘server host’, someone needs to start managing them. It does great things to focus when the only thing techies need to worry about is the end user (-experience).

    And there are a couple language platforms where to choose, but that’s a discussion I don’t want to enter.🙂 (Relative benefits are domain specific anyways.) But the service I can recommend heartily. Even without getting a dime out of this ad…

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Trackback URI

%d bloggers like this: