Finding My First Software Development Internship

This blog post was written by Atanu, a Software Development And Entrepreneurship student at Estonian Entrepreneurship University of Applied Sciences.

 

Without any doubt, Estonia has one of the best education systems in the world. There are many reasons to make such a mark. One of them is that the education system has a philosophy of deeply embedding theoretical knowledge with practical real-world applications. 
This approach is particularly evident in the structure of many programs here. Internships aren't just an option, but a mandatory part of your studies. As a student studying software development, I find that this approach greatly helps with practical experience.

A Rapidly Growing Tech Ecosystem

After arriving Estonia, I very quickly noticed the vibrant tech ecosystem here and soon realized that coming here to study software development has been one of the greatest decisions in my life.
From innovative startups to small and medium-sized enterprises, from bustling banks to multinational companies, Estonia is a hub for technological development. These organizations not only contribute significantly to the economy but also enable students like me to enter the rearm of binaries. This fact can be seen in the pioneering homegrown startups.

estonian unicorns

Multitude Meets Modularity

Internship programs in Estonia offer unique flexibility. While summer internships are the normality, many companies offer winter internships also. This diversity in scheduling allows students to gain professional experience year-round. As a result, the opportunities align perfectly with different academic schedules and personal preferences.
The regional development centres of the companies are especially keen on integrating fresh minds from universities. Almost every Estonian university has its own internship portal. Universities facilitate this connection, periodically sending out emails about various internship opportunities, keeping us plugged into the professional world.
There are also student career fairs like Võti Tulevikku where students can meet the companies and discuss the opportunities and their tech stack at great length. I've shared my personal experiences at such an event in a detailed blog post. To delve into those insights, check my blog.

Can I Do It?

Reflecting on my educational journey, I am struck by the depth and breadth of the computer science modules I've been exposed to, in just my first year of study.
In just 2 semesters, I've delved into the array of subjects that form the core of software development. From the Basics of Computer Programming to Object-Oriented Programming, from Algorithms and Data Structures to Databases, and Software Testing to Software Development Processes. Additionally, comprehensive studies in Computers and Computer Networks, Operating Systems, have given me a solid foundation in the field. So, I could not wait to apply that knowledge and build something that would be used by countless people.
My fascination with computers isn't new. It began in high school, where I first dipped my toes into the world of programming. Starting with basic coding in languages C, C++, and Python, I gradually expanded my knowledge into diverse topics like data security. I even built an artificial intelligence bot capable of recognizing handwritten text. So, I was very confident in taking a challenge.
The universities in Estonia doesn't impose restrictions on students wishing to undertake internships and earn academic credit. 

Which Path To Choose?

It's very compelling to realize how diverse, yet interconnected career paths are there in computer science, even starting as an intern. 
However, software development in Frontend or Backend is the most common one. There are a multitude of internship opportunities available in Estonia ranging from Cybersecurity, Cloud Computing, and AI/ML to extreme niches like Network Automation Engineering Intern (wow!). Of course, these positions range heavily in the company's field of work and philosophies. However, the multitude of positions demonstrates the vibrancy of the ecosystem.
All these paths had a special place in my heart. But I chose to go along for Backend Development with Java.
Java is the most widely used programming language by far in Estonia. As a result, most IT programs in the university will teach it. But I would recommend finding the programming language that you like the most at first. Just because something is popular, does not mean you have to learn it.
For example, if you want to be a front-end developer in Python, it's fine to just learn Python. There are plenty of opportunities to be a Django developer in Estonia. This approach holds true for Estonia's whole computing field.
But it's very important to learn the language to its fullest. In Estonia, interns are given assignments, in most cases a small project, usually for a week or two to complete. If they like your project, they will ask you for an interview. In most cases, you will have the option to choose your own language and even framework.
Unfortunately, I have already gone through the pain of understanding what public static void main (string args) means and ended my vendetta with {}. Since Java was the programming language in which I felt most comfortable, I began searching for companies that use Java.

Finding About Kuehne+Nagel School Of IT 

One of the best features of my university is that many of the lectures are given by industry professionals with decades of experience. The world of computer science moves at warp speed. Since they work full-time in IT, they have the best up-to-date knowledge and industry trends.
Many of my lecturers were employees of company called Kuehne+Nagel. So, during the classes, we were suggested doing an internship there. Kuehne+Nagel has one of the highest intern absorptions in Estonia. So, it's a high probability for the interns get a permanent position during or after the program.
So, when I learned that Kuehne+Nagel was accepting applications for internships, I didn't hesitate for a minute and applied for the Backend Developer Internship role.
After a few days, I was invited to a Zoom group meeting. I met Mr Stefano Fiorenza, my future mentor for the first time. He introduced us the internship program at great length. He described the requirements, how the candidates are evaluated and how we can get the best out of the program.

How The Program Is Structured

Kuehne+Nagel has intakes through every 3 months and there are 4 types of internships: Analyst, Backend Software, Backend Software, and DevOps.
The internship program has 3 different stages: Inspire, Empower and Deliver. These stages are created based on the candidate's skill level.  Mr Stefano's sole task is to improve the students' abilities and get them to the point where they are prepared to take on the duty of creating real-world applications. He is here to help the candidates in every step of their journey.

kuehne nagel

Inspire: In this stage, we are still in the beginning stage of exploring the world of IT and starting to learn the basics of how software engineers code in companies. He will introduce what are the best practices and what are the development footsteps. 
He will teach the frameworks in 5 weeks (online). The workshops are on Frontend (React but can be Angular as well) and Backend (Spring Boot, Hibernate). During the workshops, he will teach the basics of the frameworks and how to use those with using logical thinking. Each workshop is self-contained, and it will give a fundamental idea of a topic. He will also give additional learning resources and describe in which context to use them to enhance the knowledge. Students can ask questions freely to clear their doubts. 

