Little Known Ways to Ruby Mastery by Jonathan Conway

A weekly series from the Ruby Masters

Welcome to the next installment of the weekly interview series on the RL blog – “Path to Ruby Mastery” – by top trainers and developers in the Ruby community, from across the globe. The interview series will provide insight and commentary from these notable Ruby trainers and developers, with the goal of facilitating and providing answers to the questions Ruby beginners face. We welcome your suggestions for interviewees and questions. Look for a new post every Tuesday!

Jonathan Conway, UK

This week, we’re happy to have Jonathan Conway from UK.

Satish Talim>> Welcome, Jonathan and thanks for taking out time to share your thoughts. For the benefit of the readers, could you tell us something about your self?

Jonathan>> It all started when I was bitten by a radioactive Commodore Vic 20 at the age of six. Apart from suddenly having the ability to keep still for long periods of time while staring at a screen. I found that I had a sudden love of power for the ability to control this ʻmicro
computerʼ with programming.

I first started programming commercially as a freelancer in the mid 90ʼs doing BBS intros in Assembler and some applications in C before going on to University. At some point while I was there I learned Java which is what I did for the most part for several years. Iʼd done everything from large dot com e-commerce sites on the web to real-time financial trading applications on J2ME enabled devices, but deep down I wasnʼt happy. It all seemed like so much work for so little return.

Being young it didnʼt seem to matter so much as time was something I had plenty of until I got married and had my first child. Around this time I was working as a technical architect for a company in the City, we had a small team and I was adamant that there was a better way to deliver software in shorter time scales beyond just Agile methods. During late 2004 Iʼd already been using Ruby for server administration. DHH presentation at some university was making the rounds and I realized that I could use Ruby for more than server administration.

Anyway to cut a long story short I re-signed from my job and setup the UKʼs first Ruby on Rails consultancy called Agile Evolved (yeh, I know cheesy name), grew the company with some very talented employees before merging with New Bamboo in early 2007. I stayed as the technical director for a bit before getting snapped up by a start up where I currently work called vzaar Yep thatʼs a small ʻvʼ, weʼre that 2.0;).

Keith Brady, Australia>> What are the pros and cons of Ruby that are being discussed in the development community and what is your opinion on that?

Jonathan>> For proʼs for the Ruby language I think the first thing people notice is the amount of flexibility and power it gives you. This can be quite scary/dangerous for some people as theyʼre so used to languages like Java/C# constraining them and ʻkeeping them safeʼ. But for a talented developer this can be incredibly liberating. Another pro of Ruby would have to be Ruby gems. After spending too long in languages where I had to physically go off, hunt down and install a library in my path, having the use of Ruby gems was a instant win for productivity for me.

For conʼs of the language? Well to be honest unless youʼre trying to use Ruby like a golden hammer I canʼt think of any that come to mind. I always encourage all developers to be skilled at more than one language and embrace other paradigms found in them. Itʼs always about using the right tool for the job.

Jerry Anning, USA>> What best practices are most important for a new Ruby programmer to learn and understand?

Jonathan>> With regards to best practices in Ruby the first thing would be to embrace the languages flexibility and dynamicness and forget what they thought was OO. When I first came to Ruby I brought with me all kinds of stupid Java baggage such as trying to create Abstract classes etc.

Unless youʼre coming from another language such as Smalltalk then chances are that your previous staple language wasnʼt as pure from an OO stand point as Ruby is. And I know Iʼm gonna start a flame war and sound elitist with some people but seeing PHP developers call their PHP 5 code Object Orientated just makes me chuckle. Itʼs not their fault most of the time as theyʼre just doing the best they can with the object model theyʼve been given. But seeing quite a few ex PHP devʼs creating Frankensteins of pseudo OO Ruby code makes me realize how important that new beginners have a clear foundation of the fundamentals of good Object Orientated design.

Jerry Anning, USA>> Can you recommend things to study after learning Core Ruby, including different frameworks, gems and external libraries?

Jonathan>> My personal favorite libraries to look at for clever yet clean and understandable code would be the following:

  1. Thinking Sphinx by Pat Allan. Itʼs very well written and easy to jump into if you need to change it for your own purposes.
  2. Datamapper by Sam Smoot. A very nicely abstracted ORM that gives you great flexibility.
  3. Ramaze by lots of very smart people. Although I use Merb for my everyday tasks I have to tip my hat to Ramaze. Very thorough test suite, advanced use of Ruby yet very easy to understand.

Victor Goff, USA>> How do you see the market for Ruby Programmers in the work place, and do you see it as primarily tied to Rails and Web related work? Do you see trends in administration or other work? What’s the future for Ruby?

Jonathan>> The market for Ruby programmers I feel will only get stronger. However one of the common traits of a Ruby developer is that they prefer to work freelance. This has made it considerably harder for companies to hire full time people. Not only that but Iʼve come across quite a few freelancers who have difficulty with the concepts of basic OO let alone good Ruby practices and yet have no qualms with charging the market rates for top end developers. I feel something will inevitably has to change in the future so as not to tarnish the reputation of Ruby developers and keep a healthy ecosystem of Ruby jobs alive.

Another thing is that hiring companies need to be smarter and go beyond the usual academic/paper skills when seeking out new talent. Iʼve been lucky to snap up incredibly talented people in the past who have been turned down by other larger companies. This is because unfortunately a lot of companies interviewing processes are either amateurish or outdated at best.

My personal interviewing technique is based upon psychology and technical ability designed to make the interviewee as relaxed as possible so that I can see their true abilities/potential and more importantly how theyʼll interact with others at work in a social environment. Remember a good team dynamic is crucial to successful delivery of projects.

Seeing what Jamie Van Dyke is doing at with regards to recruiting for clients I think is definitely going in the right direction to solve some of the problems Iʼve outlined above.

Woah, I kind of side tracked there but to keep on target I definitely see inroads into server/cloud administration with Ruby. The languages readability coupled with libraries like Puppet, Capistrano/Vlad, Thor, Vertebra and others make Ruby an Ops guys dream come true.

Satish Talim>> What can / should job candidates (for Ruby) do to distinguish themselves from their competition?
Note: The candidate has done his/her homework on the company that they are interviewing with. The candidate understands what they’re looking for, and the candidate is prepared to show them that he/she fits the bill, based on the candidate’s skills and experience. What else can the candidate do, to set themselves apart from other equally well-qualified and well-prepared candidates?

Jonathan>> I think the number one thing that everyone will tell you makes potential candidates stand out is contributions to Open Source. Preferably one with a good test suite, but thatʼs my personal bias.

The other thing is to spend time on personal projects. Even if theyʼre not Open Source, the ability to demonstrate your skills across a wide range of areas from the front to the back end in a web development context is priceless. If youʼre going for an Opʼs job then writing a library for administering a cloud should increase your chances by a magnitude. Hopefully if the person interviewing you is smart and not doing the outdated cookie cutter style interviewing technique then youʼll definitely be in their top ten.

Satish Talim>> Thanks Jonathan for sharing your views with the RubyLearning participants.

On 18th Nov. we talk to Ian Dees from USA.

The opinions expressed are those of Jonathan Conway and do not necessarily reflect those of

The Path to Ruby Mastery Series (So Far):

Technorati Tags: , , , , ,

comments powered by Disqus