Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>This is sort of from the top of my head; I'm sure I am missing a lot. Besides the things mentioned here, understanding programming and object-oriented programming in particular is a must, of course.</p> <p>A few important language features:</p> <ul> <li>Realise that in Ruby, <strong>everything is an expression</strong>, and be able to apply that principle, even if you think it makes your code unreadable.</li> <li><strong>Closures</strong> are mentioned; I would also expect Rubyists to know the differences between blocks and procs (and lambdas) and know how to convert between them. Closure mastery is important to being able to write beautiful Ruby, in my opinion.</li> <li><strong>Operator overloading</strong>: know what happens when you define methods named <code>[]</code>, <code>[]=</code>, <code>==</code>, <code>+</code>, <code>&lt;&lt;</code>, etc. on an object.</li> <li>Be proficient with most instance methods of <strong>Array</strong>, <strong>Enumerable</strong> and <strong>Hash</strong> (even if you don't know the exact definition by heart). Your Ruby code will be so much more verbose if you don't use methods like <code>collect</code>, <code>inject</code>, <code>join</code>, <code>zip</code>, etc. where appropriate.</li> <li>Thoroughly understand what <strong>Symbols</strong> are, and when you should use / avoid them.</li> <li>Understand what <strong>metaclasses</strong> are, know the difference between <strong>class variables</strong> and <strong>class instance variables</strong>.</li> <li>Know how <strong>object attributes</strong> work in Ruby, how you can define them with <code>attr_accessor</code> and friends, and how you can define them yourself.</li> <li>Be able to use <strong>modules</strong>, both as <strong>mix-ins</strong> and as <strong>namespacing tool</strong>. You should also understand how to mix-in instance methods <em>and</em> class methods (or be able to figure out how you could do it).</li> <li>Know the difference between <strong>raise/rescue</strong> and <strong>throw/catch</strong>, and be able to use both correctly.</li> <li>Understand how <strong>metaprogramming</strong> works, and at least have a basic idea of all the methods that allow you to do metaprogramming (mostly hidden in the classes <code>Module</code> and <code>Object</code>).</li> <li>Be able to use a <strong><code>Hash</code> method argument</strong> as a substitute for named arguments (even if it's just because it's a common pattern).</li> <li>Know how <strong>concurrency</strong> does and doesn't work in Ruby.</li> <li><strong>Continuations</strong>, even if they're rarely used.</li> </ul> <p>Some vital tools:</p> <ul> <li>Know and understand <strong>Ruby gems</strong></li> <li>and <strong>rake</strong></li> <li>and <strong>RDoc</strong>.</li> <li>and <strong>YAML</strong>.</li> </ul> <p>Some framework knowledge:</p> <ul> <li>Basic knowledge of <strong>Rails</strong> would be useful. Even if it's only because the outside world sometimes doesn't seem to know the difference between Rails and Ruby.</li> <li>Know there are <strong>other web frameworks</strong> than Rails: Merb, Sinatra, Camping, ...</li> </ul> <p><em>Ultimately, keep in mind that the above is "just knowledge", and not skills. It's probably easy to pick up most of this if you're not familiar with it.</em></p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload