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.