When faced with the choice if Ruby should be your next programming language there is a lot to consider depending on your perspective. If you are new to the industry you might be looking for the fastest way to get a job, for example by checking how many companies are hiring Ruby developers. If you are an experienced engineer you might be looking for a way to solve a technical problem, for example, you might be considering Rails or Hanami to build your next web application.
The point I want to make here is that even though job market and technical considerations are definitely important, making sure that your values align with the ones of the community you will help you stay motivated and keep improving even when faced with hard challenges. Ruby is not just a beautifully designed language (which turned out to be great for building web applications) but it also has a great community around it which will inspire and help you constantly improve your engineering skills.
Everything that follows in this article is anecdotal and based on my own personal experience, so handle with care. Despite that, I think it is worth sharing as an invitation to reflect on what values are important to you and if your community is helping you to let them flourish. So, what are the values of the Ruby community? While I can't speak for the community itself this is what I think best describes the Rubyists out there.
Rubyists are friendly
You might have heard "Matz is nice and so we are nice" when referring to the creator of the Ruby language Yukihiro Matsumoto (Matz). I recommend going to a Ruby conference to experience it first hand. Here is a list with the upcoming ones, but RubyConf in USA, Euruko in Europe and Brighton Ruby in the UK are the best places to start.
If you go there, the first thing you will notice is that Rubyists are very friendly to newcomers to the industry, which is great because Ruby is also incredibly well suited to teach to first time programmers. Its clean syntax and design drastically reduce the barrier to entry, and it gives a warm feeling of joy:
I designed Ruby to minimize my surprise. I was very amazed when people around the world told me that Ruby reduced their surprise and enhanced their joy of programming. Now I'm pretty sure that programmer's minds are alike all over the world.
And the more the community is welcome to newcomers, the better software developers we will have, creating a reinforcement cycle that compounds pretty quickly.
Rubyists care about beautiful code
If you come from a different community you can't avoid noticing the amount of effort Rubyist dedicate to learning resources. Screencasts like Ruby Tapas, or the excellent Sandi Metz's books are examples of what a community focused on learning is capable to do.
Beyond learning it is also impossible not to notice the obsession to craft beautiful code. The blog post Hunting for great names in programming by David Heinemeier Hansson (creator of Ruby on Rails) really gives you an idea of what it means to deeply care about readability.
Rubyists see themselves as Software Writers and we constantly strive for clarity. It is not hard science, and this is why it is so difficult.
Rubyists care about delivering value quickly
Ruby is a language made for building things as quickly as possible and a community of entrepreneurs have gathered around the language over the last 10 years. There will be a time where performance and scalability will be important for your company, but when you are two people and one idea, the one thing that matters to you is to prove that what you are building has some value.
Companies like AirBnb, Basecamp, Github, Shopify or Kickstarter are built in Ruby. And here is an even bigger list. Books like Agile Web Development with Ruby proves this community truly focus on delivering value quickly by exploiting iterative development as a first principle.
So if you want to a startup (with all the up and downs it entails) you are likely to find many of them built around Ruby.
In this blog post, I presented what values I found best represent the Ruby community and I encourage you to take them into consideration when comparing Ruby to other languages.
I wish engineers out there will start taking values much more into consideration when making their choice. And don't get me wrong; features of the language are incredibly important and there will be a time when depending on the technical problem you are trying to solve you should carefully evaluate the technical traits of the language.
However most of the times I think humans are the number one thing you should optimize for and one of the best ways I know to strive for developer happiness is to be part of a community whose values are aligned with yours. It seems obvious, but often we forget.
Software is built by people for people. You simply can't ignore the human dimension to software.
Let me know what you think in the comments. If you enjoyed this blog post you can also follow me on twitter.
Edits: Thanks to the feedback I received on reddit/learnprogramming, reddit/programming and reddit/ruby I edited the intro to this article to better communicate that what I am presenting here is based on my own experience with the community and not a hard statement of fact. Again, I encourage you to join a Ruby conference or contribute to a Ruby open source project to get a sense of what the Ruby community is like.
Also published on Medium.