I have been a .NET developer for the last 7 years. Now I want to move to a Ruby on Rails stack.
Also, I don't have any experience with Linux.
Anybody else who made the same move? Any suggestions? Good books?
I am having some idea about ASP.NET MVC
First, check out the RoR site. If you haven't done ASP.NET MVC, or are unfamiliar with MVC, it's going to be a big difference. Rails is a BIG MVC framework, so it may do a lot of "magic" stuff that you are unsure about (but so does .NET).
I'd suggest reading about MVC first if you are unfamiliar about it, then go from there. It might be worth it checking out another lightweight framework first, as some people have issues jumping right into a big MVC framework.
Good luck! I've found Ruby to be a lot of fun.
Do you already know Ruby? If not, "Why's (poignant) Guide to Ruby" is a humorous, but educational read.
You should also check out railscasts.com, if you want some insight into the Rails framework.
Related
I'm mostly a asp.net developer (and currently work as one), but I'm thinking about expanding my skillset or to learn something else. I'm thinking about learning Ruby on rails. What's the pros and cons with these (preferably from a asp.net (mostly version 2.0) perspective). Anyone
who has any insights?
I think it is easy to learn - and worth a try.
From ASP.NET MVC perspective it's easy to learn. ASP.NET MVC is close to rails - but rails has some more features.
For plain ASP.NET it's a bit harder.
Pro:
easy to learn
good to keep on learning new things
excellent linux/apache integration
Cons:
learning something new instead of extending existing asp.net knowledge
Integration in Windows (not good enough from my point of view)
why not? Variety is the spice of life and learning how to perceive code and data in multiple ways should flex your mind to create creative solutions no matter what the problem. There are things that .NET that are fantastic, while other things that RoR and other frameworks do better. No way to understand that until you do it.
Pro:
Exposure to another stack of tools which could be useful if you want to get into mixed environments. Seeing a different paradigm in going to a weak typed language.
Con:
There may be many areas closer to ASP.Net that you could choose to take instead including Azure, database development like MS-SQL or Oracle or Javascript frameworks like jQuery or mobile ASP.Net stuff for sites on smartphones or other things that may be closer to what you are doing now. WCF or WPF may also be options to consider that would be staying within the Microsoft stack in a sense.
While the Pro is certainly a valid one, I would think carefully about what other options are out there that may also be worth doing as well as considering what kind of stuff would you want to do later in your career.
Yes, if you're learning because you're curious. There's no reason why not. Ruby's a great language and learning any new language is interesting, since it can change the way you think about code.
Yes. if you're learning for job skills. RoR and Ruby skills are in good demand, as it's the highest profile web framework.
Personally, I like Python and Django. You might check out Django as the above logic applies to it as well.
I have been working with C# for past four years at the enterprise level. Now, I have taken a decision of moving to Web side of the things. Since I am well versed with C# and WCF I naturally zeroed in on ASP.NET as I need not learn a new Programming language. Learning just the Web Framework will suffice.
I have read a lot regarding MVC, so starting out with MVC 2.
My Question is Will I face any roadblocks if I learn MVC without learning Web Forms? Keeping in mind that this is my first foray into Web Development?
Looking forward to some good suggestions.
I was in your exact same position. The only problems you may have is wrapping your head around postbacks and what tha means. Having said that, MVC2 will teach you how to write better code instead of the typical spaghetti that comes asociated with webforms.
If you're new to MVC2 I'd recommend buying Wrox Professional ASP.NET MVC2 from writer Scott Hanselman.
Learning web development these days is hard as you need to be an expert on so many different things!
You need to learn HTML/CSS/JavaScript(ie, JQuery)/Json regardless of the server side framework you are using if you are creating “rich” web applications.
I would say starting with ASP.NET MVC is not a bad option before moving onto ASP.NET Web Forms. You are likely to hit both going forward, but as ASP.NET MVC does not hide what’s going on so much, I think it may be a better start.
However if you just wish to create simple forms on the web, it is hard to beat ASP.NET Web Forms, but as soon as you wish to do something more advanced, the Web Forms complex page cycle will give you pain.
If you're looking to apply your web skills to enterprise environments, you'd probably find a lot of environments still leveraging Web Forms. Outside of that, I can't imagine it would really hurt you that much.
The bigger thing about web development is getting familiar with HTML/CSS/JavaScript(ie, JQuery). The skills learned there are applicable to either environment. You'd probably be able so switch back end frameworks rather painlessly as long as you're used to c# and all the web stuff previously mentioned.
I think it depends on what type of applications you are going to be developing. I believe web forms would be easier for you to learn with the background you already have in WCF. But it might not be worth it if the applications you are developing are better suited for MVC rather than web forms.
My recommendation would be to determine what type of applications you are going to be developing and then look at the strengths and weakness's of each and then determine which one you are going to focus on.
You most probably won't. There are some concepts that belong to the web-application environment (session, caching, etc) that are common but you'd have to learn about them anyway. They are two separate frameworks so nothing very specific about one of them could help you with the other.
You will undoubtedly run into issues when knowing a "new" way of doing things without having been brought up in the "old" way of doing things. It's unavoidable, really. I'd suggest learning the basics of WebForms code if possible, if for no other reason than to be able to trudge through it when necessary. Of course, if you find yourself in the position of having to support a WebForms application, you'll learn by doing just like anything else.
This question reminds me of my early days in .NET (which were the very early days of .NET in general) and trying to find assistance with various issues. I was an entry level developer, hitting up forums and such with questions. Everywhere I went, people weren't really adopting .NET just yet. They were all old Windows platform developers, whereas .NET was my first Windows development (I was all UNIX/Linux in school). Invariably, nearly every question I asked was answered with something suggesting that I "just use COM." Of course, I wasn't familiar with this. It was "the old way" and I was using "the new way."
It was difficult to work past that, and you'll likely face the same issue here. Basically, when people have made a career out of doing something the one single way they know how, they tend to expect everyone else to know it as well and will cling tightly to it as their bread and butter. You can be better than that, but it'll require patience :)
I assume that your development experience included Windows Forms. In terms of the transition from Windows Forms to ASP.NET WebForms, there's no doubt that would be an easier transition. Whether that would be the best transition is another question. And I believe the answer is without a doubt, no.
MVC allows you to gain an understanding of the way the Web works. Understanding GET and POST, Requests and Responses, not to mention HTML, CSS, JavaScript, et al.
I would not hesitate to recommend MVC.
I don't understand why you don't want to learn Web Forms. Learning Web Forms is just like learning abc's. You'll learn it as you go along with MVC. My suggestion is, Just go with the flow in your learning of MVC and you'll be surprise that you're already learning Web Forms.
Although I develop all of my company’s web-sites in .net, all of my personal sites are still in "Classic ASP". I'm always being pressured to move away from it... but it works! Why change?
There are some reasons to change but in the end, if your sites are up and running and you don't really need the new stuff, stick with it.
One good reason to change is existing support from MS and the developers community. I guess is harder to get a answer for a problem with ASP since most people moved to .net long ago.
The only real reason would be because the technology is getting to the point where you're going to find yourself without a platform to run your code on.
...who knows how much longer Microsoft is going to keep Classic ASP support in IIS.
In general, I'd never upgrade working code just for the heck of it because it's in an older, deprecated language. Especially for something like a personal page.
I can think of one exception, though: are you currently in the job market? You probably don't want to give clients/employers the impression that you're stuck in Classic ASP land.
I have a lot of Classic ASP production code, though, and I feel you on the Classic ASP "backlash." It's actually kind of embarassing to have that .asp extension in your URLs. I've actually considered changing the extension on all the .asp files to something new and changing IIS' settings so that new extension is handled by the ASP component.
I was in a similar situation - working on .NET at the office, and 5 or 6 sites at home on ASP that worked fine. For me the compelling reason to switch was when the .NET MVC community preview was released. I had been working with other MVC frameworks for years and was glad to be able to use a well-built native MS one.
I have switched about 4 ASP sites over to MVC as a way to learn the new framework and I am really glad I did. I'll always have a soft spot for ASP (and can still remember enough to answer most questions), but .NET MVC feels so much more advanced.
If you feel your skills with what you do at your job is fine (don't need more practice) and you are happy with your personal sites the way they are then leave it.
The only thought to consider is if you were to want to use the personal sites as a way to promote yourself it could be viewed as old tech and thus your skills may be looked down upon.
It is outdate? absolutely, but is it Irrelevant? well it is based on scope of your application, if it is just a simple database driven (eg: CMS, e-commerce) i personally think that classic asp still relevant for that, in fact that I still use it for some CMS/e-commerce projects since I already have application legacy written with it and has satisfied my clients for years.
but if you going to build large business application with multi programmers involved then you may need to think about .NET
For me personally, ASP.NET has been more reliable. I mean, some bad ASP.NET code can't as easily take down IIS as some bad ASP code. Again, that's just from my own experiences. I don't know how much merit there is to it.
But I don't see the harm in running your personal sites in classic ASP really as long as it's working for you.
Classic ASP certainly isn't as common now as it was before the introduction of the .NET family, but I don't think you're hurting yourself much by maintaining personal sites in it. If you were self-employed and looking for work as a .NET developer, it might be odd to have personal sites only in Classic ASP; in that situation, you could convert one or more to .NET, and that might help you demonstrate your skills in both sets of languages.
I realize that ASP.NET MVC has all the hype. I have my doubts that I need it, but wanted to explain my potential project:
This is an internal LAN application. It is doing CRUD operations and a little reporting.
The user base is small (< 12 people) and there is not tons of data
There is not a huge number of screens (Maybe 20)
I don't care about URL rewriting
My view state is typically small (like a DealID or ClientID)
Even though I don't have a full mastering of Page Lifecycle, I do understand Postbacks and don't have a problem coding for it.
I believe in Layering and am familiar with the M-V-P pattern and other patterns.
I want to do some Unit testing, but heck 25-50% coverage is better then what most apps.
The app will have a little AJAX for search screens, but don't see it being overkill.
So what do you think? While using the "sexy" technology is cool, is it necessary?
No, it's not necessary. It sounds like you've already made up your mind. If the application isn't all that critical and you're more familiar with web forms, just do it the way you know how to. I think ASP.NET MVC is worth learning, but it isn't the right solution for every project. Go and try it out in your free time so that when this situation comes up again, you'll have more options available to you.
No you don't strictly need MVC but are you asking whether you should learn something new or use what you already know for an internal project? An internal project might be the perfect place to try out something new.
As was said, it's not necessary. However, if you're doing a basic CRUD application (and it sounds like you are), MVC would make that nice and easy.
You mention you're moving to project management. Do you think any of the projects or products you look into will be using MVC? If so then at least you'll have some familiarity by learning it with this small application. This means it is necessary, if you need it as a PM, but you do not require it just to build the app. It could run with anything you choose.
Incidentally, ASP.NET MVC is new, not MVC, not by any stretch of the imagination. I know you did not say it was, but you mention hype. I cannot help but think Java and other folks are saying, "We've been doing this for years and years."
You can use both.
Create a Visual Studio Web Application (not a website), and you'll be able to use both if needed.
You'll just need to add a reference to MVC and setup the routing.
Webforms and MVC
It's not necessary, no, but there's no reason why you can't use webforms or MVC.
If you feel comfortable working with webforms, then go down the webforms approach. If, however, you feel the need to broaden your knowledge of architectural patterns, then ASP.NET MVC is a pretty nice thing to use.
If unit testing is important to you, go with MVC. Everything else you mentioned, though, points to WebForms.
I am ASP.NET developer from last 5 years and still loving it. There are lots of good voices in air about Ruby on Rails. I want to ask to community, Is there any worth trying to learn Ruby On Rails as a ASP.NET web developer on following point of view.
Scalability
Documentation
Community Support
Hosting Solutions
Deployment
ETC.
I'd take a gander as ASP.NET MVC. This way you can stick with the .NET Framework yet still get some of the things you probably want out of RoR.
ASP.NET MVC is very lightweight and easy to scale with some of the APIs it provides (SQL storage for sessions or even Microsoft Velocity).
ASP.NET MVC has lots of support from the community and thus has lots of documentation and feedback from the community and Microsoft itself.
Lots. Check out http://www.codeplex.com/ASPNET for more information.
Well, ASP.NET MVC is bin-deployable. So as long as your host supports ASP.NET 3.5 there's nothing else you need. They don't need to have ASP.NET MVC installed in any sort of way. So if you wanted to, you could easily use a shared host.
Deployment is very easy with ASP.NET MVC and with the changes coming to Visual Studio 2010 for easier deployment of web sites via "Packages." I currently maintain 2 ASP.NET MVC sites and find it with bin-deployment to be just the same as a regular ASP.NET WebForms site.
I'm now in your shoes, because I'm learning RoR after commercially developing in .NET for 5 years.
Here is my two cents:
Scalability: I believe that rails can scale quite well, there are numerous options available, such as mongrel clusters on linux.
This one is a bit worse than on .NET. But the community is very good and you'll never find yourself searching for a good way to go.
See above (it is excellent)
Hosting is not a problem: numerous hosting options available.
I find transition from development to test and then to production better thought of in Ror than in ASP.NET.
I fully agree with Chad's post.
I was half way through development of an app in rails and now i've done a complete 360 and have reconsidered after delving deep into ASP.NET MVC for my day job commitments.
I am now changing courses and looking into ASP.NET MVC for all my personal projects, I think both are honestly remarkably comparable now as I think MS has had a good hard look at Ruby on Rails' feature set and ensured they could match features very closely. After all, if you couple a project with LINQ 2 SQL / EF, ASP.NET MVC and potentially Dynamic Data (if you need that sort of thing), I really can't think of any compelling reasons to choose Rails over .NET, however I CAN choose reasons to select .NET over rails - after all hands down the rich debugging experience with VS.NET, rich intellisense and watcher/quickwatch support plus the ASP.NET MVC framework supports Html Action Helpers, Model Binders, support and encouragement for unit testing, and now with the inclusion of JQuery and JSON results, you're virtually unstoppable.
I suppose besides obviously hosting/licensing costs, Ruby language preference and other personal preferences such as it being open source etc, It's really your choice.
1) Scalability
Rails is just as scalable as any other web-application stack. The only difference is that your single server might get overloaded, and require splitting to 2 servers sooner than it would in .NET due to the slower performance of the ruby runtime. In practice this is not a problem.
2) Documentation
Microsoft do provide better documentation for the core libraries than Ruby or Rails, but the ruby/rails ones are still on the whole very good. I'd consider ruby/rails to be the winner here for the simple fact that you can always view the source for everything. No amount of documentation is a substitute for being able to actually see what's happening.
3) Community Support
I've been nothing but impressed by the community support around rails. I don't know what else to say there.
4) Hosting Solutions
Since phusion passenger got released, It seems to be easier these days to find rails hosting than it is to find ASP.net hosting. This is only going to sway more towards rails as time goes by for the simple fact that hosting companies do not have to pay royalties towards microsoft to deploy rails on linux servers.
5) Deployment ETC.
Capistrano (the most common deployment solution for rails) beats everything else hands down.
Well I dont know anything about the Scalability part, but personaly i started learning Ruby On Rails from ASP.NET a while ago. I really had a hard time finding some good documentation - the class documentation on Rails site was really poor in my eyes, and I had a simple question about what arguments you could put into an actionlink. But maybe it was just me who never found the right place. But personally i think that the ASP.NET documentation is better than rails - at least buy a book, i think thats a good way to go.
Number 3. Im pritty sure that there is very good Community Support for rails you just have to find the right forum or other media that suites your liking - maybe this what was I did wrong.
Number 4. There is alot of hosting solutions for Rails, but not as much as ASP.NET or PHP. I think you have to research this your self, and find out, if there is anything that suites your likeing.
Number 5. Ruby should be very easy to deploy, it has a notion of a development, test and production database. It uses migrations, so updates in the database schema is seamless - thats very cool. It is scripting, so it should be a matter of xcopy from the development computer to the production server.
The reason you should choose Ruby on Rails is if you like the MVC pattern. The MVC pattern is genius, and ruby is a great language when you learn it. Maybe take a dive into the ASP.NET MVC, and see what its like - then maybe move to Rails. Then you only have to learn a new language, and not a new arhitecture, framework and language at the same time.
Remmember this is from a ASP.NET Developer who sniffed to Rails, but gave up, doe to the lack of ability to find really good documentation, and there was always some strange errors, from the editor or Rails - but thats properbly a newbie thing :)
But if you have time, by all means learn it. Some developers say that we should learn one new language per year, and Ruby is a great candidate for that.