A web development internship at Tremend: a summer well spentby Radu Cojocaru
During my final year of studying Computer Science at Politehnica University of Bucharest, a recurring question kept bugging me for quite a while: “Should I consider looking for a job as a junior developer, should I take the summer off or should I take advantage of the fact that I am still a student and go for an internship?” This question triggered another one: “What kind of internship or job should I pursue if I decide to make a step towards one of these two directions?” During my university years, I had very few opportunities to gain web development experience, so choosing the web platforms department at Tremend felt like a sensible choice in furthering my skills.
I had my first shot at web development in the early months of my final year when I decided to take a leap of faith and learn Flask, a micro-framework for Python used in developing web applications. I decided my thesis project would be a web project. After only a few online tutorials, I began to really enjoy this newly discovered field and even managed to create a few small web applications in the process.
At the beginning of my last semester, I visited the annual career fair hosted by my university. In the following days after the event, I started applying to a few companies, but only for positions related to web development. At that time I hadn’t made up my mind about my summer plans, but later I figured the interview process would help me develop my communication skills as well as offer me the chance to interact with people who are accomplished professionals in my area of interest. All the positions I applied for were internship positions. This decision was based on the following thought process: an internship is a perfect opportunity to learn and grow in an environment so different from the one at the university.
Tremend was the first company that reached back to me. We arranged the first interview and I was pretty excited about it, because the opening was for a Python developer. I was rather surprised to find myself quite relaxed during the interview. This was all due to my now fellow colleagues Ingrid and Alex, who made the interview into a productive conversation on my interests and skills. The interview had two stages: an informal part, when I got to find out more about the company and talk a little bit about myself, and a technical part when we discussed about Python and its use. The fact that I had already started using Python for my thesis project proved to be of great aid in answering the technical questions. Of course, I didn’t nail all of them, but with some help from my interviewers, I managed to pull it through the more challenging questions.
After a couple of days, I received the long-awaited phone call — I was invited to the second and final interview! I was a bit more nervous this time, thinking that a second interview would be much more demanding and stressful. But as it turned out, my now fellow colleagues Simona and Mihai made the whole meeting quite relaxed and friendly. Not small were my surprise and excitement when I was told I was accepted for the internship, right at the end of the interview.
The internship experience
In my first couple of weeks as an intern, I had to learn about Django, a web framework for Python which we were going to use in our next projects. I spent most of my time following and implementing all kinds of internet tutorials in order to get familiar with the framework as well as brush up on my general web development skills.
One day, my mentor, Cristian, told me that I had to pair up with another Python intern, Alexandra, to develop an application from scratch.
I was excited because I had never worked on a team project in a professional environment. The complexity of the application we were going to develop struck me, as it involved a lot of technologies and concepts I wasn’t familiar with. To describe it briefly, we had to build a web service capable of managing and monitoring IoT devices.
We had to use Django for the main web service, a framework which by then I was quite familiar with, but also had to get busy learning and using new protocols and technologies I had never heard of before. We used the MQTT protocol to communicate with IoT devices and RabbitMQ for asynchronously processing messages going through the system.
Working in a team also had me polish my git knowledge which at that point was almost an uncharted territory for me.
The greatest challenge we faced in our first project was the requirement to containerize the application using Docker. We struggled for 2 or 3 days before we finally had working versions of our Docker files. It was quite frustrating at times, but the feeling when we finally got it done was so worth it. It was also great using docker-compose for the first time, a development tool which allows anyone to run the application on their machine wasting no time configuring or installing anything. It was amazing to see a fairly complex application with multiple services become so easy to install and run.
I must admit that a big fear I’d had before starting my internship was not having people whom I could ask for help when needed. I am a stubborn guy — I do not like asking for help if I haven’t tested all the possible solutions that my mind can muster. But sometimes this isn’t the most productive approach. As it turns out, my fear was baseless. I struggled many times with my tasks and every time I reached out for help, it was offered to me, with no exceptions. I am far more comfortable asking for help now and I greatly appreciate that people are always so eager to be of assistance.
A summer internship, a summer well spent
I feel like I’ve improved a lot as a developer during my internship and looking back at my earlier self, who had trouble deciding among a job, an internship and a free summer, I can say that in the end, I made the right decision in joining the team as an intern. That indecision is completely gone now as I am more than happy to join the team on a permanent basis.