Hey πβ¨
I've been looking around this website to find some good resources to improve my Ruby on Rails / Developer skills during my training hours, and I just realized that there wasn't much about it! So, what a better way to learn new things than reviewing resources to teach others.
But first allow me to introduce myself, I'm Antonio (Tony, Tonio, Anto, many other variants allowed...), a developer who started working in a Ruby on Rails team three months ago, after one and a half year of WordPress and other front-end tasks. I wanted to do something new, something that could teach me how to improve in other fields of programming, and there are few better ways than asking to join a big RoR team with almost no back-end experience, right?
So I started with this challenge, one-month trial on a team that did not speak my native language and had a lot more experience than I do.
Here is where I start with the resources that helped me to get accepted in the awesome team I'm working now.
There are four basic things that I think you must know:
- Best practices and good coding
- MVC knowledge
- RoR & Ruby knowledge
- Communication skills
Let's start from the beginning.
Best practices and good coding
What can I say about this...
Every programmer should know that doing readable, quality code is one of the most important things in our world (I almost listen this at my company more than my name).
For this, there are three or four things that I can recommend to everyone:
- Clean Code, Book by Robert Cecil Martin
- The Pragmatic Programmer, Book by Andy Hunt and Dave Thomas
- Get someone to check your work, compare it, revise it.
- Practice, practice, practice.
These two books are almost a must to every programmer around the globe. Specially for those who are starting into this writy-writy world. Good and efficient code will tell a lot about you, so you should improve this as much as you can. (And you'll end thanking yourself for the awesome code you did, that will make those 3 - 4 hour tasks go to a fifteen minutes one).
Having someone to check your code also helps a lot. Having a different point of view in the things you do will give you feedback that will make you think new things, will teach you new ways of doing tasks, and it will make you grow as a programmer, so go out and find someone who would love to constructively criticize your work. (And also do collaborate and do the same with that person, please!)
MVC, RoR and Ruby
Part two of this "article", probably the reason you came here. Worry not, here it goes!
Ruby on Rails is based on the MVC pattern (Model-View-Controller), and if you want to understand how everything works, you need to know the main pillar of the framework.
Won't take much part on the theoretical part of this, as there is a LOT of information that you can check around the internet, and won't need much apart from reading and understanding.
Here you can get knowledge for this.
Just keep reading!
In the practical part, I recommend creating your first project, no need to do code, and read this article, to understand how Rails directory work and how MVC is structured in the project.
Once you've done that, you should jump into real practice, and what I did, was reading and doing the exercises from Michael Hartl's book, Ruby on Rails Tutorial (Rails 5), from zero to deploy.
The link I wrote above is the free version of the book, which runs over an older version of Rails (This doesn't mean it's a bad book, you'll miss some parts, but nothing you can't pick up by yourself after finishing the tutorial).
Here you can buy the new book, which I'm sure it's also an excellent buy. You'll get both experience in Ruby and in Ruby On Rails by practicing and reading the exercises and apps made throughout all the chapters.
Once you've finished this book, or while you are doing it if you have time, I highly recommend doing your own app, and putting in practice every step you learn from this book. Testing, deploy, refactoring... All those things we think we won't use in a real team and then it's an everyday task. C:
Also please, learn some OOP (Object Oriented Programming), you'll love it, trust me. (You'll find some books for this at the bottom!)
Communication skills
Final mini-omega-step. If you are going to work in Ruby On Rails, you're likely to work on a team. It's not easy for some people, as there are a lot of skills to improve here. I'm just gonna tell you which ones seem the most important to me, as I'm not a sociologists of any kind, I can not get deeper into this (yet), so please, write these down as much as you can, and learn them by heart, as they would help you a lot in your developer career, no matter where or how you work.
- Do quality commits, explain as much as you can, you'll save time to yourself and others.
- If you are stuck, if you have a question on how things work (and you've already researched without a result) please ask.
- Learn how to constructively criticize, and to receive feedback the same way
- Write down steps and procedures you do so you can explain easily (and also to have a better understanding) on how a task was done, and which steps your coworkers have to follow to do the same thing.
There are a lot of things to follow, and even more books to read about programming, but I think these small steps will create you a really good foundation to become a RoR developer. Hope you liked it, and please don't hesitate on commenting or asking questions, or even correcting me (this is my primerito (1ΒΊ) post) via Twitter or wherever you like.
Practical Object-Oriented Design in Ruby
99 Bottles of OOP
The Complete Software Developer's Career Guide
Please add any other books you would recommend at the comments!
Colaboration is power πβ¨
Top comments (17)
Gorails.com
π€© I'm glad GoRails has been usefu for you!
When I was learning Rails, I found the Metaprogramming Ruby book to be incredibly useful. It explains a lot of the metaprogramming that happens inside Rails and provides all the methods that seem magical. It helped everything make sense for me since I had come from Python originally. Highly recommend it.
Awesome, thanks to you both πβ¨
I haven't touched Rails in almost 2 years but last time, other than reading the same books you mentioned, I also took the Rails course on Udemy by Jordan Hudgens. I don't recall the name but it was great, the instructor was very professional and I learned a lot taking that course.
I'm not sure if he released a new course for rails 6.
Awesome, thanks for the recommendation π
An additional resource: The Rails X Way, by Fernandez. He usually releases s new one for each version -- X is currently 5.
The aphorism "convention over configuration" is really important in Rails, moreso than in other frameworks I've used; the Rails Way book is good at setting what the standard use cases should be. Configuration is inevitable in most apps, but we should give those compromises a heavy cost when considering them.
I would also recommend "The WellGrounded Rubyist" (David Black) for general Ruby knowledge. Black does a stellar job of accessibly covering the language and it's nuances.
The biggest mistake I see new Rails developers do (in my 8 years of experience w Rails) is project their idioms from other languages onto Ruby. This is especially noticeable if their background is in a strongly typed language (C, Java, etc) rather than ducktyped (PHP, Python, Perl). Ducktyped languages approach data and flow control a little differently --
The POODR (Practical OO design in ruby) book (by Sandi Metz) that you link in your footnotes explains some solid examples of how to do ducktyping correctly. Her talks (on YouTube) are really awesome too.
One last thing: learn to write tests. It's painful at first but is the right path and it gets a lot easier with practice. Testing is a critically integral part of Ruby & Rails, especially. Whether you pick MiniTest or Rspec (the 2 most popular frameworks) is up to you; but pick one and practice hard :)
Welcome!!
Awesome share of knowledge, thanks a lot for commenting!
Hola Antonio! Some good resources you got listed here. Iβm currently reading Practical Object-Oriented Design by Sandi Metz and enjoying it so far.
Glad youβre liking Ruby & Rails! I wrote a post too about my learning journey a couple years ago when I was getting started, in case you want to have a look for other resource ideas: dev.to/fdoxyz/learning-rails-in-2017
β€οΈπ πβπΌ
Cool, gracias for the resources πβ¨
Thank you for sharing your experience and recommendations in Ruby development. Nowadays Ruby is among the most popular programming languages in the world. As for me, one of the best sources for learning Ruby are books, online tutorials and courses.
I'm also trying to learn Rails, and am learn programming languages by reading the code of their test cases, and it has worked very well for me.
I think I could grab a Rails tutorial, and that will teach me the basics, and then read through the tests and maybe even the source code to learn just about everything there is to know. Of course I'll forget a lot of things I read, but I also retain a lot of function calls in my head.
And for contributing to the Rails codebase itself, it's pretty much mandatory to read its source code anyway π
Great article Antonio. Well done!
Thanks a lot!
The way for me to become a Rails developer was also to join a RoR team! Haha
One does not simply learns Rails π
Thanks ToΓ±o! I been a RoR developer for 3 years and I think is time to start reading, thank you for the books list.
Glad you liked it!