When thinking about the situation that you are willing to work with a programming language which is new to you, what will you do to teach yourself?
Most of you will read some books written for beginners, or will go to some tutorial site of the language. You may sign up to some code challenge sites such as codewars.
I am totally positive to do so and I do too. However, even if you finish everything above, you may still be worrying that "Can I do well with this knowledge in the real job?"
Now, I would like to ask yow how do you teach yourself after finishing those works for beginners.
Code Reviewing
I will introduce my answer to the question above, that is to ask someone, who are working with Ruby already, to review your code and discuss what code is nice and what code is not looking at YOUR code.
In the job, it is extremely important that you can explain why you wrote this code, because there is no absolutely nice code.
What programmers have to do in the real work is to think of the best code within the specific situation you are facing, and what beginners have to learn is how they write suitable codes considering each situations.
The problem here is that we need experiences for "considering each situations", which beginners don't have of course. Thus, code reviewing and feedback from the experienced is necessary.
CodeYourRuby
I would like to introduce CodeYourRuby which I opened as a GitHub repository.
CodeYourRuby is a place where beginners of Ruby can ask the experienced Rubyists to review their code.
By making Pull Requests of codes which satisfy the specifications of assessments committed to CodeYourRuby repository, the experienced Rubyists review them on the Pull Requests by practical point of view.
Benefits for beginners
As mentioned above, the Ruby learners can discuss with the experienced Rubyist looking at the same code, yours, and the discussion will make them think about and know nice Ruby-like code more and more. That is the biggest benefit for beginners.
The assessments are not very complicated, which can be implemented with a couple of classes and tests, so they can easily start coding, but not too easy to finish in a couple of minutes or so.
Benefits for reviewers
You may think that who, the experienced Rubyists, would join CodeYourRuby as a volunteer. Yeah, it's true that CodeYourRuby has one big problem that it doesn't have enough reviewers and Pull Requests are left without any comments.
However, that does not mean reviewing on CodeYourRuby is meaningless for reviewers.
Reviewers can discuss with other reviewers. By discussing with not only the beginners but also the other experienced Rubyists, they can find new knowledges or ideas about Ruby. As they cannot say they know everything about ruby, it is useful to join the discussion.
In addition, especially for those who does NOT have enough chance to be a reviewer in their job, CodeYourRuby is the awesome place to practice reviewing.
Therefore, even if they have already worked with Ruby and familiar with Ruby, joining code reviews on CodeYourRuby will work them positively.
Summary
As I discussed so far, joining code reviews is very important for both the beginners and the experienced.
CodeYourRuby can provide chances of code reviews for everyone for free if they are looking for ones.
As the idea of CodeYourRuby can be reusable with some other language or some other community, I will be happy if repositories with the idea of CodeYourRuby are created more and more. Also, I will be happy if more and more Rubyists join discussions on CodeYourRuby.
* Note that CodeYourRuby is only for Japanese right now. I will work hard for translation if I get a lot of positive responses from the readers of this post. (So I'll be grad if you "like" this post or "star" CodeYourRuby repository, thanks.)
Top comments (3)
Another strategy: read code.
Almost none of us do enough just plain reading.
Excellent choices are O'Reilly cookbooks for your favoring languages. You see good code, and you learn new techniques.
I agree with that. Reading code of OSS is also useful I think.
I believe that making a cycle of "Reaing nice code" -> "Writing code" -> "Code Reviewing" -> "Reaing nice code" -> ... would accelerate the growth of engineer.
Amazing idea!