What technology should I use to build my product?

This post is part of the Nontechnical Founders Series – a set of posts aimed at helping would be nontechnical startup founders get answers to their questions around the technology side of starting a company.

I often get asked by nontechnical startup founders what language they should use to build their product? Since they won’t be writing code themselves, what they really are looking for are the buzzwords to use when writing a job ad for a developer or potential co-founder. This is of course important, because if you write a job ad asking for mainframe experience and strong knowledge of qbasic, you aren’t very likely to attract the talent you’re looking for to help build your company. 

I’ll start by saying that if you have a strong technical co-founder on board, then you should trust their judgement to build in whatever language and platform they are comfortable with. But for the purposes of this article, let’s assume that you aren’t so fortunate. Let’s also assume that your product is a consumer facing web application. If you’re working on something deeply technical, mobile, or embedded, then either your language choice is already made up for you, or you’ll probably need the know-how in advance. When building your standard web application however, you have no shortage of choices.

Some choices will lead to rapid development, the ability to attract A+ talent, and a large community that you’ll be able to leverage for years to come. Other choices will lead to a development team of one, unable to expand. 

 

Background – Languages, Frameworks, Platforms

You’ve probably heard these terms thrown around a bunch, without really having any idea what they truly mean. Here’s the quick overview.

A programming language is the basic tool that a programmer will use to write your application. Each language has different strengths and weaknesses. Some are harder to program in and require more code, but run faster and use less memory. Others require less code and are easier to program in, but may run slower. Examples of languages are C, Java, Python, Ruby, PHP, Erlang, and on-and-on.

A web framework is a tool that simplifies many of the tasks that programmers would otherwise need to reproduce over and over again when creating a web application. Each language has a number of different frameworks to choose from, and the choosing a good framework is much more important that choosing a particular language.

A platform is an environment which your application will run on. It can be a server that you buy and stick under your desk (not recommend). It can be a cloud based system which will help with scaling, backups, and deployments such as Amazon EC2. Or it can even be a special purpose destination environment like Facebook the iPhone. The right platform will simplify maintaining your site and keeping it up and running.

Okay, so finally, what languages and frameworks should you choose?

 

The Big Boys

These languages and frameworks all are pretty trendy in the startup world, have no shortage of adept and fast moving developers, and are proven on popular real world applications. You’ll be safe with any of the below.

Ruby – The ruby language paired with the Rails framework is a popular choice these days. It favors convention over configuration which means that any Rails programmer can drop immediately into any Rails application and have a very good idea of where to get started. It’s built to support rapid development and prototyping, it has a great community working on updates and plugins, and it’s not going away any time soon. Ruby/Rails developers tend to be expensive but worth it. There are also other Ruby frameworks such as Sinatra which are suitable.

Python – Much like the Ruby community has Rails, the Python community has the Django framework. Everything mentioned about Rails applies equally as well here. Python and Ruby are both high level languages that are easy for developers to program in. Expect good things from the Django crowd.

PHP – This language runs some of the biggest sites on the web including Facebook, WordPress, and Flickr. It has the lowest barrier to entry among the three languages mentioned here, which means that programmers tend to be a little cheaper. (It also means you generally have to be more on the lookout for bad PHP coders). It has a number of good frameworks such as CakePHP and Zend

Javascript – A developer won’t necessarily build your entire site in javascript, however it’s a skill that’s very useful to have on your team. Developers use javascript to make your web pages dynamic, and provide nice visual effects. You’ll want someone familiar with javascript working on your web app.

Safe Options But Be Careful

These languages and frameworks are fine if you have the right technical lead who knows what they’re doing and have plenty of experience. They tend to be a little more old school than the frameworks above, but they’re proven, and will get the job done. The pace of development might be a little slower, and the younger talent may not be as eager to join up to work on these projects. 

Java – The java language is an old favorite in the enterprise. As such, there’s no shortage of ex-big-co employees who will have experience building large applications in java. Unfortunately java applications, and their frameworks such as Spring, have relied a lot more on configuration than the current frameworks, and haven’t quite evolved very quickly over the last 10 years. There’ll be plenty of cheap employees around to work on Java projects, but you may not be the most attractive shop in town.

.NET – Microsoft’s current platform is called .NET, and it has a number of languages to choose from, but usually pair ASP.NET with C#. Like Java, .NET is a favorite in the enterprise, and there’s no shortage of developers around who will have experience here. Developing in .NET generally takes place on a windows machine (unlike many of the above options where developers prefer Macs or Linux), and it’s accomplished inside a really nice program called Visual Studio. Unfortunately, the licenses for this suite, and the servers to run them on, are very expensive. So if you choose .NET, be prepared to pay.

 

Stay Away

If a developer tries to convince you that he’s going to build your web app in any other language, advise strongly against it. There is no doubt it’s possible, and the developer could even do an incredible job. However it’s not likely that you’ll attract a strong team, and be able to grow it as necessary to support an unconventional choice.

Another thing to watch out for is a developer who tells you that he’d like to use his own homemade language or framework. Again, they may be very capable, but it will be hard to find others jumping at the opportunity to join on.

 

Developers are generally very strong-minded about their programming languages of choice. I didn’t write this article to incite a holy war or to offend anyone. I would just like to give nontechnical founders and idea of the current landscape of frameworks commonly in use in the startup world. If you have any other suggestions or think that I’ve missed anything, feel free to let me know in the comments.

  • Scott Lewis

    Any thoughts on Groovy or GRAILS to go with Java?Thanks for writing!

  • Doug Petkanics

    @Scott, unfortunately I do not have any experience with JRuby or Grails. Here’s a quick comparison of Rails vs Grails – http://raibledesigns.com/rd/entry/grails_vs_rails_my_thoughtsIf you get around to trying it out, I’d love to hear your thoughts.