What skills should a junior Ruby on Rails developer have?
During my career I had a chance to work with many developers. Besides that I was hiring new programmers to the companies. Based on my experience I’ve built a list of skills that, in my opinion, every junior Ruby on Rails developer should have to not only build software, but also to be valuable part of the team and have an impact on the product that she/he is building.
I’ll break down that list into few categories.
Non-technical skills (aka soft skills)
- English language — most important skill for every developer. You will use it on a daily basis. Surprisingly a developer’s work is mainly not about writing, but reading. Most probably you will also use it in a communication with other team members/clients etc.
- Ambition — you don’t want to be a junior for years, right? Try to participate in solving harder problems, non only trivial ones.
- “I don’t know” approach — only if you admit, that you don’t know something, you can learn it. Usually more senior colleagues will be happy to help you with something if you say that you don’t know it. You don’t have to be shy because of that. It’s a normal process of learning.
- Willingness and desire to learn — try to show that desire to learn. Ask, spend additional time reading and coding your pet projects.
- Culture/company fit — this is huge and very important. If you feel you don’t belong to the company, or the company knows you don’t feel that spirit, it makes no sense to go that way for both of them. Your performance will go up only if you feel good in that environemnt.
- Knowledge where to look for an answer in Internet — as I wrote before — a developer is mainly reading, not writing. As a junior programmer you have to know where to find answers to your questions. Get familiar with Stackoverflow, forums, Google, …
- Syntax — you need to know how to write some basic elements of the language like loops, classes, conditional statements, modules etc.
- OOP programming — as a Ruby developer you will work mainly with object oriented programming. You need to know some concepts of OOP in Ruby like: classes, objects, inheritance vs composition, blocks vs procs vs lambdas, including vs extending a module.
Ruby on Rails
- MVC paradigm — this is a structure of RoR framework. You need to know which layer is responsible for what and how to structure your app so you know where to put business logic and where the view goes.
- ERB/Haml — two most common templating/view systems. I would suggest starting with ERB.
- ActiveRecord — most of the web applications use some form of data persistent. You have to know ActiveRecord, at least something about models, migrations, associations, validations.
- Configuration of a new app — you should practice a lot! Build your pet project and try to learn by coding. To do this, you will have to know how to configure new project from scratch.
- Unit testing with Rspec — testing is a very common approach for projects built with Ruby on Rails. Rspes is very common as well. You have to know how to write unit tests with Rspec as an effect of your work needs to be covered by tests to be approved/merged.
- API + JSON — Ruby on Rails is used very often as an API provider, so you need to be familiar with API as a concept and JSON as a format.
- Basics of REST and HTTP protocol — a lot of web applications work as a REST app. You should be familiar with HTTP protocol, at least recognise HTTP verbs and few most common statuses.
Frontend based skills
- HTML5 — some basics about HTML
- CSS — knowledge how Cascading Style Sheets work and what are the concepts behind SCSS/SASS
- Basics of SQL — even if you don’t have to write any SQL because ActiveRecord is doing that for you, you will need to read logs to understand what is happening.
- PostgreSQL / MySQL — two most common database engines. Would be good to know some differences and how to set up them on your local machine.
- Concept of NoSQL databases — although not so popular as SQL databases, you can find them in many existing projects.
- Git — essential tool for code management. You have to know what it is, how to create new branch, pull and push your code.
- Deployment — would be good to be familiar, or know what are: Heroku, Capistrano, Docker, CI.
- Tools to project/ticket management — Trello/Asana/Pivotal/Github and many more.
For Polish readers:
Nagrałem podcast, który nieco szerzej porusza kwestię umiejętności jakie powinien opanować junior developer. Zapraszam do subskrypcji podcastu “Porozmawiajmy o IT” i do przesłuchania odcinka 3 — https://www.buzzsprout.com/103493/630928-poit-003-co-powinien-umiec-junior-developer
Want to know first about new articles from that blog?
Subscribe to my newsletter now! — http://eepurl.com/cVPm_v
If you like this article and consider it useful for you, please support it with 💚