Internship at mkdev: What it includes and the feedback from 3 of our students
The amount of mkdev code that needs maintaining is constantly growing. In the very beginning, I was the one and only to develop the website, but at some point we realized that it wasn’t really great. The drawbacks of such an approach were clear and could have been described with one simple phrase: “My time and capabilities are not infinite”. So I decided to outsource at least half of the development. Since here on mkdev we do not just teach people but also mentor them, why not develop the website in the same way? This is how our internship program was born.
Mkdev internship program
Every 3-6 months we announce that we’re in need of interns. We usually hire only two people, sometimes even one. If you want to participate, the conditions are fairly simple:
- you need to know the basics of Ruby and can work with it;
- you should have a rough idea about what Ruby on Rails is;
- you should be really passionate about your work and be ready to advance your skills as quick as possible.
We can ignore the fact that you’re not really eligible concerning first two conditions, but you’ll never get the position if you’re not passionate enough.
What would interns do after we hired them and conducted the onboarding? They’d become an important part of the project and its development. We never give toy problems or irrelevant tasks, but introduce them to the project top priorities instead and let them leap into action right away.
At the beginning of the internship, students cannot choose the tasks, but after they’ve completed some of them successfully, they can pick what they want among those we've provided. If they hadn’t had such an option, the whole process would have been totally boring.
We have all kinds of tasks:
- bug fixing;
- developing new features;
- developing the infrastructure;
- creating proof of concepts.
Most of our interns combine a full-time position with the internship at mkdev, so we do not expect you to sweat away from 9 to 5. Usually an intern spends about 10-20 hours on mkdev, working at late nights, weekends or some other time, it doesn’t really matter for us when.
Why should I do an internship at mkdev?
As you may understand, we don’t pay for the internship. So here is a reasonable question: ‘Why should I work here for free?’
There are plenty of reasons why:
mkdev internship is a full-scale work on a real project, which means that you can add it to your CV later. We all know that an empty CV is one of the biggest problems of beginners.
You get mentoring from the mkdev team for free during the whole internship. All interns work in close coordination with one of the co-founders (me, in particular), get a thorough code review and have an opportunity to ask any team member any question, not necessarily connected with mkdev. And as we know, mentorship doesn’t grow on trees.
The internship end goal is for you to get a full-time paid job in some other company. The moment we understand that our intern is ready to work for money, we make him or her search for work. We actively help with the search and use our connections for that. We don’t need permanent slaves.
The main idea of the internship is to improve your skills and CV during those 3-6 months and start working for money as quickly as possible. When our interns leave us, we start looking for new ones.
Our interns’ stories and feedback
Over the last few years we hired a bunch of interns and all of them are now working for salary in some other companies. We asked three of them to share their experiences. Those are their stories.
Before I started programming in Ruby I was a construction engineer and was doing structural modeling and structural calculations. However, I wasn’t actually enjoying all of it and my motivation was slowly dying out.
I started seriously thinking about changing my job in July 2016, I guess. I made up my mind to take up the web design since even at school I had been doing some basic stuff in HTML/CSS. I decided to learn the fundamentals by myself, so I chose the standard way: articles, tutorials, podcasts, YouTube. After several months of familiarizing myself with all the available options, I took an interest in Ruby and thus, found mkdev. In fall I applied for mentorship and studied for three months in total, during which I got a chance to finish two Ruby courses and half of the Ruby + JS one.
During my studies I realized that it wouldn’t be so easy to find a job without real experience. Accidentally I got to know that there was a possibility to try my hand at mkdev, so I sent an application right away. I was doing the infrastructure development, as well as code refactoring and some JS and frontend stuff.
The tasks were becoming more complex which allowed me to get the hang of things, familiarize myself with the code and specifics of real web app development. I got my code thoroughly reviewed almost every day, which gave me a boost to improve my skills and pay more attention to the code.
After two months I started looking for a paid job. There were no results from first 6-8 interviews, but they let me understand what a beginner in development should know. Spring 2017 I got my first job. I was working there for three months, but after a while decided to submit a CV to Evrone. The interview there was the toughest I’ve ever faced, but also the most interesting one. As a result I was employed as a Ruby developer and have been working there for almost a year since then.
While I was studying at mkdev, I couldn’t wait to put my skills into practice. The thing was that I never worked with someone else’s code before, so I was rather reluctant to work for money. I was also worried about how to communicate with other developers. Moreover, there are few projects which are ready to take an amateur Junior developer under the wing and put their hearts in his or her training. So I was saying such ifs and buts as “What if I have no decent skill yet?” or “Maybe I need to study more?”
Most of the beginners face the same issues, I guess. Thus I was procrastinating and playing around with Ruby on Rails. But all my worries were set aside when I found out about mkdev internship. This option was perfect for me! And that’s why:
- They mentor you and do code reviews.
- This is a real working project with tons of best practices that may be interesting to delve into.
- It’s teamwork and communication with other developers.
- No tight schedule. You perform your tasks when it’s convenient for you, so it’s as easy as pie to combine it with other activities.
- No financial responsibility :) You work together with a team to mutual benefit as long as you need it.
During the internship I was doing lots of different stuff. I was making changes to the business logic and even tried to rewrite the JS-slider (yep, this horrible mess was partly my fault.) I was also writing a bunch of tests, fixing the bugs, fixing the fixed bugs and refactoring. All of that might be not the most exciting things ever, but they are crucial for a future successful career of a developer. And I finally came to grips with Git and GitFlow. More than that, I was also taught how to put the task cards on the Scrum board, which seems to be an essential skill for my future manager :) This is basically what you’re going to get money for.
After a while, when I started working full-time, all the knowledge I got during the internship (from choosing a Gem to submitting a pull request) helped me a lot. But what counts more is the experience I got working on a commercial project and the realization that, even if I’m not the best programmer yet and have a lot to learn, I can be useful for the team.
When I finished learning with a mentor, I started looking for a job. Straight after that I came across an announcement that mkdev was looking for interns. I made up my mind without thinking twice. I would be doing an internship and looking for a Ruby developer position at the same time.
Let me talk about the reasons why I started the internship in the first place. The first was the overbalance between vacant positions on the market for those who had some commercial experience and those who didn’t. The second was the fact that at that time I had a job which didn’t pay well, but for many reasons, I didn’t want to leave it until my contract ends.
So what is the difference between the internship and studies with a mentor? When you have a mentor, you have a personal study plan and all your questions are answered. When you’re an intern, you work on a real project, which develops constantly to get better for the customers. The main aim of the internship is to let those who cannot find a job yet to program in Ruby. You can do some internship stuff at any time of the day, but on a daily basis, as there are not so many interns working for mkdev at the same time and you are entrusted with several responsibilities.
In short, this is what I was doing during my internship:
- lots of bug fixing;
- enhancement of the old system and adding some new functions (I even wrote about that);
- web app optimization;
- web app refactoring (including moving to vue.js, Trailblazer cells).
Besides that, I sometimes came across something that needed improvement or correcting, so some of my own ideas were put into action too.
Well, most of the tasks were rather monotonous, I guess. But mkdev is not some huge service with a bunch of models and controllers. I’m saying that because not so long ago Kirill Shirinkin wrote an article 5 ways to make your work more fun, where he was talking about how to perform mundane boring tasks. Having read that, I’ve changed my attitude to the tasks that might seem rather simple at first, as I’ve noticed that one can make idiotic mistakes even during the basic bug fixing.
As of today, I’ve found a new job, where I plan to benefit the project we’re working on and become more and more professional.
We are looking for interns!
If you have little experience but a lot of free time and wish to develop fast, you can send a cover letter to firstname.lastname@example.org. If you’re lucky, we’ll take you as an intern. If not, we’ll give you some advice and keep you in mind when we need aid again.