Not ruby single
Lead developer Alexander Bugaev is one of the Ruby evangelists at EPAM. He likes difficult tasks, he is ready to work at night, to create at home or at hackathons. Alexander talked about his adventurous path in programming. About the new enterprise-level Ruby on Rails projects that developers need. And also about why there are no universal solutions.
In the village of my grandmother, where I was often "exiled" for the whole summer, it was boring. So I was having fun building spaceships from Lego. Own computer appeared only at the age of 19 as a bonus for admission to the Mechanics and Mathematics Department of BSU in the specialty “Banking”. Prior to this, parents from the principle did not buy any equipment.
At the university, he learned the basics of programming in C ++ and Java - however, only at the level of writing a loop and display. Such tasks did not cause me much interest, so at first I did not plan to leave for programming at all. But the prospect of working on a profile and doing financial miscalculations was not inspiring either: the dress code, tightened nuts - all this seemed dull. One day I accidentally heard about open source projects and Linux systems as alternatives to Windows. The concept greatly interested me, and I began to independently study this area.
I got involved in a gamble - I began to teach Python how to guide Google. He reasoned like this: Python has written a lot of software for Linux, it is used by such a cool corporation, which means there is a source of materials about the language in which you can create your own programs.
I wrote a naive letter to recruiters at the mail address found directly on the main site. It was something from the category: “Hello everyone! I want to see you as a Python programmer. I know something from the language, but I don’t have any experience, I’m ready to work for free and at any time for experience. I was invited to an interview, where they said: "We don’t have Python, but there is Ruby - you will like it." Before that, in other companies I was already offered the positions of a .Net developer, but neither the framework nor the working atmosphere convinced me so much to agree.
At the internship I was given a 500-page bookaccording to Ruby, we set the task and periodically checked how progress was going. A few months later, I, a self-taught trainee, was allowed to join this project: they allowed me to work with simple bugs. Soon I was interviewed by the customer and became a full-fledged developer. The mathematical base and perseverance helped.
This language allows you to concentrate on tasks, not syntax. Open source source projects on RoR are readable and understandable to all the people who own it. Judging by the rubists from the Belarusian community, whom I constantly meet at conferences and hackathons, these are just cosmic people. It’s somehow simpler with them: maybe the syntax, conciseness and dynamics of Ruby is passed on to the engineers themselves at the gene level?
On the first project, I worked for three and a half years. It was a large system based on Ruby, Java, Perl, and Javascript. All processes were systematized, large systems were delivered on "pieces of iron", you will not especially accelerate with creativity. Then, about six months later, I wrote on NodeJS a front-end for console tools for analyzing traffic when working with the Network File System, which EPAM “co-sponsored”. There was also an internal EPAM University project based on the Stanford open learning platform, when I worked mainly with Python, Django and databases. It was followed by a major Python project.
Despite the fact that the next year and a half I wrote only in Python and Node, I actively used Ruby on my projects at home and during the hackathons. I like a real brainstorming when a team not only makes a beautiful presentation in PowerPoint, but creates a product in 24 hours. For example, at the Belarusian stage of the hackathon LG Smart TV managed to develop an interactive application for sports. By the way, to participate in such events it even turned out to put together a small team of rubies, “hackatoners” Crazy Lemurs .
Thanks to participating in such activities, I didn’t forget the language at all, and now I’ve gotten to my finest hour: EPAM recently opened two interesting large projects that require in-depth knowledge of the framework.
Yes. I’m busy at one of them now, and perhaps this is the most interesting initiative on RoR for all 6 years of work in the company. The project involves the development of an internal security system for an American customer. The end users of this product are the largest software companies in the USA. Despite the fact that the client is very serious, the atmosphere on the project is startup. A strong team solves interesting problems, but at the same time there are no clearly developed processes, and this only adds dynamics to your work. You do not just stick shapes or create typical patterns. We receive tasks that no one has solved before, and you need to find a solution on your own, having thought through all the possible consequences and worked through the architecture. In many ways, it resembles the work of Solution Architect. Therefore, we are looking for professionals of level D2 and above. Since the project now uses Ruby, RoR, Lua, Go, Java (Spark, Spring), Docker, AWS and much more, it is advisable to know all these technologies, no matter how fantastic it sounds. Or, if you go down from heaven to earth, have at least a broad picture of them.
The project has a large complex structure, which includes microservices. Contrary to popular stereotypes, much has been written in Ruby. Besides me, there are several leading RoR developers on the Belarusian side, there are 5 in total. On the American side, the 8-person RoR team is even stronger: there is a chief programmer and architect among them, who has patents. Every day you communicate with such "astronauts", and they also listen to your advice! It is fantastic.
Our system has different versions, regions, types of servers and deployments, so we are not engaged in deployment, but a large DevOps-team on the customer side. The project uses a multi-level testing system, starting with the basic one, which we ourselves are engaged in. All this helps to reduce the risks of unforeseen situations during product development. We also have a practice of customer support when we go on duty and fix bugs that customers themselves tell us.
Another new RoR project in EPAM is an embedded banking system for one of the German customers, which in turn offers this product to banks around the world. As far as I know, there is already integration with Arabian and German banks. Major components of this project, such as the dashboard system, are written in RoR. Now this is a monolithic project, which will be divided into several parts, and then synchronize their work. You must admit that it’s not every day that you cut the banking system so that it also works stably. And it's not Ruby at all. Not one single language. If a person wants to develop as a programmer, he must be able to solve non-standard problems in different ways.
Do not believe in universal solutions and fight with “crutches”. I will give an example. We had a project that dealt with scanning for vulnerabilities in Windows machines. The Windows system was written by analogy with Linux, it worked unstably, slowly, and “wiped out” all the memory. It was a classic mistake when people look at similar solutions and try to create something like that. What worked great for Linux, for Windows, started grinding wheels.
He took and rewrote the system over the weekend "on his knees" as a demo version. Then the team began to improve it and gradually brought it to production. We got the expertise, for which the customer was grateful.
I have a passion for new projects, architectural concepts and problem solving using different methods, combining tools. Therefore, in the future I see myself as an architect.
How do people become good engineers? Let us recall all the prerequisites for your example.
In the village of my grandmother, where I was often "exiled" for the whole summer, it was boring. So I was having fun building spaceships from Lego. Own computer appeared only at the age of 19 as a bonus for admission to the Mechanics and Mathematics Department of BSU in the specialty “Banking”. Prior to this, parents from the principle did not buy any equipment.
At the university, he learned the basics of programming in C ++ and Java - however, only at the level of writing a loop and display. Such tasks did not cause me much interest, so at first I did not plan to leave for programming at all. But the prospect of working on a profile and doing financial miscalculations was not inspiring either: the dress code, tightened nuts - all this seemed dull. One day I accidentally heard about open source projects and Linux systems as alternatives to Windows. The concept greatly interested me, and I began to independently study this area.
I got involved in a gamble - I began to teach Python how to guide Google. He reasoned like this: Python has written a lot of software for Linux, it is used by such a cool corporation, which means there is a source of materials about the language in which you can create your own programs.
One day I accidentally heard about open source projects and Linux systems as alternatives to Windows. The concept greatly interested me, and I began to independently study this area.
How did you end up at EPAM?
I wrote a naive letter to recruiters at the mail address found directly on the main site. It was something from the category: “Hello everyone! I want to see you as a Python programmer. I know something from the language, but I don’t have any experience, I’m ready to work for free and at any time for experience. I was invited to an interview, where they said: "We don’t have Python, but there is Ruby - you will like it." Before that, in other companies I was already offered the positions of a .Net developer, but neither the framework nor the working atmosphere convinced me so much to agree.
At the internship I was given a 500-page bookaccording to Ruby, we set the task and periodically checked how progress was going. A few months later, I, a self-taught trainee, was allowed to join this project: they allowed me to work with simple bugs. Soon I was interviewed by the customer and became a full-fledged developer. The mathematical base and perseverance helped.
Why, having a wide selection of programming languages, were you most interested in Ruby?
This language allows you to concentrate on tasks, not syntax. Open source source projects on RoR are readable and understandable to all the people who own it. Judging by the rubists from the Belarusian community, whom I constantly meet at conferences and hackathons, these are just cosmic people. It’s somehow simpler with them: maybe the syntax, conciseness and dynamics of Ruby is passed on to the engineers themselves at the gene level?
Judging by the rubists from the Belarusian community, whom I constantly meet at conferences and hackathons, these are just cosmic people.
For six years in the company from an intern you turned into a leading engineer. What projects have you gained experience on?
On the first project, I worked for three and a half years. It was a large system based on Ruby, Java, Perl, and Javascript. All processes were systematized, large systems were delivered on "pieces of iron", you will not especially accelerate with creativity. Then, about six months later, I wrote on NodeJS a front-end for console tools for analyzing traffic when working with the Network File System, which EPAM “co-sponsored”. There was also an internal EPAM University project based on the Stanford open learning platform, when I worked mainly with Python, Django and databases. It was followed by a major Python project.
Despite the fact that the next year and a half I wrote only in Python and Node, I actively used Ruby on my projects at home and during the hackathons. I like a real brainstorming when a team not only makes a beautiful presentation in PowerPoint, but creates a product in 24 hours. For example, at the Belarusian stage of the hackathon LG Smart TV managed to develop an interactive application for sports. By the way, to participate in such events it even turned out to put together a small team of rubies, “hackatoners” Crazy Lemurs .
I like a real brainstorming when a team not only makes a beautiful presentation in PowerPoint, but creates a product in 24 hours.
Thanks to participating in such activities, I didn’t forget the language at all, and now I’ve gotten to my finest hour: EPAM recently opened two interesting large projects that require in-depth knowledge of the framework.
Are these the projects that now need experienced RoR developers?
Yes. I’m busy at one of them now, and perhaps this is the most interesting initiative on RoR for all 6 years of work in the company. The project involves the development of an internal security system for an American customer. The end users of this product are the largest software companies in the USA. Despite the fact that the client is very serious, the atmosphere on the project is startup. A strong team solves interesting problems, but at the same time there are no clearly developed processes, and this only adds dynamics to your work. You do not just stick shapes or create typical patterns. We receive tasks that no one has solved before, and you need to find a solution on your own, having thought through all the possible consequences and worked through the architecture. In many ways, it resembles the work of Solution Architect. Therefore, we are looking for professionals of level D2 and above. Since the project now uses Ruby, RoR, Lua, Go, Java (Spark, Spring), Docker, AWS and much more, it is advisable to know all these technologies, no matter how fantastic it sounds. Or, if you go down from heaven to earth, have at least a broad picture of them.
Despite the fact that the client is very serious, the atmosphere on the project is startup.
The project has a large complex structure, which includes microservices. Contrary to popular stereotypes, much has been written in Ruby. Besides me, there are several leading RoR developers on the Belarusian side, there are 5 in total. On the American side, the 8-person RoR team is even stronger: there is a chief programmer and architect among them, who has patents. Every day you communicate with such "astronauts", and they also listen to your advice! It is fantastic.
Our system has different versions, regions, types of servers and deployments, so we are not engaged in deployment, but a large DevOps-team on the customer side. The project uses a multi-level testing system, starting with the basic one, which we ourselves are engaged in. All this helps to reduce the risks of unforeseen situations during product development. We also have a practice of customer support when we go on duty and fix bugs that customers themselves tell us.
Another new RoR project in EPAM is an embedded banking system for one of the German customers, which in turn offers this product to banks around the world. As far as I know, there is already integration with Arabian and German banks. Major components of this project, such as the dashboard system, are written in RoR. Now this is a monolithic project, which will be divided into several parts, and then synchronize their work. You must admit that it’s not every day that you cut the banking system so that it also works stably. And it's not Ruby at all. Not one single language. If a person wants to develop as a programmer, he must be able to solve non-standard problems in different ways.
You must admit that it’s not every day that you cut the banking system so that it also works stably.
Is there a rule that you always follow in your work?
Do not believe in universal solutions and fight with “crutches”. I will give an example. We had a project that dealt with scanning for vulnerabilities in Windows machines. The Windows system was written by analogy with Linux, it worked unstably, slowly, and “wiped out” all the memory. It was a classic mistake when people look at similar solutions and try to create something like that. What worked great for Linux, for Windows, started grinding wheels.
Do not believe in universal solutions and fight with “crutches”.
He took and rewrote the system over the weekend "on his knees" as a demo version. Then the team began to improve it and gradually brought it to production. We got the expertise, for which the customer was grateful.
Who do you see yourself in a couple of years?
I have a passion for new projects, architectural concepts and problem solving using different methods, combining tools. Therefore, in the future I see myself as an architect.