My path from a Rails-developer to a DevOps-engineer

Illustration of a stylized baby climbing stairs, where each step is labeled with values such as "PATIENCE," "HARD WORK," and "CURIOSITY." Illustration of a stylized baby climbing stairs, where each step is labeled with values such as "PATIENCE," "HARD WORK," and "CURIOSITY."

Curiosity, hard work, patience .

These are the three main qualities, which, in my opinion, every good professional in any field should possess. I will speak about how they got me into the world of DevOps, including mkdev.

My problem

Everything started with me improving a Ruby on Rails application. I lacked the experience, and from time to time felt the lack of knowledge, but I had no one to ask, as I was the only developer in my office. Actually, I had been learning Rails, as well as programming on a whole, on my own, using fragments I had found on the Internet, so you can say that I was one of those sufferers who seemed to know something, but didn't know the details, didn't know what business needed and had not a very big apprehension of how this scary rail worked inside and, in fact, didn't know the difference between Rails and Ruby. Being aware of my flaws, I had made a decision to find something that would help me to fix them.

A search for an ideal format of study

Of course, I had started with the courses that were popular at that moment (July 2015), like, for example, Rails for Zombies and others like that. One of the disadvantages of such courses is that they are made exactly for people who see Rails for the first time, and that's why they are of no interest for those who are familiar with the framework even a little. Also, there's nobody to ask questions, so this option had been abandoned right away.

The second promising choice was courses with a real teacher, lectures and home assignments. Having thought about it for a while, I had come to the conclusion that this sucked, too. First of all, you will have to adjust your schedule for this course, because an online-lecture is appointed at a certain time for a whole group of people. Secondly, the speed of learning is set by the lecture program and the group, which there's no way to influence, and I didn't want to be running in place only because somebody didn't get something. Thirdly, it was very expensive. At that moment, such a course cost from 1100 $, and this was a huge amount of money for an 18-year old boy who was only starting to make money.

As you may gave already guessed, mkdev turned out to be a silver bullet, because an idea of a course here is neither here nor there, you pay only for a mentor's time, who can answer any questions (even connected to a job), give the direction for your development, and, if desired, can help you to go through one of the courses available at the website. And this was very convenient for me, because it gave me the opportunity to study when I wanted to, how much I wanted to, and also to solve problems at work.

Given that work with a mentor implies quite a lot communication with him, I decided to find out what kind of person he or she was, because I didn't want to give away my first earned money to a stranger. What if he can't explain anything? So I sat and in a couple of evenings read all that it was on mkdev and in Kirill's personal blog. The conclusion was simple: local mentors have plenty of experience, they can explain everything in detail and easy-to-understand. So I had paid for my first week, and after a few days extended to a month. By the way, this month cost only 170 $ :) Incomparable with any other commercial format of study, isn't it? :)

A month of mentorship

I have half completed two courses during this month. Why? Because I wanted to) At first, I started completing a course for adults, but then I decided to look what there was in the beginners course, perhaps I didn't know some important basics. But there my curiosity played into my hands once more.

One of the tasks was to get onto Vagrant and to write a Vagrantfile, which would start a virtual machine and install on it everything you need to run and create Rails-applications. The task implied that the file should have shell commands, but... I did read in articles on mkdev that there was some magical Chef, which is necessary for configuring servers. Yes, the time of completing the task increased dramatically, I had spent two days instead of two hours, but in return I had gained the experience in two tools instead of one and the rays of approval from the mentor above :)

As a result of this study, I had pulled up my Ruby knowledge, equipped myself with things like, for example, TDD, in a couple of days had found a more paid job and had continued my sole journey while exchanging some words with my mentor from time to time.

The transition from Ruby to DevOps

I was looking at Chef from time to time, but, since there was no place where I could use it (I was not allowed to visit my company's servers), things weren't moving much. I was reading articles on this subject, trying something and I understood that this was much more interesting for me than web-development.

Closer to the end of the winter Kirill started to gather a little team of those who wanted to do something not for money but for the experience. I had time for this, so I had written him and, luckily, I was allowed to make improvements on Chef cookbook for Rails applications, used in mkdev.

As the tasks connected with the cookbook weren't urgent, I could let myself go :) Most of the time I worked with tests, so I had tried all the testing frameworks, added them to Test Kitchen and also moved from virtualbox to libvirt + kvm. And what's more important, doing this I did not only improve my skills but also fill up my portfolio.

Looking for a job as a DevOps engineer

When choosing a company, I decided to do the same thing I did when I was choosing mkdev, and that was to find out what people worked in this company, if there was anything I could learn from them and what corporate culture there was in the company.

After a while, I had stumbled upon an internship in Express42. In a couple of evenings I had gathered enough information about this company to understand that I wanted to work exactly here and with these people. All the staff was making progress as a team, they had a lot of experience, interesting projects and pretty much flexible working hours.

My application was answered in a week, I had passed the first interview and the date of the second – the technical one – was arranged. And there, I have to say, I had a lot of fun...

First of all, the guys failed to handle the flow of people wanting to get the job (it was much greater than expected) and that's why my application had lost somewhere :) But I had started to remind the person, who was interviewing me first, about me, saying that the process was taking too long, and as a result, I had managed to get myself the second interview after the recruitment was closed.

Secondly, this technical interview was so far the most difficult in my life. They had looked through all I had been doing on mkdev, and then purposely drew me to the themes I had practically no understanding of. They were the ones we had been talking about for the next one hour and a half. By the way, engineers quite often have to talk about the things they know little about, in order to make the right decision when designing an infrastructure or fixing problems, so, if you are able to think logically and, what's more important, to get your thoughts across to the people, this will be a big advantage for you.

The internship in Express42

The internship was from the middle of May to the middle of August, and that was quite a thing! The company had a very strong engineering culture, which often pushed you to the self-development. Internal meet-ups, presentations, the constant exchange of experience between the colleagues (and this experience varied a lot), contributions to the open source instead of making your own "hacks". All in all, a wonderful spot.

The format of teaching was similar to the mentorship, but mentors here were everybody for everyone. It means that every staff member could ask any other for help, and he or she would always get it. As for the work pace, we had unconditional freedom, which was a big advantage for me. Nobody made frames for you, nobody said that everything should be done in an hour or that you should look only at this today. No, the program was made the way that you had enough time both for self-studying the material and for looking at something additionally, and all the interns were doing that. By the end of the summer, the head was blowing up from the new knowledge, I hadn't had such an intense study for a long time. We have discussed everything from Chef/Ansible to the orchestration and business processes.

At the end of the internship, I got the job, which was pretty much the same, everything is cool as well, but client's tasks replaced the training ones :)

I think that my story has shown you that being curious, hard working and patient, it is quite possible to become a specialist and to get a job in a good company, even if you are only 19 years old).

P.S And if you give it your all when studying DevOps with the mentor Kirill Shirinkin, then, probably, you will even be able to gain the necessary skills and be the part of our new intern recruiting! The nearest one is in October.