6

I have been working on C++ backend large scale apps for over 5 years. I'm doing TDD, using STL and Boost etc. I decided I need a change and about year ago started learning Ruby, and few months ago I started playing with Rails, HTML5 and CSS. I don't know JavaScript yet, I'm focusing on Rails now.

What can I expect on an interview for a Ruby on Rails backend developer job? How can I present myself to take advantage of my C++ experience? I'm on a senior level now and I can't start from intern position.

I consider myself really good in C++, I know also some Scheme, some Python and quite a bit of Ruby. I'll have one small Rails app ready and 1 simple Gem published before I'll start applying. Plus quite a few personal C++ projects. I have a bachelor degree in Electrical Engineering and I'm completing master degree in CS in June 2011.

9 Answers 9

7
+100

If I were interviewing you for professional work in a new language, I would focus on a couple of things:

  1. How broad is your experience? What languages have you used besides C++?

  2. How well do you know C++? If you have been programming in C++ for more than a year or so, I would expect a pretty solid understanding of C++. This would tell me whether you would be motivated to really learn Ruby and web programming.

I also interviewed for a Ruby on Rails position with no experience in Ruby or web development. To get the position, I focused on the wide variety of languages I already knew, and the diverse domains where I had been productive. I got the job at a very nice rate, spent a weekend learning the basics of Ruby and Rails and kept on reading. After a month I found that of eight developers on the project, I was the expert in Ruby, Rails, and Javascript. The others had learned the bare minimum, and were essentially translating a J2EE solution into a very ugly Rails application.

2
  • I consider myself really good in c++, I know also some Scheme, some Python and quite a bit of Ruby. I'll have one small Rails app ready and 1 simple Gem published before I'll start applying. Plus quite a few personal c++ projects.
    – Nazgob
    Feb 20, 2011 at 20:26
  • 1
    If that's true, you should do fine. The world is full of mediocre Java developers, but not so many Ruby developers. It's great that you have been motivated to learn Ruby on your own. Feb 21, 2011 at 1:40
3

There's a famous article by Joel Spolsky saying that what his looking for in a job interview is people that are "Smart and Gets Things Done" - and the interviewer can check both by asking you about your past experience in other technologies.

The article itself contains more specific details.

2
  • yup, but it does not answer my question
    – Nazgob
    Feb 23, 2011 at 11:29
  • @Nazgob: I'd say it does, it says you need to focus on your can-do attitude, flexibility, and problem-solving approach with all kinds of tools rather than your expertise with 1 tool in particular.
    – gbjbaanb
    Jun 21, 2011 at 9:03
1

I think you should demonstrate that you have a good understanding of web development. Given your C++ background you're probably good at developing desktop or server applications. But for web development you should understand things like HTML, Javascript, and other concepts of web development like sanitizing user input and general user interaction.

I don't think you'll have any problem understanding how to program in Ruby, but being able to write a good web application differs from writing a good system application.

1
  • yes, thing is that I don't have a "good understanding of web development". I'm just starting :)
    – Nazgob
    Feb 23, 2011 at 11:31
1

Firstly it sounds like you're closer than you think. Solid ruby experience together with your update is a good start at presenting yourself.

Remember that it is better to presenting ability and experience rather than mastery of a specific skill.

Skills can be learnt by those with ability.

Using C++ in the environment you stated probably gives you an advantage as you will have a good understanding of a lower level than Ruby. TDD, STL and Boost are all good things to mention.

Ability is preferable to experience or skills. This is what you need to convey.

1

You just need to demonstrate your ability to learn

As others have rightly said, there are a vast number of mediocre programmers out there who never progress beyond the "Advanced Beginner" stage (see the Dreyfus model for more information).

Your fear appears to be that if you're not an expert in Ruby and Rails then you'll be paid as a novice. That's not the case - at least not in any sensible software house. Assuming that the company is sensible they will take into account your existing programming skills and will want to know how quickly you can come up to speed in their environment. If they are considering you at all for interview then they have already established that you are potentially valuable to them.

So what you need to do is demonstrate that you can pick up a new framework in short order. You already have these skills because you've picked up STL, Boost and a host of other tricky APIs and frameworks in the course of your C++ work. To think that you'd have trouble with the likes of Ruby and Rails makes me smile.

Since you're aiming to work on the server side of web applications, I'd suggest you get familiar with the following (you may already know this, but best to be sure):

  • Learn HTTP (request, response, codes etc)
  • Learn Rails migrations, ActiveRecord, routing requests
  • Learn the differences between Rails 2 and Rails 3
  • Demonstrate generating an app from Scaffold and navigating around it
  • Demonstrate grasp of fundamental functional programming style and dynamic typing (runtime injection and so on)

In short, don't worry but apply yourself to the task.

0

I wouldn't focus on proving you're some sort of Ruby guru. They've read your resume, and they obviously believe you are competent to do the work (hence the interview).

At worst, they might ask you a question to try and trick you. I think C++ supports multiple inheritence, and Ruby only supports single inheritence. Perhaps some scenario where that could be a factor. That's about the only way I could think to trip you up.

Practice writing Ruby code on a whiteboard. Make sure you understand simple things about JavaScript (like it's a client side language that runs in the browser). Walk through an HTML form validation tutorial for JavaScript if you really haven't done anything in JavaScript.

Good luck!

0

What can you expect at a ruby on rails job interview?

Of course it depends on the company and the project. You should probably be well versed in ActiveRecord - one of the crown jewels of rails. Also brush up on MVC patterns and how rails uses them, i.e.: models, views and controllers. Learn a little bit of rails roots on top or that and some deployment strategies (Capistrano) and you might survive!

You'll look like a pro ruby/rails dev if you bring in mac too (jk)

1
  • I use a MacBook Pro lol
    – Nazgob
    Feb 25, 2011 at 8:29
0

If I am hiring a rails developer and he/she is new to rails, I'd like to know his/her knowledge about:

  • MVC
  • project experience
  • what are the popular gems
  • heard of railscasts?
  • how route works
  • security concerns
  • deployment options

In OP's specific case, maybe some addition question about:

  • previous work on c++
  • reputation on stackoverflow
  • blog about c++ ?

just my 0.02

0

Make sure you've picked up some of the testing technologies around Ruby and Rails - RSpec and Cucumber are good choices. If you've been doing TDD with C++ that's a good start.

Do learn at least the basics of HTTP and CSS. You don't need to be a complete guru but you will need to be able to make small changes. W3Schools is a great site; takes less than an afternoon.

To best take advantage of your existing experience, concentrate on those aspects of software development which aren't actually about programming. How have you interacted with other members of the team? Have you mentored anyone? Collaborated with the testers to fix a bug? Helped a project manager promote the work you're doing? Negotiated with infrastructure for a new machine? Those interactions are some of the most difficult things any programmer can get involved with - since human beings don't always behave rationally - and your experience with that will be more valuable than just knowing a language.

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