After only six weeks spent in HTEC, these five students leave packed-up with positive experiences, newly-acquired skills, and the tips and tricks they picked up from their Project Manager, Milan Pasic, and their delegated mentors – Aleksandar, Dejan, Marko, Milan, Nenad, Nikola, and Strahinja. During the Internship, they worked on a project that has 2 back-end applications communicating with three client apps (two of those are mobile). Although the project was designed to help the students to learn more and ultimately become better engineers, their mentors and other colleagues made sure their experience in HTEC was not only valuable but also enjoyable.
The application which was designed during this year’s Internship consists of 5 applications that communicate with each other. Two of the apps are back-end services that will feed 3 client apps with data. The admin panel was created by Luka Petrović in Agile on the front-end, and Djurdjina Stojiljkovic in .Net Core on the back-end. On the other hand, the accompanying mobile apps were designed to communicate with the back-end via REST API which was developed in Java by Marko Vuckovic, while Aleksandra Vujadinovic worked on the Android and Dusan Dimic on the iOS app. Aside from the development team, the interns had the opportunity to collaborate with the HTEC’s graphic designers and QAs, as they would have on a commercial project.
The methodology used on this project was Scrum, the same as on every commercial project in the company, which gave the interns a chance to learn more about sprints and daily standups. They were presented with all the tools HTEC engineers regularly use – Git for version control, BitBucket as a web repository, and Jira as an issue tracker. Additionally, the HR team organized communication and presentation skills workshops, to make the collaboration even easier.
- iOS: Cocoa Touch Framework, CocoaPods dependency manager, Swift programming language, Build distribution via Fabric.
- Android: Android App Architecture Components (MVVM pattern, LiveData, Data Binding, ViewModel/Lifecycle), Retrofit with RxJava 2, Java 8, Build distribution via Fabric.
- Java: Java 8, Spring Framework, Multi-layer architecture, Security, MVC, MySQL
- .NET: .NET Core 2.0, MySQL, Entity Framework Core
- Front-end: Typescript, Angular, NgRx, RxJS
The Interns: The Birth of the Engineers
More than 60 students applied for this year’s Summer Internship, and after a technical task and two interviews, we chose the final five participants. Although all of them have experienced some part of the development in their respective technologies, they were stunned by how much they still had to learn.
“I learned about Data Binding and RxJava that we don’t learn at the university. The MVVM was just mentioned in theory, but we never actually worked with it. You know in your head what needs to be done, but you cannot know for sure until you actually try it,” said Aleksandra. Djurdjina worked a lot with .NET during her studies, but has just recently heard about .NET Core, “This was the first time that I created an application in Windows but could connect it to the Linux server, which is the main characteristic of .NET Core, along with the Dependency Injection. Aside from these, I had my first contact with JWT Authorization, here in HTEC. This is something we haven’t learned in school, and now I see how easily it can be done.”
Marko had some experience with Java, but not at this level, “Until now, I have never worked with Spring Boot, which automates a lot of things that you would write manually in Spring through XML files. I was not aware that Java applications are executed without servlet containers, i.e., they are embedded in the framework.” Luka worked in the Redux state management in Angular which was new to him, “I learned how to make an application that is complex, sustainable, scalable and can easily be upgraded in the future.” Dusan’s impressions, as he says, were very positive because he was able to notice all of his mistakes in coding, and to fix them and pick up new coding practices, especially Networking - how to fetch data, how to parse it and how to cover all use cases like handling backend errors. “I also got to learn a lot of new things related to UI and how to properly setup project architecture.”
Through different workshops, the interns gained some new skills that could help when working on big commercial projects in IT companies. “We learned about Scrum, project management, communication, presentation skills, etc. People who have good communication skills will gain trust with managers and clients faster, and will make progress in their career more quickly,” stated Marko.
The Mentors: Who Teaches Whom?
Each of this year’s interns had a mentor assigned from the corresponding technology. The mentors were always available to the students and were helping them resolve problems, setup the project and improve their development skills. Each mentor had their own approach with their mentee. Milan Rancic, who worked with Dusan on iOS, wanted for Dusan to be as independent as possible, and saw that his role was to offer “a kind of guidance to help Dusan get out of the hopeless situations when he could not resolve a problem by himself.” Milan insisted on discussing every problem before starting to work on a specific task, and also upon its completion. “The important step was made with the pull request review system where the other iOS colleagues would get involved, thus providing better feedback to the mentee,” said Milan. A similar methodology was applied to Java, where Nikola Stankovic and Strahinja Zivkovic worked with Marko, “We were reviewing the intern’s pull requests and based on that code we had discussions about further development. So, every code review was followed by a conversation.”
The Android team had a bit different view on the situation. A few years back, as a need to develop a more quality and robust applications for Android, Google started working on the components that would speed up the software development process. During the process, they took the code organization (Clean Code) and the application of certain patterns into careful consideration. Last year, all components released over a previous couple of years were officially grouped under the name Android App Architecture Components. Nenad Todorovic who was working with Aleksandra saw this as a professional and personal challenge, “I was concerned if I would be able to go through all of the new components (or at least most of them) with Aleksandra, and if all of that was a bit too much to process in just six weeks. To break the ice, we first started learning about Git and the branch organization. The next step was presenting the demo project with the new component architecture. Aleksandra’s first reaction to it was, This is not the Android development that I know. With a steady pace, and my guidance, and a great overall working atmosphere, we ended up with an app that is ready for use and has the newest tech.”
Dejan Dimcic, who was working with Djurdjina on .NET, wanted her to fit in with the company’s culture and the way the .NET team works. Therefore, Djurdjina was from the beginning included in the technology team meetings. “I was there as well to help her with all the technical requests and issues,” explained Dejan, “Djurdjina was eager to learn, which only made the teamwork and mastering the technology easier. Moreover, my goal was to show her how important teamwork and communication are for the success of a project. I believe I helped her gain the independence she will need in her future work, and that the Internship will serve as a motivation for her further technical development.”
Although the interns were the primary focus during these six weeks, the mentors played a significant part and were, therefore, carefully selected. Besides the great technological knowledge, they needed to have a lot of patience, learn how to best approach their mentees, and to share their knowledge in a way that it will stick with the students. When we spoke to the mentors about their experience, it was clear that during these six weeks they also learned new lessons from their students. Milan states that he improved his personal skills associated with understanding and addressing people who are new to the environment, principles, and values of the company. Strahinja and Nikola realized that this process requires an excellent organization which needs to be carefully followed through so that the practice benefits both the interns and the company. Dejan Dimcic found out that the patience with the intern was the key. “You need to give your interns all the time and space they need to solve the problem and accept their new routines and skills. It is important to be sure and precise because this is where the main responsibility lies when looking to guide the intern onto the right path. I had to be credible because if I doubted my knowledge, my intern would too. This is why I believe I learned a lot from the internship.”
Project Manager: The Glue That Holds Us Together
While the mentors were assigned to the interns to give them guidance in their respective technologies, the responsibility of the project manager was to organize the project well, to create tasks, to assign them properly, and to offer additional guidance when needed. For this year’s Summer Internship that role was entrusted to Milan Pasic.
In HTEC, all the projects work according to the Scrum and have sprints that last for two weeks. During the Internship, because of the tight time schedule, the sprints were done in one week each. At the beginning of each sprint, Milan held a planning meeting with the whole team and moderated a discussion and grooming sessions for every task in the upcoming sprint. “Afterwards, if needed, they had the possibility and the time to discuss every task with their mentors, and we also had daily Scrum meetings where all current tasks were discussed.” They were all working towards the same goal – developing an app which makes the lives of office managers easier and simultaneously learning about the technology and project organization. More importantly, the purpose of the Internship was to educate them and help them understand how knowledge acquired at the university can be applied in real life. “The whole internship was completely focused on their experience and on boosting their learning process. They had a lot of training and education not only on technical issues but also in the software development processes and public speaking. By the end of the internship, we aimed to provide them with enough knowledge, experience, and confidence to be able to work on commercial projects with the help of a mentor.”
In the end, together with the mentors, the project was completed, and Milan had only praises for his fellow colleagues: “The mentors were really open and assertive, and I feel very grateful to have had their help. The open communication and the friendly approach gave the interns total freedom to ask for help.”
Aleksandar Benic: From Intern to Mentor
Students attending the Summer Internship often get an offer to continue working in HTEC after the internship is finalized. Some continue working with their mentors as a part of the Junior Development Program, while others immediately start their work on commercial projects. One of the best examples, fresh from the last year’s internship, is our front-end developer Aleksandar Benic. During his first year in HTEC, Aleksandar was working on a project designed for the Junior Development Program and was later given his first commercial project. In just one year, Aleksandar became a React specialist, and has, together with his HTEC colleague Mario Hadzi Petrovic, already held two successful meetups (in Pirot and Nis), under the name “Angular vs. React”. Both of them were also a part of the Protok podcast, where they shared their expertise on these two technologies.
On top of everything, to celebrate his first work anniversary, Aleksandar was assigned to be one of the mentors for this year's Internship. “New challenge accepted! At the end of the day, this experience made me learn even more. I had to ‘grok’ things, and research them to their initial principles. I had to simplify and systematize my knowledge to present it in a more understandable way, which was interesting and exciting in its own way,” he admitted.
Stefan Rakic: The first class of interns
Four years ago, back when the HTEC office in Nis had just celebrated its first birthday, a group of six students gathered for the first HTEC Summer Internship. One of the interns from this first generation, Stefan Rakic, is currently working as a PHP engineer in HTEC, and gladly recalls his Internship project. “The Internship is a very useful experience, especially for people fresh out of the university. You get to see what working in a company looks like, how everything is organized, how the teams function, etc. You are not able to learn these things through formal education,” he notes. Stefan went into specifics talking about his experience, explaining what skills he was able to learn for the first time here in HTEC, “With the help of my mentor, I learned about REST API standards and some other skills I previously haven’t had a chance to apply but only learned in theory. The Internship teaches you teamwork, methodology, meetings, planning, designing, and helps you gain the basis.”
After the Internship, Stefan left Nis to find work, but after some time he was offered a position back at HTEC. “I worked in two different companies in Belgrade, and when HTEC called me and said they have an open position for a PHP developer, I was happy to come back. I knew how serious their approach to technology was and that this would be a great chance for me to gain new and quality experience working on challenging projects.”
The following year, Stefan’s role changed, and he became a mentor to his own intern, so his psychology needed to change. “You get to be responsible for someone’s career. My mentee still had a dilemma if PHP was the right choice for him when he started the Internship. I understood that my role was to help him realize that he hadn’t made a mistake and that his decision was a wise one. By the end of his internship, he decided to take the offer and stay in HTEC as a PHP developer, as well.”
Andjela Kocic: Success Beyond HTEC
We are proud of all of our interns! Every year some of these bright kids decide to continue their careers outside of HTEC, but they all grow up into amazing engineers with even more amazing ideas. Last year’s interns, Andjela Kocic and Dusan Dimitrijevic, who worked with our embedded team, went on to create their own product that will help people with hearing disabilities.
HearO Glasses are a product meant for people with hearing disabilities and are used to help easier navigation in traffic. They look like regular glasses but are, in fact, used to save lives. They have built-in LED diodes that intuitively, with the help of light, alert the user about the immediate danger they might be in. The glasses react to sounds like a car horn honking from a certain distance, the sound of a train coming closer, the screech of car breaks and similar traffic sounds. Their product already won the Generator Fluo competition as the best student idea and received a nomination for the European Youth Award for Digital Solutions with Social Impact.
Andjela, the co-founder of the startup, remembers the HTEC Internship as an amazing experience. She recalls, “The HTEC Internship helped me gain the knowledge and skills needed for my professional growth. My colleague Dusan, and I were given the task of engineering a robot that plays table tennis. Dusan was working on the firmware, and I was in charge of the hardware part.” Andjela and Dusan created Robi The Robot – a small robot which shot table tennis balls and managed to defeat the HTEC’s current champion in a one-set game. She adds, “We faced many challenges on the project, but overcoming them helped us not only to learn about the technology but also how to function as a team and how big the satisfaction is when you complete a project successfully.” During the internship, Andjela started working on HearO Glasses simultaneously, and drawn by the positive HTEC experience, decided to join forces with Dusan on this project as well.
The Art of Possible: Where Code Comes to Life
After their six weeks in HTEC, this year’s team had an additional week to prepare for the final presentation. Together they presented their work in front of the whole HTEC Nis branch. It was the perfect opportunity to display their project progress and also to show us what they had learned from the presentation skills workshop held by the HR team. Instead of a classic PPT presentation, the team went with the live demo approach and demonstrated the whole flow of the app. More than 70 HTEC employees listened attentively and had many questions for the interns about the app functionality. Although the expectations from the team were very high, everyone admitted that they have done a great job, and managed to achieve the goal and have an app that can be used today and improved in the future. With the final statement and praises from their project manager, the showcase was over and the HTEC Summer Internship 2018 officially concluded.
As the company grows, each year, the Internship gets more ambitious, and the number of applications received gets higher. The basic principle of the first Summer Internship has not changed over the years, but the improvements are noticeable. For the first time, the workshops outside the development scope were added, and although just one mentor was assigned per student, each of them had the additional support. The graphic design and quality assurance were great additions to the whole Internship. Many positive experiences can be taken from this year’s practice and the plans for future improvements are already set in motion. The five students walk out with valuable knowledge that will help them at the start of their careers. For all of them, the priority is to graduate first, and we are looking forward to a possible collaboration with them in the future.