Part of my job as the Ruby teacher for Treehouse is to stay on top of what employers are looking for when hiring people to fill Ruby and Rails positions. The landscape changes often but below are some of the trends that I’ve noticed. Having a willingness to learn, being able to embrace new technologies, staying motivated, and strong communication skills are important for any job. The following list focuses more on the technical side of things.
Ruby on Rails
It should go without saying that employers are looking for both Ruby and Ruby on Rails knowledge when hiring a junior Rails developer. Experience is always helpful as well. A junior Rails developer should have at least a cursory familiarity with everything in the Rails Guides. This is going to include:
- Models, Controllers, and Views
- ActiveRecord validations, callbacks, and associations.
- Bundler and Gem installation
- Debugging skills
- The ability to read documentation
In addition, it’s important to be familiar with conventional Ruby. Ruby is very lax with coding style and the liberties that can be taken with syntax. Coders should follow a consistent style, such as the GitHub style guide, when writing code.
HTML and CSS
A Rails developer should know both HTML and CSS. There may be more leeway with a job that involves only back-end Ruby development, however, those are fairly rare.
Although NOSQL databases have been gaining in popularity, MySQL is still a “gold standard” that is heavily used. If you want to go the extra mile, learn how to use Postgres as well. There’s a reason the LAMP stack includes MySQL.
It actually warms my heart to know that unit testing is in such wide demand. The Ruby and Rails communities have been forward-thinking and have embraced testing for a long time. Over the last several years, that mindset has become more widespread and now is part of many engineering cultures. Unit testing can be difficult to learn at first — particularly if trying to learn unit testing at the same time as programming concepts. The investment pays off in spades, both when applying for jobs and attempting to fix code you wrote six months ago.
The Ruby and Rails communities are known for their testing tools and this is reflected in many junior development positions. The default Rails stack does not include RSpec. Many companies have embraced RSpec for its clarity and ease of use when writing tests. RSpec is my personal preferred testing framework of choice.
The interesting part about RSpec and Unit testing is that many of the job postings I’ve looked at were split almost down the middle. For that reason, I recommend learning both testing stacks in order to hit the ground running at a new job.
Git is currently the de-facto standard for version control. Yes, Mercurial, Subversion, and other version-control systems are still in use but a junior Ruby on Rails developer needs to know how to use Git. Using any version-control system is a requirement these days. Uncle Bob Martin likens writing tests and using version-control to a doctor washing his hands before surgery — it’s just something one does as a professional.
The latest trend has been a push towards ‘DevOps’, where developers will write programs that help control the infrastructure of an application. The first step on the path towards that goal is learning about how a linux system is laid out, how to navigate the operating system, install software, update and configure software, troubleshoot issues, and more. Once these skills are mastered, one can move on to more advanced DevOps related skills, such as Capistrano.
Employers wanting experience and knowledge in agile methodologies came up a lot in job applications. This one is a chicken and egg scenario for someone applying for their first job — it’s impossible to claim agile experience when you haven’t worked in an agile environment. Instead, I recommend reading up as much as you can on the different ways companies practice agile development as well as books on the topic. The Pragmatic Bookshelf has several books available.
When applying for a junior Rails developer position, it’s not just as simple as knowing how to code a Rails application. There are several peripheral technologies that are necessary to be familiar with. Want to know a great place to brush up on some of these skills? Check out some of the Ruby courses I have done on Treehouse. Shameless, I know.