views:

335

answers:

9

My background is .net 2.0 development using web forms. Before I was laid off I was looking into MVC which I enjoy very much. I have a few clients that I am consulting for and I now have to make a decision to either stay the course with ASP.NET MVC or switch to ruby rails or cakephp/codeigniter.

If I choose ASP.NET MVC I would have to upgrade my skills to C# 3.5, get familiar with DDD/TDD, IoC and the different ways I can build my models (Entity Framework, LINQ to SQL, SubSonic). All this seems very daunting and time consuming even though I already have a .net background. On top of that I feel like the majority of clients I ran into so far already have a non windows hosting setup so I would have to sell them on moving to a Windows hosting platform.

If I choose Ruby Rails I would have to learn a new language all together. I also hear it is not that Windows friendly. On the other hand it also seems that Ruby Rails is promoting the “one” and best way to do things. The Model part is already built in to Ruby so instead of researching and choosing your way to build your model Ruby already chose and implemented the best way for you. The Ruby Rails plugin library is also a big help to develop more quickly which is something the ASP.NET seems to lack at the moment.

The PHP route is similar to how I described Ruby above.

I have been thinking about this for some time now and I can’t for the life of me make a decision. Can anyone please chime in and steer me in the right direction? Has anyone been in a similar situation? I really would like to learn one thing well and focus my time and energy on helping my clients.

Please don’t turn this into a Ruby vs ASP.NET MVC vs CakePHP thread but rather look at it as I have one month to get up to speed on ONE framework. Given that time which framework do you think I would get the most bang for my time in the short run? How about the long run?

Thanks in advance.

+5  A: 

Go for ASP.NET MVC. Going C#2.0->3.5 is no big deal, and you already know .NET and webforms.

It will, by very very far, be the shortest route compared to learning an entire new language, which will also make you learn a new development environ ment.

The caveat is of course your clients. If windows hosting is not acceptable, you have to go another route(or find other clients), and that's what you have to figure out first.

nos
+1  A: 

Go with what you are most familiar with, since that will take the least amount of time to learn. Stick with ASP.NET MVC for now, then learn the others (if you desire) when you are able.

Short term: ASP.NET MVC. Long term: Whatever you need to get your job done.

Matthew Jones
Wow I got a lot of downvotes. Didn't mean to be so harsh guys, give me a second and you'll see that I edited my answer.
Matthew Jones
Weird. I don't anything in this answer (or the original) that seems particularly offensive or downvote-worthy.
Beska
+17  A: 

It sounds like you're further ahead on ASP.NET MVC than anything else - I'd stick with that. Learning C# 3.0 isn't too hard, and I don't think there's anything in that list that you'd need to learn for ASP.NET but not need to learn the equivalent of for any of the other platforms.

I'd stick with MVC if I were you.

I suggest you try to get awareness of where the various bits and pieces make most sense, but not go too deeply into any of them. Personally I'm a languages guy, so I'd learn the language side the most thoroughly, as it'll make the rest easier to understand - but I know not everyone feels the same way. (C# 3 is basically lovely, by the way :)

EDIT: I suppose I should add that I have a vested interest in people learning C# deeply, but no such interest in the frameworks. It's still my genuine opinion though :)

Jon Skeet
Also, for non windows platform customers, there is Mono, so no need to convince them to switch.
luiscubal
"C# 3 is basically lovely, by the way"? "lovely" I never heard a programming language described as "lovely" by a guy. I agree with the sentiment, but LOL +1
BenAlabaster
It took me about a month to get comfortable with ASP.NET MVC. I knew some ASP.NET before that, was not a guru by any means, but I find ASP.NET MVC to be very frictionless. The patterns make sense, and you have complete control over the markup. The only thing that threw me for awhile was the conventions, but I eventually got used to them.
Robert Harvey
The way I think of ASP.NET MVC vs. ASP.NET Web Forms is that MVC treats the web as it was intended to be: A *stateless* request/response service.
Redbeard 0x0A
A: 

ASP.NET MVC is certainly the future of web development on the Windows Platform. Ruby is not going to be something you see in any real Enterprise Development; of course you'll find it here and there, but anyone with common sense would rely on a proven and widely resourcable architecture like the Java and .NET Platform.

