Choosing a Server-Side Web Development Platform
I have had the seldom and joyous task of choosing a development platform for producing web applications with a new production team. It’s a clean slate, so to speak, and the decisions I make now will affect the team for years to come. In this article I will present the process I used for deciding on a web development platform.
I think this is a great time to be a programmer. We have lots of choices, and we need to be smart about making those choices and be open to accepting the new ideas.
– Douglas Crockford
Due to the wide variety of programming languages, toolsets and frameworks, and due to the ever-changing nature of each, it is practically impossible to gather enough data to make any sort of logical comparison. Instead, I suggest using one’s self as a subject for data gathering, by learning the basics of each platform individually. The choice can then be made by comparing the collected experiences.
The Process
Turn around ask yourself. Turn around and ask yourself.
– Neneh Cherry
The first thing to do is define the personal needs regarding development platforms in general and add them to a list. For example, “community support” or a “quality toolset” may be important. Once a list is created, the importance of each item can be rated based on a factor of 1. The software price may be less important than language features, so the first would get a rating of, say, 0.5 and the second a rating of 1.5.
Next, it is time to make an educated guess on what platforms would match these needs best. I made another list based on the programming language first, then shopped around for overlying frameworks. For instance, an element of the list could be “Ruby with Rails” or “C# with .Net”. Data on trending languages and frameworks can be found online on Ohloh, the TIOBE Programming Community Index, or the Thoughtworks Technology Radar – just to name a few.
Borrowing the reflective and cyclical attributes of Action Research, I divided the process into 4 steps that can be repeated for analyzing each platform.
- Run. Get to a point where a “Hello World” is displayed in the browser. Since this includes installing different tools and hosting software, I would recommend using a virtual machine. This way the main operating system doesn’t get bloated.
- Learn. Work through some of the beginners tutorials. The quality of the documentation will become apparent when questions arise. The more time invested in this step, the more detailed the analysis will become (I usually didn’t overstep the three hour mark).
- Publish. The goal here is to simulate the process of moving a site to a production server. Web development platforms vary widely in complexity when it comes to publishing and I think the process says a lot about the overall simplicity of a platform.
- Reflect. Note the good and bad situations encountered during the previous three steps.
Once all the platforms have been tested, it is time to compare the experiences. Using the two lists, rate each platform against each need. It is easiest to rate the platform that fulfills the need best with a rating of 10 first, and then rate the rest by comparison. As an example, ‘PHP with Yii’ may have had the best community support followed by ‘Scala with Lift’. So the first would get the full rating of 10 and the second would get a 9 in comparison. After rating every platform, we can multiply each value by its importance factor and add each group together. The highest result is the development platform of choice.
Platform 1 | Platform 2 | Platform 3 | Platform 4 | Importance | |
---|---|---|---|---|---|
Language | 9 | 4 | 10 | 9 | 1.0 |
Framework | 8 | 8 | 10 | 8 | 1.0 |
Tools | 7 | 8 | 8 | 10 | 1.0 |
Hosting | 10 | 7 | 2 | 7 | 1.0 |
Community | 2 | 10 | 6 | 6 | 1.5 |
Fun | 5 | 4 | 9 | 10 | 1.0 |
Price | 2 | 10 | 8 | 7 | 0.5 |
Results |
Conclusions
Choosing a platform is a matter of opinion. If there were a logical choice for a web development platform, there wouldn’t be so many different varieties. To stay clear of flame-wars, I won’t share my exact choice. But I will note that I ended up choosing two platforms depending on the type of project. Each platform had such strengths in their domain that I think it will be worth the overhead of maintaining knowledge in both. As they say: time will tell.