Illustration from Wordle.net
So you have decided you want to start your startup, or may be you just want to build a hobby site. Choosing the web framework is going to be one of the most important decisions you will make, and this decision is going to influence most of your future decisions, so choose wisely. Recently at uswaretech.com, I helped a client evaluate frameworks and make a choice, so here is some help for you from my experience.
Step 1. What are the choices?
Of course the first step to choosing is to enumerate the choices. Lets try some,
- Java with Struts framework.
- PHP with or without a framework. Let’s assume Symfony.
- Ruby with Ruby on Rails.
- Python with Django.
… And others.
Step 2. What are your constraints? What are your strengths?
You are a startup, (or a single person, or two). You have limited budget and timeline. You need to hit production yesterday! In such a scenario, Java is something you do not want. You want an Agile framework, something which allows you to develop quickly and iteratively.
A detour – Why Oracle uses Java, but you should not.
For a large organization using Java is a no brainer. “No body got fired for using IBM.” Java is the default option, and for risk averse managers the only option. As Michael Trier succintly put, “You can pick up the phone and get three .NET developers tomorrow. Regardless of whether your company is based in Louisville, Kentucky or White Plains, New York.” This flexibility of swapping programmers is useful to large corporations, but as a startup, you need your development team to stick with you.
Step 3. What libraries are available.
For this project, the client needed to to do a lot of statistical and numerical processing. Scipy is a fast, optimised library to do numerical and scientific processing. So choosing Python over PHP was a no brainer for us. Your requirement might be that the developed application be deployable on a variety of vanilla shared hosting, PHP scores way over anything in this respect. There is no way WordPress could have become so popular if it was not written in PHP.
Step 4: What do you already know?
Do you have some legacy code in a given language you would like to reuse? Do you and your team have experince with some framework? For us, the client had a team experienced with PHP, but the presence of a killer library tilted the balance in favor of Python. Similarly you need to weigh the what value your previous experience has in relation to other factors.
Step 5: How large is the community. How good is the documentation?
When you get stuck in a deep, challenging framework problem would you be able to ask a question in the framework forums and get a quick response? Do a lot of people hangout in the IRC channels? Is the documentation top notch and comprehensive. Once we had decided on Python as the language, we had the choice between Turbogears and Django. We choose Django for its larger community and better documentation..
Choosing a framework is one of the major decisions you make, and will influence a lot of your development choices. I hope you can use this step by step method to come to a correct decision. I recommended Django after evaluating my client’s requirements, but your needs and requirements are unique, and your framework most suited to you may be different.
So choose the best framework, and go build the next Google.