Recently, I wrote an article about Rapid Java development and how grails compares to other languages such as php and ruby. At a networking event someone approached me and talked to me about that very article. She asked me what software development language and framework I’d choose for a Web 2.0 application.
Interestingly enough when you perform a Google search on this topic you’ll find plenty of answers to this question. However, most of them are ideologically charged, so it’s hard to get an objective answer. Do not get sucked into these kinds of discussions among your team members, as in my experience they will lead you nowhere. Actually they do lead you somewhere; and believe me, you don’t want to wind up there.
I’m of the opinion that most software development languages give you a similar kind of functionality. If you are a startup and have a great idea for a web application there is one single thing I would consider: What is the fastest way to build a working prototype that gets your investors on board?
The choice of programming language should be only based on this single goal. From the top of my mind I can think of a couple of categories you may want to evaluate to come to a decision.
Do you or your team have experience in a software development language? E.g. In case you and/or your team are wizards in C#, stop reading right here, drink a six-pack of Red Bull and start cranking out that ASP.NET application. Same goes for any other mature software development language as well as the chosen energy drink.
Use development frameworks when possible. Development frameworks such as CakePHP or CodeIgniter for PHP can really speed up your development. Most of them follow the convention over configuration pattern and can increase your productivity tremendously. You will have to write less code, which generally translates into fewer bugs and you can focus on what differentiates your application from others faster, namely your business logic. On top of that you can leverage plenty of plugins developed by other users which will increase your productivity even further.
Maturity of web development framework:
Choose a well-established language and framework. Yes, you can develop an ASP.NET application on Linux using Mono or use Lisp to code the next generation version of Facebook, but this is certainly not the fastest way to get things done. There are a couple of points that say something about the maturity of a language and framework.
How large and active is the community: Grails, RoR, Symfony, Zend, CakePHP, ASP and Django all have thriving communities. Should you ever have a question, you can simply go to one of their forums and get an answer within hours, sometimes even minutes. That will help you not to get stuck in your development.
The more code you can reuse, the better. No need to write a PayPal integration from scratch when someone has already done it before and this very code has been thoroughly tested by thousands of users. Make sure the framework you choose has plenty of this kind of community generated extensions you can choose from.
The goal behind development environments is to increase your productivity. Syntax highlighting is a very basic example of that, other environments such as the J2EE environment in Eclipse, IntelliJ Idea, Visual Studio or XCode even help with refactoring your code and deployment of your application. If possible you want to leverage these tools and not fall back to notepad or vi (sorry if I offended someone) just because you want to program in an exotic language.
Reuse existing systems where possible:
Let’s assume you want to build a social networking site similar to LinkedIn or Facebook. You could start from scratch using one of the aforementioned frameworks or leverage existing solutions such as Drupal, Joomla or DotNetNuke. Yes, it will depend on your requirements whether this is possible, but from my experience chances are, it is.
Remember, the goal is to get your project out of the door as fast as possible to attract customers and investors. It doesn’t mean you have to have everything in place from the get-go to scale to a billion visitors per day. Don’t go for perfection, go for good-enough.
This is an extended version of my answer I gave that evening. In case you are still lost and don’t know the right approach, don’t worry. You don’t have to be a techie to create a successful web-based startup. There are plenty of software development outsourcing organizations out there that can assist you in getting things done, one of them being us, IKaru.
I always enjoy getting feedback, so do leave a comment when you find the time.