After weeks of fighting administrative fires, and waging a war on paper, I finally carved out enough time to give some serious consideration of what server-side technologies I will be employing for my startup company.
Decision day is quickly approaching, where I will just need to pick one. The question is which one? There are a multitude of products (open source and otherwise) to design, build, and deploy a working web solution.
The question is, which one? The choices are many: ASP.NET, ColdFusion, Tomcat/JSP, Java Server Faces (JSF), Java J2EE, PHP, PHP-Smarty, Ruby on Rails, Python, Perl, and C++.
I have own biases, but I recognize that single decision will probably have the biggest lingering effect on my startup. It will influence who I hire, and thus, indirectly the corporate culture of my business should it grow large enough.
So follow my rationalizations as I bet my livelihood on my technical decision making abilities. There are four primary issues/categories in my mental pew chart. They are: 1) Cost, 2) Performance, 3) Maintenance, and 4) Security.
First Things First: Pick a Language
Cost will come in two forms: technology (OS, licenses, hardware) and development talent.
Not surprisingly, my kitchen counter math pegs development talent as the biggest single cost. And after some digging, I found that PHP coders earn the least, .NET is somewhere in the middle of the spectrum, while J2EE programmers earn the most ($93 average billing rate when consulting).
Considering that the language platform choice will drive the biggest cost, it makes sense to carefully spend time picking it, and drive the rest of the decisions from that.
So the high cost of J2EE talent as well as the system requires more expensive hardware to run (I've seen a JSF/XML solution bring hardware down to its knees)... So goodbye Java; it costs too much. And that goes for any Java scripting derivatives (JSP and JSF).
Likewise, Coldfusion is simply not a good tool for n-tier solutions. It is good for simple websites, easy to learn, but not designed for the enterprise.
What's left? Ruby on rails, C# .NET, Python, PHP, Perl/CGI, and C++/CGI. Here, most sane people would focus on C#.NET or PHP and a growing vocal minority would advocate ROR (Ruby on Rails). However, YouTube was originally crafted in Python. Google and Amazon.com make use of C++ (or so I've heard).
Next up: Pick a framework
Second establish what version and framework to use. PHP has Smarty and PEAR derivatives. .NET comes in 3 versions now.
Lastly, Pick the OS
I know many people will disagree, but I hold a fairly agnostic view on Linux vs. Microsoft. I develop embedded software for Linux, but I am equally comfortable pounding out system code under Windows.
It is a business decision that should be made with rational logic and not emotion.
Yes, Microsoft is more expensive, but that cost is almost insignificant compared to the labor costs. How much? Plan on a base cost of about $1,000 for each Server product (SQL, Exchange, Server), plus fees for additional servers, seats and CPUs. However, you also get a phenomenal amount of support (Empower program, seminars, conventions, partner events). And if all else fails, you can call Microsoft and someone will answer your question (albeit for a charge).