Empower: in this stage, the candidate should have basic to intermediate knowledge about the frameworks and be ready to get their hands "dirty" with challenges. 
When applying for the internship, the candidates also have to submit a remote git repository with their best projects. If he likes it, he will ask you for an interview. 
Interested individuals can directly apply to the Empower program without a prerequisite application.
During the interview, he will access the git repository, review it and ask additional questions about your code. The questions are designed to show your foundational knowledge of the framework. For example, he might notice a line in your frontend React code and ask why did you implemented the webhook here. 
The interview is designed to assess the candidate's skill level. If the candidate has gained enough skills to take the challenge, he will be offered a position. However, if a candidate is not selected, upon the request of the candidate, Mr Stefano will provide feedback on which areas to improve. 
The program is fully remote. The program is part-time. A candidate can also choose how much he will contribute every week. As a result, the program is extremely flexible but impactful depending on how much the candidates contribute.
Upon the request of the candidate, Mr Stefano can also send a letter of recommendation to the prospective employer and tell the employer what the candidate did during the internship.
The main line of communication is Slack. GitHub is used for remote code management and Jira is used for the tasks and assignments. There are no daily standups. Once every week or two, depending on the contributions of the candidate, there will be a review. 
During the review, Mr Stefano will take a look at the code and recommend changes. In this way, candidates will learn how to write quality code by owning the code. He might also suggest study material. So, that the candidate will have a better understanding of the industry`s best practices. 

kuehne nagel


Deliver: This is a step that happens during or after the Empower stage.
When any of the software development teams in Tallinn wants a candidate to join as a junior engineer or an intern, they ask Mr Stefano. Usually, candidates are either given a task or invited for an interview. This is how the candidates are absorbed into the company. 
Kuehne+Nagel Tallinn IT Hub has at least 17 software development teams. So, getting absorbed into a team is very likely as the candidate is already quickly familiar with the tech stack and companies' coding styles. This program is compensated.

How I Was Accepted Into The Program

After the meeting, it was very clear to me what I needed to do next.
Although I already had a basic idea of Spring Boot and Hibernate, I thought it would be better to attend his workshops under the Inspire program. Spring Boot is a vast topic, and I would benefit greatly if I could clear out some doubts during the workshops. So, I signed off on the program.
During the first workshop call, he mentioned that if a candidate has full stack knowledge, it's very good for the prospects.  Because the companies are always looking for candidates who can work or to some degree, managing both frontend and backend. 
I also studied his further study materials to broaden my knowledge. You can check out the GitHub.
I started working on a full-stack project which will do basic CRUD operations. The idea was to demonstrate my skills during the interview. I used Spring Boot, React and MySQL to build it as a full stack and hosted it on Azure with a public IP and domain name. I applied to the internship again and after a month or so, I was invited for an interview. 
The interview went very well. I showed the full-stack CRUD project. After a few days of the interview, HR sent me the offer letter.

kuehne nagel

During The Program

The official title of my internship was Backend Software Intern. But I worked a bit on the frontend as well. This has been an exceptional journey. Because I had the opportunity to see how frontend and backend talk with each.
My main language was Java and I used Spring Boot framework for creating applications. I was given tasks as user stories, and I was responsible for implementing those user stories to the best of my abilities. 
I used concepts like Singleton and Microservice architectures in mind to develop the APIs. I not only got the chance to create a multitude of CRUP APIs but also could see the APIs interact and complement the APIs built by my fellow interns. This was fascinating.
I also heavily emphasized testing. Postman became my everyday friend for testing the APIs. I learned how to write unit and integration test cases on the code that I have written. 
For the database, I used MySQL. Most of the SQL was abstracted away by the Spring Boot JPA. However, I had to use some custom SQL or Structured Query Language to implement specific API calls. This was something new for me. 
I also used GitHub for remote repository management, code review and collaboration. I got the chance to use Git to its fullest. 
But what was thought-provoking was that I finally understood how valuable it is to understand the business side of coding. Every user story in the backlog had some business logic behind it and understanding this logic can be the difference between a bad code and a good code. 
Many times, I was not sure what the user stories wanted. So, I asked my mentor for clarification many many times. 
I also learned how to write clean code. I did not put much thought into clean coding. But I soon realized how important it was when I was in the middle of the internship, where I had read many previously written codes.

After The Internship

At the end of the internship, Mr Stefano asked if I would like to extend the internship. There was a high chance of me getting absorbed into the company as well. Because two of my fellow interns have already been offered a full-time position.
But at that point, I had developed a deep fascination for the DevOps/SRE world, and I wanted to dive into it. So, I politely declined the offer.
But without any doubt, the internship has been really helpful for the interviews and offers I got in the upcoming months. 
In my current position as an SRE, I spend a considerable amount of time collaborating with software developers and debugging applications. Our spring boot web apps run on Tomcat. Many times, I need to dive deep into the code and understand what's causing the problems. Which part of the infrastructure is breaking down? As I already have some experience writing the codes in Java, my work has become much easier. I think this is one of the reasons why I was selected for the position. Many companies recognize Kuehne+Nagel and having their name on my CV helps me stand out from the crowd.
My mentor was extremely friendly, and his feedback, encouragement and guidance pushed me to do better every day. Also, he perfectly understood what my skill level was and what to do for further to develop my skills. I felt that he did great work. The tasks perfectly aligned with my skill level. So, I felt that I had been challenged, but not too much that I felt discouraged.


I highly recommend the program to anyone who wishes to be a software engineer. 


I'd like to express my gratitude to my mentor Mr Stefano Fiorenza for his invaluable contributions to this blog post. If you're seeking further information or wish to connect, you can contact him via email at stefano.fiorenza@kuehne-nagel.com or connect with him on LinkedIn.

 

Find out which international degree programmes are available for you in Estonia. 

 

Read more blog posts: