Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I am currently employed with a company for 2.5 years and I have been working with the .net stack for the entire duration mainly on the MVC framework. I believe I have some cool ideas for a startup but I am not sure if I should continue in this stack or switch to some other stack like Ruby on Rails.

The reason why I am consider this switch is due to the Infrastructure required to host a dot net application and scaling it successfully as compared to setting up a live running site on some other stack.

I have a really good domain expertise in dot net at this moment but I believe it should be not so hard to move onto a new stack and adopt the best practices that I have picked up in the past two years.

Let me know if I am missing something in the puzzle and if I am taking the right decision? Are there any complications of learning a new stack and building on it?

Please guide me in the right direction.

share|improve this question

closed as not constructive by Joel Etherton, Jarrod Roberson, Justin Cave, Walter, ChrisF Feb 19 '12 at 0:18

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

1  
This sounds like something you could prototype in .net to leverage your productivity and then decide on a production stack for a rewrite. Lots of startups go through rewrites. How do you know that a .net implementation would be prohibitively expensive to deploy versus RoR or FoTM? –  Patrick Hughes Feb 15 '12 at 18:51

4 Answers 4

First, let's debunk the myth. It costs absolutely nothing to get started on the Microsoft platform. Through the Bizspark program, you can get an MSDN Ultimate Subscription (including monthly Windows Azure usage credit) for up to 5 developers free for three years. Once you have a prototype running in Azure, you can certify it (for free) to qualify for the Cloud Essentials program. This gives you Office 365 (with desktop Office Licenses) for up to 250 users for free, and Dynamics CRM for free.

Deploying to Windows Azure is as easy as deploying to a local IIS installation.

On to the task of migrating platforms. I ALWAYS cringe whenever I hear someone saying, "I can just apply what I learned on language X to language Y." Even taking the time to learn a new Syntax out of the picture, it takes time to get comfortable with a platform and productive let alone efficient. Think of how much you've learned in .NET over the past 2 and a half years. You can assume that it will take you at least 75% of that time to become as efficient in a new platform. Instead you could spend the next few years diving deeper into .NET.

I'm not saying that it's not a good thing to learn and gain exposure to new languages/platforms (I'm personally learning Erlang because I feel that it can provide a lot of benefits as a supplement for .NET). But there are already too many variables involved in starting up a company. Don't voluntarily add one to it.

share|improve this answer
    
I was aware of the bizpark program and the offers under it and I absolutely dont have anything against the Microsoft platform, in fact I love it. already user of Office365, dont find it anywhere close to Google docs which is essentially free –  Baz1nga Feb 16 '12 at 5:49
    
To get onto Azure you have to spend at least 40 usd per site per month or as you suggested join bizspark to be able to use it and it aint a walk in the park to sign up to it unlike a Heroku which literally took me 5 min to setup. –  Baz1nga Feb 16 '12 at 5:51
    
You mentioned heroku. There's an equivalent for the Microsoft platform called appharbor appharbor.com Free for a single instance. Publish via github or bitbucket (mercurial). What I'm saying is that, if you're looking at switching stacks because the alternatives are free, so is .NET –  Mike Brown Feb 16 '12 at 13:37
    
I'm sure @user18609 realizes this, but there is eventually a cost to running MS servers, particularly SQL Servers. It might not get you at first, but it will be a high cost later. Clearly it's not the only point to deal with, but it shouldn't be dismissed either. –  Jordan Feb 21 '12 at 20:29
    
Yeah this is true...my point is that after 3 years your company is either profitable or failed so it becomes moot ;) –  Mike Brown Feb 21 '12 at 20:46

There are a lot of complications with switching stacks, but they are not insurmountable. Here's what I think (my day job is .NET, everything else I do is open source).

Cost

This is why most people want to switch to open source, or at least away from .NET. It almost always costs more to set up a decent server infrastructure to host .NET. If you go with a standard cloud infrastructure, most hosting companies will charge between 3 and 10 times as much per month for the basic plans.

Where it gets tricky is measuring long-term costs of development on a stack you don't yet know vs. opportunity cost of developing on one you do. However, if you're like a lot of bootstrappers, you don't have a lot of money to spend on server hosting, and it has to be as cheap as possible.

As an example, I spent approximately $150 my first year in hosting and bandwidth charges for 1 small server while I was working on setting up my business. If I had chosen to go with a Microsoft server, it would have cost more because they simply don't allow as small of servers. And, SQL Server is super expensive. It would have cost almost $2000. A comparably powered Ubuntu server would have cost around $500.

You

A lot of it depends on your ability to adapt and learn a new stack. It's not easy, because as a startup it's about much more than just learning a programming language. You have to set up the servers, manage the infrastructure, the databases, everything. There are services out there now that offer Platform as a Service and can abstract a lot of that management away for you, but that is often more money. You'll have to determine if that trade-off is worth it.

Knowledge Transfer

You say that you hope to adopt the best practices you've learned from .NET and transfer them to a different stack. My experience is that other than very high-level tactics, you're going to pretty much throw out whatever it is you know about .NET web dev when you move to anything else. There's just too many different pieces, different cultures, and different approaches to really achieve that much reuse.

That's not a bad thing though. You really should go learn other stacks, as they will challenge whatever you currently know and make you a better programmer.

Summary

My opinion is that if you're willing to trade off a slower start for a stack that's easier to manage and scale, and at a lower price, you should go with an alternate stack. Other people may say that software costs are not really the big cost, but unless you have funding, a lot of money saved up, or are willing to borrow a lot of money, that's just really not true at all. It's expensive to buy all that software and server infrastructure up front, and if you don't have the money, you can't pay for it.

share|improve this answer
    
All great points.. appreciate the time that you took to reply.. –  Baz1nga Feb 16 '12 at 5:53

Why not try and see?

spending a week knocking up a quick prototype with rails, or similar, will at least give you some insight into where there are impedance mismatches, and will give you some experience when you want to do the real thing, at least at the language/library level

it probably won't help much insight into what issues you might get on scaling up but there is no point in worrying about that until you know if you can live with it in the small scale

share|improve this answer
    
already doing that, but before I got started just wanted to run it by this community and here out peoples opinion –  Baz1nga Feb 16 '12 at 6:01

You are worrying about the wrong thing.

If you want to get something off the ground, get it off the ground the quickest way possible. Read up on a Minimum Viable Product.

Do you think Facebook was started with something like this as a major concern? Here's a hint, it wasn't. They used what they knew and built it as quickly as possible.

Be more concerned about getting something that people will use up and running and when you need to worry about something like this it will become apparent and clear.

Facebook has been re-written several times over in its short history in internet time. They didn't lock themselves into a "stack", re-writing isn't a waste of resources things change, being able to adapt it more valuable , concerning yourself about scaling for something that doesn't exist, that is the wrong mindset.

share|improve this answer
    
Well a facebook started out on an open source platform and hence had the liberty to extend the framework itself and build it to suit their needs which is not the case with .net. –  Baz1nga Feb 16 '12 at 5:59

Not the answer you're looking for? Browse other questions tagged or ask your own question.