Boys, so Ruby is dead or not?
Last time, when I speak with developers or companies, I often hear the same story with different words - “we wrote in Ruby, but now we are moving”. On the one hand, nothing surprising. Development is a volatile business, something new always appears, every day you have to spend a lot of brains to remain relevant.
But at the same time, there are certain devotion to technology and even the cult of the instrument. Tell pkhp-shnik that it's time to move to .NET, hear “PHP is great, write half the world on it”, or just get it in the forehead.
What is wrong with Ruby, and where did its explosive popularity go? I talked with several rubies. For example, Maxim Indykov from Staply, whose team moves from Ruby to Go, and with Alexey Kuznetsov from GeekBrains, a company that began with Ruby courses, and has now abandoned them completely.
What is Ruby good for?
Maxim Indykov ( maks_ohs ): A thoughtful syntax in which the code looks as readable as possible. You can write really clear and concise. A huge number of implemented libraries, the connection of which causes no problems.
Pavel Serezhin: The most important advantage of ruby is rails, the best framework. Accurately realized patterns, not that on node.js, cool as you want. The actual writing of the code resembles English.
Alexey Kuznetsov: The language has a lightweight and very concise syntax, well suited for describing DSL and business logic. Low entry threshold, friendly community. A good candidate to learn as a first language.
What's wrong with ruby?
Maxim Indykov: Demanding on resources, the entire history of language development is accompanied by serious optimizations in memory consumption. The reference interpreter implementation (MRI) lacks real multithreading using multiple processor cores (GIL).
Dynamic typing. But it is difficult to attribute to the minuses, because it allows you to speed up the development, albeit with a loss of quality.
Pavel Serezhin: How good ruby is for writing is just as disgusting for reading. To understand what is happening is quite difficult, but God forbid, the author was with the syndrome of a bicycle and did a goof - here at least hang yourself. Sometimes there is a lack of static typing.
Tell me why you chose it?
Alexey Kuznetsov: I switched to Ruby with C ++ about 5 years ago and at that time it was a reasonable choice. I wanted to make products that are closer to end users. PHP didn't have the best reputation. In JS, the ball rules ES5 + JQuery, but the Python syntax did not inspire.
Pavel Serezhin: First of all, because of the rails, it is ideally suited to the area of web development, which I wanted to do. And it's nice to write in a developer-oriented language.
Maxim Indykov: The community was very influential. A huge number of well-written tutorials and best practices. Rails framework, which makes the development of the most understandable from the very start of the project, to deploy. A wealth of approaches and implementations for writing tests: RSpec, MiniTest, and so on.
At that moment, did it seem to you that the future was with him?
Maxim Indykov: Yes, the language is constantly evolving (and now continues to do so). There was a huge amount of vacancies. Against php everything seemed the most logical and correct.
Pavel Serezhin: I never thought that ruby will be in the top, but vice versa. It always seemed that the developers will be quite small, and this will create competition out of the blue. True - this is one of the minuses, from the level of the juna, it is almost impossible to enter except in the capitals.
Why is Ruby all the less needed now?
Pavel Serezhin: Nowadays, more and more often, to create new projects, they simply choose more popular languages and frameworks. Both ruby and rails are a little behind in performance and do not keep up with trends. In rails brought support webpack, which is not very helpful - it is easier to divide into two separate projects.
Alexey Kuznetsov: Node.js actively cannibalizes the niche of web applications, and from all kinds of utilities Go is pressing.
Maxim Indykov: I think it was influenced by the constant complication of tasks. The solution requires either constant capacity building, and increasing use of resources, or trying not to rest on the ceiling, architectural tricks.
Ruby was created as such a PL, which is liked by developers, not business. Do you think his current unpopularity is an indication that such a strategy does not work?
Alexey Kuznetsov: It seems to me that the situation is the opposite. The rest of the languages were brought up to the level at which it became pleasant for developers to work with them (destructuring in ES6, streaming in Java8, nulllabability in Kotlin and Swift, competition model in Go).
Maxim Indykov: Business wants to save money - server resources. When a technology appears capable of keeping the load on orders of magnitude higher, few people will refuse to save.
When this technology is strictly typed, which is a plus for reliability, this is another stone in the Ruby garden.
It feels that in the Russian Federation this situation: there was and is php development. Then came the local popularity of ruby, which was hailed as a php killer, but often there were not enough other arguments for business, besides, “Well, it's really convenient to write to Ruby”. All scared lack of specialists. With the advent of elixir and go, the arguments are much more understandable.
Do you need to leave Ruby?
Alexey Kuznetsov: I don’t think I need to run with Ruby, but it’s worth looking at alternatives.
Maxim Indykov: The entire market is migrating. Large companies are announcing the use of Go. But we are talking about migration in certain areas of tasks. The knowledge of new popular technologies just need to have.
Pavel Serezhin: Now js is much more popular and rather inconvenient to be sprayed on two languages of different syntax. Historically, I have a bigger soul for React, so I think to leave the full stack for the front.
Will he become one of the completely unclaimed languages?
Maxim Indykov: No, for quickly writing prototypes and MVP, where simplicity of implementation is required, it has no equal. There is an open field of projects that need to be implemented quickly and efficiently. The moment when optimization is needed may not come, but as you know, premature optimization is evil.
Pavel Serezhin: I do not think so. For Ruby, there will be a certain reputation as a slightly unpopular language, a niche with its own community.
Alexey Kuznetsov: This is still far away. There are many situations when it is not so important what the project is written on. And a lot of developers ready to build MVP over the weekend.
And having a trained team of rubists can successfully develop a product for years (GitHub and GitLab are both written in RoR).
There are millions of lines of code written in Ruby that someone needs to maintain.
But the number of new projects will only decrease with time. I think about five years old language still has.
What could help Ruby stay popular?
Maxim Indykov: Greater flexibility of language developers. Implementation of improvements to work with multithreading.
Pavel Serezhin: Improving the performance of the language itself and rails. And put the corporation with a lot of money for support.
Alexey Kuznetsov: Ruby has not turned into a pumpkin. Just appeared other carriages. Included with some are jet engines, others shine more.
I think the optional static typing (and the tuling that can be made on top of it) could help.
Which of the most popular YAP now best suited rubistu?
Maxim Indykov: Rather, it depends on the tasks, but most often the answer to this question is: elixir. A language created by people from the ruby / rails community.
Alexey Kuznetsov: In general, the division into developers by programming languages is not close to me. For software developer, it should not be a problem to master a new stack at a sufficient level in 2-4 weeks.
And so I would look in the direction of Go / JS / Swift, depending on the tasks on which the developer plans to focus. There are Elixir and Clojure, but they are not mainstream.
Pavel Serezhin: Almost every self-respecting rubist goes to Golang. So the answer is obvious.