IT Engine Gear top
IT Engine Gear middle
IT Engine Gear bottom
/ Tehnical
by Milan Radeta

Onboarding Trials #2: Internship

An internship is a period of one week, which is sometimes prolonged to two weeks, during which the candidate, now an intern, works on one or multiple sample projects, provided by our mentors. The intern goes through this process to confirm and prove his existing skills and knowledge with hands-on experience, as well as learn new things and best practices taught by their mentors.

This is not to say that the intern is expected to fulfill all the requirements given to him within one week, but some verification and validation of their work should exist. It’s often satisfactory enough to have a working app with a small number of tolerable bugs.

It’s more important that the interns follow the instructions and improvement suggestions properly as well as research potential solutions independently and present them to their mentors. Of course, that doesn’t mean they are not expected to ask for help.

We split the internship into several phases, covered in the following sections: Environment Setup, Project Briefing, Implementation, and Feedback.

 

Environment Setup

Before starting anything on the project itself, the intern should set up their environment. They have the freedom to choose whatever languages, tools, editors, and IDEs they want. During the internship, we don’t necessarily insist on the standardized tools used in our projects, but we do inform our interns that if they use different tools from their mentors, it might take more time for the mentors to help them set up the tools appropriately.

Mentors focus on setting up the interns’ accounts and repository accesses but can help in any setup.

 

Project Briefing

The project usually consists of one or two projects created from scratch. Two projects are usually created by full-stack developers, one for API and the other one for the web/mobile app. We brief the interns about the projects and their following aspects: security, entities, relationships, and functionalities.

Security

When explaining security to the interns we cover how the user is authenticated and what the user is authorized to do, in terms of their possible rights and roles. In case of a new project, the authentication system is usually left to their choice, but we usually suggest popular ones such as JSON Web Token.

Entities and Relationships

Next, we define the entities of the application, along with their fields and purposes. Then we explain the relationships between these entities, whether they are one-to-one, one-to-many, many-to-many and whether those relationships have additional data and are therefore modeled as separate entities.

Functionalities

Finally, we define the functionalities that are already implemented and the functionalities that are to be improved or implemented from scratch. The already implemented functionalities are provided by some public apps and/or APIs, but there are also the ones that employees or mentors have built. In the case of frontend developers, public APIs are often used, but the custom data is retrieved from and kept in files or SQLite databases.

 

Implementation

 

The implementation phase is all about implementing each of the functionalities required in Project Briefing. No unit or integration tests are required during the internship, but they are welcome, if they don’t prevent the intern from finishing the majority of functionalities on time. However, it is expected from the intern to do research and coding, while the mentors are expected to do code reviews and provide feedback, hints, potential solutions, tools, libraries, guides and next steps at the end of each day.

Help from Mentors

The interns are encouraged to ask for help during the day as well, but not before trying out and researching problems and solutions themselves. In the end, the goal is not to let the mentor implement everything and/or give step-by-step detailed instructions, but for the intern to show their knowledge and skills. The mentors are there to help the interns expand their knowledge.

Research and Coding

What we mean by research is the exploration of possible solutions to specific problems, experimenting with each one, analyzing them and choosing the one they see as best fit. Coding is focused on integrating the solution in their app, bearing in mind the readability, structure and performance.

Review and Mentorship

Then, the mentors sit down with their interns and analyze the new code changes as part of review. They give out comments and suggestions and point to some created, overlooked and potential issues. Then they provide explanations of best practices and patterns to be used, links to articles, videos, tutorials and keywords to search for online to fix and improve the code, which the interns can use again in their research.

 

Feedback

Finally, at the end of the internship week, mentors organize a feedback session with the interns, which is very similar to the interview feedback in terms of its purpose and parts. It’s split into evaluating the knowledge of the intern, the difficulty of project implementation, and the next steps.

Knowledge

Knowledge feedback is provided, again, by the intern first. They need to do some self-assessment and provide information on how good they think their coding and engineering skills are, along with their hands-on experience. The same information is then provided by the mentors and the two sides discuss similarities and differences.

Difficulty

Feedback on the difficulty of the project is focused on how clear the instructions and details about the functionalities were to the intern, alongside the steps taken to implement them. It also indicates how good the intern is at improving, refactoring and optimizing the code, debugging and fixing bugs and suggesting the improvements and solutions. Again, the feedback is first retrieved from the intern and later provided by the mentor. This step also helps the mentors refine their approach when providing instructions and specifications.

Next Steps

Finally, based on the previous two steps, mentors and interns can conclude whether the results were satisfactory, unsatisfactory, or maybe something in between.

Unsatisfactory Results

The results are unsatisfactory if most of the app is not implemented and it crashes or breaks. It’s also unsatisfactory if most of the actual development was spent alongside the mentor, which indicates that the candidate cannot work independently. In that case, the employment or prolonged internship is not an option. However, the mentor then provides the intern with learning materials and indicates the points to focus on in the near future. If after a period of minimum 3 months the intern is willing to give it another try, they are more than welcome.

Next Steps

Finally, based on the previous two steps, mentors and interns can conclude whether the results were satisfactory, unsatisfactory, or maybe something in between.

Unsatisfactory Results

The results are unsatisfactory if most of the app is not implemented and it crashes or breaks. It’s also unsatisfactory if most of the actual development was spent alongside the mentor, which indicates that the candidate cannot work independently. In that case, the employment or prolonged internship is not an option. However, the mentor then provides the intern with learning materials and indicates the points to focus on in the near future. If after a period of minimum 3 months the intern is willing to give it another try, they are more than welcome.

Semi-satisfactory Results and Prolonged Internship

If most of the app is generally correct and fairly independent, with few bugs, frequently asked questions about the implementation and several review fixes, it is considered that the intern can follow instructions and doesn’t hesitate to ask when they are stuck. There is some level of independence and that’s why the result is called semi-satisfactory.

In that case, we offer a prolonged internship of another week, which is focused on expanding their skillset and improving their independence in research, adopting new knowledge and adapting to a different technology. Basically, they try to manage out of their comfort zone, focusing more on research, learning and reading documentation. The internship is also prolonged if a completely independent intern completed most of the application, but there wasn’t enough time left in the first week to try something new.

Satisfactory Results and Discussing Employment

When most of the app is done correctly and independently, with a few hints and pointers from the mentors, that result is considered satisfactory. The same is true when after a prolonged internship the candidate managed and figured out a different technology. Then, an employment opportunity arises and is discussed between the intern and the mentor, and later between the intern, HR and CEO.