We are two developers on the edge of starting new web product development.

We are both fans of lean start-up approach and would like to practice continuous deployment.

Here comes the dilemma - we are both coming from a C# / Windows background and we need to decide between:

Stick to .NET and Windows, we will not waste time on learning new technologies and put all our effort in the development.

Switch to Ruby on Rails and Linux which has a good reputation of fast ramp up and vast open source support. The negative side is that we will need to put a lot of effort in learning Ruby, Rails and Linux...

In a startup, play to your strengths. I would suggest sticking with .NET technologies and see if you can get into Microsoft's BizSpark program. That'll get you affordable licenses to the software you need, with minimal risk involved.

I would like to point out that BizSpark expires after 3 years, which means you will be paying full price for your MS stack on year 4. Depending on how much software and how many servers you're running, that can far outweigh any cost from spending extra cycles at the beginning learning the open source alternative.
–
JordanFeb 27 '11 at 7:08

3) What you're building and the suitability of the platform for that in the short term (prototype, low volume use etc.) and the long term (will it scale and indeed do you intend it to scale or is it, say, B2B in which case volumes may always be comparatively low)

My instinct is stick with what you know as you'll have plenty going on without having to learn something else, but you need to weigh up the other factors based on the specifics of your idea.

My first startup was in C#.net because
a) all founders are familiar with C#.
b) visual studio was and is still very developer friendly for debugging, etc.

The startup was a massive failure for business AND technology reasons.

Whatever technology you choose, you need to consider whether you are skillful/good enough to use that technology to launch in X years.

As you can see, the criteria we had above was not strict enough. We had no idea how long we need to build the thing. We just happen to be familiar with C#.Net that is all.

None of us have any experience building anything close to what we wanted to build.

After a while, the server fees, etc cause us to ditch C# and rewrote the whole thing in php. That is another story and another mistake business-wise.

The point is this technology you are going to use, it does NOT have to be cool, edgy. You want to build a webapp. So choose one that gives you the best chance. What gives you the best chance?

Choose the technology that the person(s) doing most of the programming have ACTUAL experience building a similarly complex application BEFORE

Please read the above 10 times.

If i were to address my younger self from 3-4 years ago, and he would say,
"But I have no experience doing anything of the complexity I have in mind IN ANY LANGUAGE. So how do I choose?"

The $50, 000 dollar answer is (yes that is how much I wasted learning from my mistakes):

Choose one that is most forgiving to your learning development.

How do we define forgiving?

For example, .Net relies on Windows server. And Windows server are more expensive than Linux servers. That is a fact. Even if you have Bizspark's licenses, you better make sure you need to factor in bringing in money once your licenses expire.

Do NOT assume that you would be able to learn C#.net in 3 years. It is hard to say. For me, it just did not work.

I tried RoR before. I once read some article about 2 investment bankers with ZERO programming experience succeeded with some webapp about traveling in Techstars program.

They use RoR.

I have programming experience. But RoR just didn't work for me.

I bought books from amazon etc. I tried. Seriously gave it my best.

Finally I settled on Cakephp. It is good enough for me to have the best chance of relaunching another webapp. Forgiving enough for me to learn at my own pace.

Also just like you found better girlfriends not because they are better, but because you are a better person after more experience, perhaps, I also had gotten better as a programmer

So this is not about what is a better framework/language. Or that Cakephp is the best I have used. Perhaps I have, finally, become a programmer good enough to build the webapp I had in mind.

It is about what works best for you to get closest to launching.

Oh here is a freebie.

After 6 months, when you debut with an alpha or private beta and you get customer feedback, and you feel like rewriting the whole thing in a new language, should you?

Answer:

NEVER. NEVER. NEVER.

There is a JoelOnSoftware article about rewriting software versus refactoring software. I am too lazy to find it.

He suggests the same.

Take it from someone who chose the wrong technology and then rewrote the whole thing in php (no framework) and then dump the startup in the end. And spent $50, 000 in the process.

It is like marriage. Choose a technology and till death do your startup and the technology part.

Okay, I exaggerate, but only because it is far too easy to think all your programming situations can be solved by another language/framework. Just like thinking you would have a better marriage by changing another person. It is far better though more work to work on yourself or your programing practices.

Good luck. And keep learning. Please for your sanity's sake, strip the features down to the absolute bare minimum. Go google for Minimum Viable Product (MVP).

That is more important than what technology you choose.

So spend adequate time planning/designing this MVP.

Planning is important. Plans are not. You may need to ditch your plans after spending 4 months planning this MVP because you need to react to changing circumstances or competition.

It is okay. The 4 months planning did not go to waste.

You would now have more domain knowledge than you had before the 4 months.

So even if its a hastily re-drawn plan at this stage, it should be markedly better than your first draft 4 months ago.

If I were in your situation I would use technology that I best in. We had a similar situation in my company where client demanded java and we were all .net developers. At the beginning everything was just fine, but latter on some small thing gave as such problems and in one point time frames were SciFi.
In my experience it is easy to learn new programming language and new technology, but to really know you need long time.

I'm going to go against the grain of everyone else here and say that you would be better served to go the open source route.

I've been working in .NET for about 8 years, and I've used pretty much every commonly known open source web language and framework as well over generally the same timeframe.

If you really want to go with the lean approach, you will likely find that ease of integration, cost of servers and software, and productivity will over the long run be more financially prudent, and depending on your level of ability and time to put into this business, may pay off in the short run.

BizSpark is a dangerous road to go down. You will eventually be paying full price for that hefty software stack, whereas open source is always cheap or free.

I have servers set up on Rackspace's cloud server setup. You can get your own shiny new Linux server with CDN storage for $11/month + minor bandwidth and storage costs. That's coffee money.

Learning Linux and the open source environment can take some getting used to, but it isn't some multi-year project to become proficient. There are countless forums, walkthroughs, and people able and willing to help you get better.

If developing professionally (ie. this is to provide your personal income) if the cost of the software licences is a significant factor you are really underpaying yourself. Even MSDN-Universal (get the VL, no point in being silly) is a fraction of the cost of people.
–
RichardFeb 27 '11 at 10:58

@Richard: but why pay people + software licenses if you can just pay people? And I'm really referring to server licensing costs, not developer IDE money, which as you mentioned is relatively cheap. Unless I've just been seeing it done wrong, once you start to try to scale your server hardware out, you have to pay for quite a few server licenses and CALs. That's the killer. Sure, it isn't going to bite you when you're running debug localhosts, but again, if you're really trying to run a lean business, why pay even an extra $1000 if you have other viable options?
–
JordanFeb 28 '11 at 5:22