Modern, simple, and friendly. In this way, engineers who work with Ruby describe the programming language. Today we have decided to find out what Ruby is like and whether it is worth your time. Our guide to the world of Ruby development is Aliaksandr Shahau, Senior Software Engineer, EPAM Training Center mentor. We discuss the pros and cons of this programming language, dispel myths, and tell you where to learn Ruby and how to get your first work experience.
Ruby is a concise programming language created in Japan in the mid-nineties. Ruby is sometimes referred to as the Japanese style programming, although its native country had no influence on the language whatsoever. If you look closely at Ruby's roots, you can notice the impact of the languages like Smalltalk and Lisp. It is from them and not from Japan that Ruby inherited its model to some extent.
How is Ruby different from other programming languages?
It is very expressive. Even someone who has never programmed before can read well-written Ruby code like English text and grasp it intuitively.
Is it advisable to choose Ruby as the first programming language?
It is not something I would suggest. I would consider Ruby as a second or third language. Here's why: the technology is modern and advanced based on a large number of abstractions. Without prior programming knowledge, it is easy to take everything for granted and use abstractions without thinking about how they function. Engineers who have transitioned from other programming languages to Ruby better understand the internal workings of the language.
Which language, in your opinion, would be a good foundation for subsequently learning Ruby?
To learn the basics, I would recommend something fundamental. University courses in programming languages, such as the C language, are a good choice. They teach the core programming principles, and once you have mastered them, you can go on to more sophisticated topics.
Why did you choose Ruby back in the day?
It was an entirely unconscious decision. I met a few Ruby enthusiasts at the university and followed the crowd. I ended up on a university course that taught things I had never heard before. Naturally, my first reaction was, 'What the heck is this?' It was too much to wrap my head around, even though I had some background: I was familiar with cycles, variables, etc. In the end, I could not make any sense of it and did not finish the course. I left and began to study the language on my own, dig deeper. After a while, I began to understand more. But the questions still piled up in my head: say, we have some construction, why it is so, how it came about. Gradually I unraveled the mysteries of language and figured out the truth. But I can say without exaggeration that it was difficult. So, I turned to the Ruby community for help. I spent a year preparing, reading, and looking for answers, then I returned to the university and finished the course. I believe everything I have achieved so far resulted from my constant intellectual curiosity.
What is Ruby used for?
If you ever googled Ruby, you almost certainly came across Ruby on Rails, a popular Ruby-based framework. GitHub, Ask.fm, SoundCloud, and Bloomberg are just a few companies that use it.
Ruby is used for building web applications, scripts for automation, system utilities, and web scraping and crawling. Web applications amount to 80% of all apps in Ruby. The remaining 20% include server automation tools, OS X package manager, and other apps.
Ruby is a general-purpose language, meaning you can do in it everything you do in other languages. The full extent of what you can do depends on how the community develops the language. It is very well-honed for web development, with the less active support of tools for other tasks.
How popular is Ruby in the market?
It is a tricky question for me to answer. I would not compare Ruby to fundamental languages like Java or C #. Their communities are on a very different scale, with Ruby's being far smaller. Enterprise-level Ruby projects are uncommon. It is typically used in startups that have grown into larger projects at some point.
I cannot say that Ruby is widely popular, but everyone who works with it loves it. Engineers from other communities say that the Ruby community is one of the friendliest and most active. Because we are not that many, you may be personally acquainted with the person whose library you use.
What do you love about Ruby?
I love Ruby because I can concentrate on business logic instead of code. Language instruments are like an extension of my hand, made with such precision that I have never felt something is blocking or holding me back. I just express my thought, and it transforms into a program. I suppose it comes naturally once you reach a certain professional level, regardless of the language in which you write code. The language eventually fades into the background, leaving you to concentrate on solving the task.
Let me give you a simple example. Suppose you need to drive a nail. You go to the garage, but you cannot find your trusted old hammer. Does it mean you need to give up and leave the job unfinished? Of course not. You can use a sledgehammer or any other heavy object to drive the nail in. You can apply the same logic to engineering. Ruby is an instrument; I don’t depend on it that much. I just love it for its simplicity and expressiveness.
What education do you need to master Ruby?
The only question is what level you want to reach. If we are talking about developing basic applications, you don’t require a lot of technical knowledge. You choose the language, learn simple syntax, and start writing applications. However, there is a drawback: you will eventually run into incomprehensible things. That is why I suggest beginning with a different programming language. Aside from that, it is a good idea to learn how computer circuit boards and processors work in general, so it doesn’t look like magic.
From my point of view, engineering education, rather than programming education, is preferable since engineering provides a broader perspective. After all, programming is only an abstraction. To put it simply, any technical education such as physics, engineering, or mathematics, which broadens your horizons, will suffice. Then it's time to start asking questions.
Is it possible to become a Ruby developer on your own?
Yes, if you approach learning consciously and constantly ask questions. For example, if you do not know what a database is, you should find and read good books on the subject. Taking a course in such a case may be superfluous. I would recommend Reddit, a news site where people share information and opinions. You can ask for literature recommendations or even a roadmap for your chosen profession in the Learn Programming community.
Don't be uncomfortable with the fact that you are self-taught. I can speak from experience: at interviews, no one pays close attention to whether you have certificates for passing educational courses. One of my colleagues once told me: “The face of the developer is their GitHub. If a candidate wants to get a job and sends their CV, and a link to a GitHub profile, so we can see their activity, their style, it is a good sign.”
The most important piece of advice: you should go to the community and ask, discuss, and share experiences. I come from such a community. Sure, I took a course at the university, and it paid off, but the foundation of my engineering culture was laid in the Hexlet community.
Is it possible to train as a Ruby developer in EPAM?
I have a story about it. A couple of years ago, no one knew about Ruby practice at EPAM. The company gave the impression of working exclusively with Enterprise technologies and having no place for Ruby. However, it is not entirely true. Our practice started with several people, and now there are about forty of us.
As the team grew, we decided to open courses to share our experience with others. We created the Rubyl’nik community and launched the first iteration of a four-month community-based course. The second iteration took place online this year. The training focused on practical aspects and teamwork. During lectures, I didn’t just share a screen with a presentation; I wrote code for the project in real-time while answering questions.
In the last six weeks of the course, we divided students into teams, and each attempted to deliver the project. It is a crucial stage of learning because modern development is all about teamwork. At some point, I stepped back a little and didn’t even check on anyone. I could see that the teammates communicated with each other, scheduled tasks, and kept track of their progress. All I had to do was watch the process becoming more autonomous and fluid.
Why don't people finish their studies?
- They stop doing homework. The main reason is lack of time. There is nothing we can do about it. We keep a quick pace and cannot slow down if one or two people lag behind. I won’t deny it's pretty tough: four months is a very short period. Not everyone can handle it.
- They have no idea how to work in a team and have no desire to learn. Once again, I’d like to emphasize that modern development is a team effort. One person cannot know everything: someone excels in one area while another excels in another; they share their expertise, discuss tasks, and collaborate. That is teamwork. And that’s why empathy is a valuable skill nowadays. Finding a talented developer who understands how to communicate with people is difficult.
Where to get your first work experience?
If you are new to the profession and lack experience, I would offer the following option. Any project uses libraries, usually open-source. I encourage you to open library repositories, try to understand how they work, and improve them. You’ll gain real experience in developing this way.
And believe me, having open-source contribution on your resume will make a stronger impression than any course. It indicates that:
- you showed initiative
- figured out how the library works (so you will understand workings of the project)
- made changes (so you can analyze and find flaws)
- other developers of the library accepted the changes (so you communicated and teamed up with them),
- most likely, those engineers came from other countries (so you have fluent spoken English)
- your changes are used around the world.
That is one of the ways to get solid first working experience. You should carefully consider which library to choose, what to change and how. But the result will pay off.
Tips for novice Ruby developers:
- Learn the history of the industry, your area, and your language. A good developer knows how to use a tool, why it appeared, what tasks it solves, and why there is a need to solve these problems.
- Communicate with other developers. Communication is the most active learning process. Find an appealing community, ask questions, share experiences, and learn from each other.
- Develop and expand your network of contacts. Attend Ruby meetups and conferences if you haven't already. You may always find dedicated people there, make new acquaintances, gain practical insights, and boost your motivation.