Straight to content [Alt + SHIFT + 2] Straight to navigation [Alt + SHIFT + 1]

Javascript, PHP

April 22, 2011

The quest for the perfect technology stack

For a decade I have been in love with PHP and realised the time has come to say good bye to an old friend. How could this happen? Well, since few months I'm involved in a new big project and have to explore the current technologies. I had to because PHP isn't suitable for this kind of website.

Breaking old habits isn't always easy but you have to if you want to be a hardcore, up-to-date web developer. In this article I tell you about the experience I just am undergoing. If you hope to find answers for the best technology stack for your website, then you are wrong here. Like Buddhists say: "It's all about the path to the goal, not the goal itself."

The technology stack

It all depends on the nature and requirements of your web application to define the optimal technology stack. Therefore only you, the person who holds the vision of the website, know best what you really need. You could ask for advice, "Should I use PHP or Ruby on Rails for this web app?" - I bet you'll get both answers and get more confused.

Because like I mentioned, it all depends on your web app and most experts counsel you on their previous experience with their own web app which isn't the same as yours. You will find plenty of those discussions on stackoverflow like this one, how such questions shouldn't be answered like that way.

The Smarter way

First, define a subset of languages you are 100% sure you have to deploy these. At the moment there is no doubt you have to use HTML5, CSS3 and plenty of JavaScript these days.

The next step is to describe the characteristic of your new web app in words. In clean software engineering this is done within use cases and requirements. If you are agile, then you do that in the first iteration.

Then you have to ask questions like these:

  • Is your web app in real time? Do you need support for concurrency?
  • How responsive you want the UI to be?
  • What mobile devices do you want to support? And what's about backward compatibility to older browsers?
  • After how many seconds loading time do you want the app to be ready for the first interaction?
  • Can you allow restricting you application on windows machines only? This question is rather lame because I wouldn't recommend Microsoft technologies at all. I'm just trying to be neutral wink
  • Will there be more write or read operations to the database?
  • Are there enough programmers for the chosen language in the job market?
  • And much more ...

At last, all depends on the given money and time of course. This too affects your decision for the optimal technology stack.

When you have the answers to these questions above, then you'll have to do plenty of research in the next months. Combine different technologies and languages on all layers and do experiments on your own. Fork mature projects from GitHub, write a simple Hello World application and run some performance tests. Read what experts say about these technologies you have picked for your experiments. Be careful with the immature ones. Feel free to ask critical questions to the creators of that new language or technology.

Exciting times

I think we are about to herald a new era. If you look close enough you will see big changes in the near future, especially with JavaScript. Like I said, I can't make recommendations. It all depends on the nature of your application.

But check out Erlang, Clojure, Lisp, Scala, Haskell, CouchDB, node.js, jQuery + UI, Ext JS, YUI, Sproutcore, Cappuccino, CoffeeScript, Rhino, RingoJS and plenty more. One of them might fit into your RIA perfectly. Some won't fit at all. And for once, try to forget your old and worn-out language for the sake of your new idea. The world is your oyster.

Write your opinion

This question has been specially drafted to filter out spam and to prove you're human.

Keeping you informed when someone has answered.