If I were you, I'd focus on the following:

  • C# .NET 4.0 development in VS 2010
  • ASP.NET MVC 1.0
  • Windows Workflow Foundation 4.0 development
  • Test Driven Development utilizing the Repository and decorator Pattens
Nissan Fan
I love how the Ruby latte drinkers voted me down without comment. I guess you can't handle the reality that having a MacBook, a closed platform like Ruby on Rails and sitting in a StarBucks and drinking mocha doesn't actually make you a programmer.
Nissan Fan
I've never used Ruby, but I voted you down because of the tone of your answer and your subsequent comment.
George Stocker
Gortok, what are you ... the conscientious observer of Stackoverflow? The tone of my answer? Reality makes you sad and upset? Ruby is a the flavor of the month (in 2007) technology that no one with an ounce of credibility would try to push into the enterprise. This man is trying to find a job, not sit around the house wondering why he can't find a job since he wasted his life learning a technology that is as practical in the real world as a degree in eating pizza.
Nissan Fan
Nissan Fan's reality != Gortok's reality != Goodlife's reality. Reality is subjective.
Matthew Jones
Nissan Fan, its the rhetoric that's getting you downvotes.
JoshJordan
Ruby on Rails is not a closed platform, it is licensed under the MIT License and Ruby has it's own fairly open license. You should also consider that you are pushing a very closed platform in your comment anyway (I know MVC is open source and so is the C# EMCA?? Spec). I will give you that there are a lot of bad apples in the Rails community. I left Rails and started using Django anyway, so I'm not one of those Rails cheerleaders, but you cannot be spreading misinformation...
Redbeard 0x0A
A: 

I would go with ASP.NET MVC as you can use it both in a .NET environment and a Mono environment (with a couple caveats), this allows your clients to run both Linux and Windows environments.

ASP.NET MVC

Mono

Redbeard 0x0A
+2  A: 

Ruby also uses the MVC framework ... so you are splitting hairs there. You SHOULD learn Linq and possibly the Entity Framework, everything else is in 2.0 -> 3.5 is very minimal.

Your problem comes in when you try to convince client to switch. If that is a big concern for you, I would learn PHP.

Martin
Why would be any easier to convince the client of using PHP?
Eduardo Scoz
Or get bigger clients that already use the Microsoft stack...
BenAlabaster
If they are already using PHP ... or someone told them PHP (or Apache). Despite popular opinion, Apache and PHP ARE very popular.
Martin
A: 

A month should be enough time to get pretty well up to speed on whichever framework you choose, so I wouldn't base the decision on which seems most difficult. If I were in your situation, I'd probably go through a tutorial or two in each different framework, and see which one seemed the most enjoyable to work in. You might also take a look around at how much work seems to be available for each one, and how the communities compare in terms of helpfulness and existing libraries to handle common tasks.

John Hyland
+1  A: 

I'd agree with Jon Skeet - stick with ASP.NET MVC if you've started to work in that.

C# is fairly easy-to-learn language. A lot of the syntax comes very naturally, and it has the best IDE around (Visual Studio or Visual Web Developer), whose Intellisense will go a long way in helping you learn. Ctrl+J will pop up Intellisense if you've lost it - remember that one!

I would also recommend starting with Linq to SQL for persistence. To me, if you have any database skills or SQL knowledge, its syntax comes very naturally as well. You grab some objects, make some changes, and SubmitChanges() to your database context. Simple enough. EF is very nice, but takes some time. Linq to SQL, on the other hand, is very straightforeward. You build your database schema, generate classes from it, and hit the ground running. It will also be a good introduction to LINQ, which is part of catching up your C# skills.

I'd highly recommend going with MVC & Linq to SQL. Check out the videos at http://www.asp.net/learn and come back here when you hit a snag.

JoshJordan
Great Visual Studio Tip CTRL+J, I never knew that before now. That should be added to the C# hidden features question. +1
BenAlabaster
:) Its one of my favorites. I went out of my way to learn it when I backspace'd my Intellisense away one-too-many times.
JoshJordan
A: 

Go with asp.net mvc then try Grails it will give too much concepts that will make mvc funny again.

suhair