Interns, trainees, or apprentices are around the professional world for a long time. In the past, if you wanted to become a blacksmith, you would have needed to find someone that has this skill, someone who was willing to spend time and teach you, and you would have put in some “free” work so it’s worth it for both parties. An internship program was (is) a win-win situation in theory and just by looking at the definition, you won’t see downsides to doing this.
In practice and our current social and professional ecosystem, things aren’t that black and white. People that join as interns end up doing the worse tasks in a company, they do not learn a lot of things and of course, they are motivated to go to a few more than 1, just to look good on the CV, regardless of the industry. So the win-win is not true anymore, and to be honest, a lot of companies are doing this because they “need” to and capitalize on the PR part.
I’ve talked to a lot of people from different age groups and with different professional backgrounds (or none for that matter) that joined internship programs. All of them had more or less the same feedback: I learned to do this skill, but I only did it for 40% of my time, all the other time I spent there was on doing chores, bringing coffees, ordering lunch, or supplies and others.
In essence, this is not entirely bad, but at the end of the day, the reason you as a manager approve these programs is to get fresh blood into the system, have people that are eager to learn and work, people that you form and shape the way your organization needs it and of course at a considerable discount.
Why did I decide to do an intership program?
At Everymatrix, in the front-end area, I can state that until this year, we did not have an organized approach for internships, we did this from time to time in specific teams where the opportunity resided.
This year, we decided to make an official program for internships and I’ve set up a process on how to select participants, how to train them, where to engage in our flows and day to day business, and review their work, transparently, so they fully understand what they need to do next. Our end goal was to kickstart this project and also teach the selected people an actual skill but also focus on the mentors and develop their skills in this direction.
I am not going to say that this approach is the best, or this is the golden ticket to getting smart + cheap people. No, it’s something that, in our culture worked way better than expected. I know for a fact, that there are managers in extremely big companies that do not have the luxury of defining these processes from scratch and end up with something that may not fit their needs.
Defining the scope and target of the internship program
So, what do we want to achieve from it?
A simple question will result in a simple answer, in theory. Not in this case for us, as we did not have extensive experience in doing this type of a program on a large scale, we did not have predefined positions as “prizes” for those who performed well in this program, and of course, we did not know how to use these people and teach them at the same time.
So, I’ve decided to dumb it down a little bit, and go with the approach of we do not want you to do anything from our day to day business, just build a POC application (which is a real POC app, not something we market as a POC) and we will teach you how to from scratch… in 3 months.
The defined goal of the internship was for the selected people to learn the basics of how the internet works from the development point of view and learn a skill-specific for their desired position.
Chosing cadidates for the internship program
With the scope and target defined and agreed upon, we were missing 2 things: the implementation plan (which I will get to later in this article) and actual people. We decided to open 5 internship positions for the following roles:
- Product Owner intern
- DevOps intern
- Front End Developer intern
- Back End Developer intern
- QA intern
As you can see, we tried to build a small agile team with roles across that could develop from scratch a POC application. On top of this, we also took into consideration that maybe some of the people will not have experience at all when working in a team, so this will be something also what they can learn and get accommodate with.
In terms of recruitment, we had multiple options on the table and I’ve tried, based on all the factors present at that time, to understand which could be the best. Below you will find all the methods that I’ve analyzed:
- Homework approach recruitment for interns: From a pool of people, give them something simple to work at home and see if they can do anything on their own. Based on what they do, then select people and grant them the internship position.
This brings a larger pool of candidates and can work if you want to recruit somebody that has some sorts of raw skills but, this eliminates the personal factors because you do not actual meet all of them. This approach can work in full remote companies or where chemistry/team culture is not that important (for example: full remote companies, project based companies);
- HR interview -> Homework: The manager will select from a pool of candidates (CV based), then HR will hold the interview and each candidate receives a homework. Based on both, a hire decission is made.
This I believe is the most efficient method in terms of timed consumed. The responsability of filtering the candidates falls under the manager that can make a tech assestment based on the CV plus the homework and also HR has a very valid input on the personality of the candidate and if he/she fits the company culture.
- Manager interview -> Hire: Manager filters all CVs received, then he schedule a 1 on 1 interview with the candidate and makes his decission solely without any homework.
This is one of the most time consuming methods for the hiring manager, but it’s one that could bring the most quality to the team (regardless if it’s done for interns or not). The hiring manager assests the skills of the candidate in the interview and also vets his possible chemistry within the existing team.
In this case, for interns, there is no homework, as in theory they have no skills for the position you are selecting them.
For me, I’ve opted for the 3rd option presented above. Why you may ask?
Well, it’s fairly simple. I was not interested in any present tech skills (like writing CSS/HTML/JS/docker and so on) but was looking for general knowledge like how does a website work, what is mobile-first and if it’s important, why QA is important, and so on. Yes, it was extremely time-consuming but by doing this I was able to handpick all the interns and also found ones that had some good tech knowledge.
I truly do believe that not always tech skills are the most important. Talking about interns, I think tech skills can be irrelevant because you want people that are willing to learn, are motivated to go the extra mile, and try to learn as much as possible in 3 months.
Defining the learning path of each intern
This I believe is the easiest task to do, as a manager, when setting up an internship program. Knowing what those people are meant to learn, having experience by doing it almost on a daily basis will enable you to select specifically what they need to do. Boxing that in 3 month period is the tricky part.
I developed training plans for most of them, and some of my colleagues did for the intern they were responsible for (yeah, of course, I did not do anything by myself). I’ve decided that they will be presented with the POC application from the start but they will NOT be guided along the way telling them that learning this will enable you to do that. All the interns were kept in the “shadow” with purpose.
As an overall training path I did the following:
- Present the POC application and what part will do each of them;
- Select online courses specifically for their position;
- Weekly discussions with each of them to understand the status;
- Peer programming with a mentor for the POC app;
- Peer programming between them;
- Peer testing between themselves.
Implementation Plan for the internship program
When the people that were selected in the internship program started the actual work they were included in our basic day-to-day flows (stand up, demos, etc) even if they were not working, as mentioned above, on any task from our flow.
I can say that all my teams stuck to the plan I drafted and because we’ve selected people that are motivated enough to learn and do the work mostly independently, it worked.
Everyone started their training plan mentioned above from day one. Besides the selected people implicated from the start in the process, we encouraged interns to seek help for everyone and ask all the questions they have and also we encouraged all the team members to assist and dedicate time from their workday to help out as much as possible.
Needless to say, not everyone was happy with it, but a big chunk of people stepped up and helped the interns when they had questions.
After the online courses, we instructed the interns to start working on the POC app. We were the ones that broke it down into pieces and still, we did not tell them where everything came into place. This is us hoping that these people will understand and have “AHA” moments when everything started working “out of the box”
After 2.5 months we had a working application fully done by our interns.
Conclusion of the internship program
Out of the initial 5 interns, we managed to hire 4 of them, and the 5th we kept for another 3 months as an intern. The ones that we hired, are already doing work from our day to day!
I can say that I am very happy with the overall outcome. We build something cool, it impressed our top management, we taught all of the interns the basic skills, we put them inside a working mechanism and they got the basics not just how to code, or write tasks or test them, but also what it means to work in a team with the good and the bad.
From the team point of view, initially, we were only 4 members implicated, myself and team leaders only. During the 3 months, we also had other people that pitched in but we tried to keep the circle as small as possible so the effect of it would not be widespread (yes, I know, we suggested everyone help but the “rope pulling” was done by a few only).
Personally, I decided to gather feedback from all the interns, once the internship program ended. Not only for what they learned and if their plans for the future have changed, but also how did they feel inside the teams, how did they receive help and how willing were those team members. I can say for a fact, this part paid out perfectly.
This was something that I was closely monitoring because, and this may come as a shock to some of you that know me, I believe the current professional ecosystem is teaching people wrong skills.
I had a lot of developers that worked with me or for me, that did not have the basic knowledge of developing principles, design patterns, etc. They only knew React, or Angular or WordPress, get it?
So, what I tried to prove to myself first and to others secondly, is that training framework developers is wrong from all points of view. We trained people to become developers, we taught them the basic principles of the web and how it works. Right now, all of them, are coding in something different that they learned in the internship program and all in a matter of 2 months.
Being able to end with 4 new team members and also seeing that they are capable of doing the work needed and not getting blocked by the way a variable is defined, is the biggest win out of this internship program.
As a final note, each manager and team lead, should at least once, be a mentor for a person that has no skills but has the drive to learn. I believe this will shape both in a very good direction.