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.

Currently I work with ColdFusion 9+ and some Java in a Windows environment. Prior to ColdFusion, my background was in Java and JSP.

I'm considering a move towards Ruby on Rails, as I think it would be a real challenge, keep things fresh, and provide more job opportunities.

In order to get into it, I started to build my personal website in Rails 3.0. But what else can I do to make this transition from what I know now to Ruby and Rails? Are there specific or idiomatic aspects of Ruby or Rails I should keep in mind when switching over from a ColdFusion and Java mindset?

share|improve this question
    
pylons and django should also be part of you exploration. –  nelaar Apr 8 '11 at 9:39
add comment

5 Answers

up vote 6 down vote accepted

There's nothing like doing a real project to learn a language/framework. In my opinion, engineering things around needs is a ton more helpful in learning than just building something for the sake of building (e.g. personal website).

Personally, having played with early Rails 2, I'm learning Rails 3 now myself and lucked out in a couple ways. One, a former boss had a project that I could work on as a side job and I was able to build it in Rails. And two, in my current job I was able to convince a small ancillary project to be built in Rails. When I tried to learn Rails before I think the missing piece for me was having an actual real world project to work on. For you, how about you propose the development of an internal tool or a support app and casually throw in that you'll try to build it in Rails as test/investigation? You might be surprised, other folks in your CF shop might be thinking the same thing and you'll find a underground movement wanting out of CF/Java.

And besides, when you do start interviewing nothing helps more than having actual project/code to show you know what's what.

I'm sure you'll agree, learning the Ruby language is probably the easier part for you. I won't get into that.

You don't mention having worked in any frameworks in Java/CF. In case you're new to using frameworks, learning a language (i.e. Ruby) is one thing and learning the framework is another. There's a lot to Rails. Starting off with concepts like MVC and ORM, to the nitty-gritty like the workings of ActiveRecord and all the stuff available in ActiveSupport. And don't forget that there's also learning the way the community likes to design things within Rails and gems, how to find support, where all the good gems are.

If you're completely new to Linux, don't underestimate that. There's a lot to pick up there. If new, I suggest setting up a Linode box ($20/month) and going wild on that as it's easy to destroy and start over and install different favors of Linux to see how package management works on various installs.

When hiring for let's say a Coldfusion developer, I think hiring managers are much more likely to go with a good programmer and give that person some room to learn CF. When hiring a Rails developer, I think the story is different. IMO, you would have to be quite impressive to be hired by a Rails shop with no real Rails projects under your belt.

Btw since you mention TDD, I'm just running into this now. For TDD and BDD, look into RSpec and Cucumber in favor of the built-in testing framework of Rails 3 (Unit::Test). That's what all the cool kids seem to be doing ;)

share|improve this answer
    
Thanks for that feedback. I updated my answer to mention some framework skills. The Linode tip is useful - as is the TDD frameworks to look at. The problem I have in my work is I could convince management to use a different language/framework but the whole Linux environment might be a step too far. So I think any projects will have to be in my free time rather than work-related. –  Ciaran Archer Mar 16 '11 at 17:26
    
Doh, yeah I actually looked into running Rails on a Windows Server, the news isn't good on that front. But see this link. That's for setting up a development env though I think. Btw, I thought this book was good. link –  Jinyoung Kim Mar 16 '11 at 19:38
    
I guess DHH isn't one of the cool kids. Personally I never saw a large difference between RSpec and Test::Unit, so I just use Test::Unit (not because its better, but because it comes out-of-the-box) –  alternative May 15 '11 at 0:33
add comment

I am also working to come up to speed with Ruby from a ColdFusion background and while looking at RoR (reading and playing) have decided to build something (small commercial app) with the lighter weight Sinatra framework as a first project.

Some of the best guidance I have found includes:

http://pragprog.com/

http://peepcode.com/

It's definitely a big advantage to have good code to show your prospects. Cheers.

share|improve this answer
add comment

I have made the transition myself and I am loving it so far.

Coming from Java/ColdFusion background, one of the hardest things to understand for me was how Object Oriented is different in Ruby. Well Grounded Rubyist is highly recommended book, if you are interested in understanding Ruby and the philosophy behind it.

I was working on ColdFusion on my day job and learn Ruby on Rails after work. I initially did my learning on a Ubuntu VM (much better than doing Ruby on Windows). But switching to Mac is way another level of awesomeness.

If there is a Ruby user group meetings in your area, do attend them, network with Ruby developers and watch them code. I learned heaps from attending user group meetings and hack nights here in Sydney.

share|improve this answer
add comment

For anybody else considering this, I also recommend learning and working with a framework while still working in CF. CFWheels is the most similar to Rails, and you'd be able to transfer over the concepts pretty easily. But I'd recommend to any CF developer who hasn't done work in a framework to try it. It forces you to think in very different ways.

share|improve this answer
    
I agree! I am using CFWheels and it's brilliant. It just feels really 'natural'. An almost perfect tool for creating web apps with a lot of the common problems and tasks catered for; URL rewriting / routes, JSON / HTML output, etc etc. I may move to RoR some time, but for now this is doing rather well and will give me a great starting point to understand what RoR really is. –  Michael Giovanni Pumo Sep 10 '13 at 14:12
add comment

I have actually made this exact transition (from Windows C++/C#/PHP/Perl) to Ubuntu/Rails.

I am not too sure about remuneration, because it depends on your geographic location. In Silicon Valley Rails is very popular, and developers get paid well. I suppose some areas have more demand for .NET(C#) or LAMP(w/PHP). It also depends if you want to work remotely.

It seems to me you might want to think about the future: the world is changing fast, and there are millions of people learning programming who will compete with you. Which technology has a brighter future? Which is likely to be in high demand with low supply of good coders? How can you create value for your employer that will not be outsourced to someone who works for 1/4 of your salary?

My experience is that Linux is not very popular with good Rails developers. If you watch http://railscasts.com, you'll see that they use Macs. I went to a few Rails meetups, and everyone seems to be working on Macs. Ubuntu is sort of the poor man's Rails Dev machine. It works fine, but costs 1/4th as much as a Mac.

By the way, I find editing the files on my PC (for now!) using Notepad++ and sharing the files from the Ubuntu machine works very well. You get all the benefits of working on your normal Dev machine and all the benefits of working in Ubuntu. I tried an IDE on Ubuntu, but it was slower than hell and didn't work for me. I love Visual Studio, but it's not really necessary if you do TDD.

I would suggest doing some freelance Rails projects. Working remotely is good because it is not obvious that you aren't really sure about what to do. Then you can gain real world experience and get better faster. And do all your development TDD, because you will improve and it will become a good habit.

Don't expect it to be quick and easy. I found Rails and particularly Unit::Test to be very difficult to learn. Much more difficult that C++, for example.

As far as areas to get up to speed with, TDD is the only one I can think of. You may want to learn the popular TDD tools, like RSpec, Cucumber and I think there is one very popular tool for stubs/mocks. (That would be a great Stack Overflow question.)

It also depends on your personality. Do you want to learn new (and exciting) tools and technologies? Or do you want to stick with what you know and become an expert? I'm not saying one is better than the other. But if you hate learning new things you would probably not be very happy as a Rails developer because it is changing so fast.

I don't think there are any real clear answers to this question. But it is a great question to ask (and most people don't even think of it -- +1 for Programmers.StackExchange). Hopefully this will help clarify your ideas and lead towards a solution.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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