The Java Internship organized by Evozon which I attended started in March. The ad stated that this internship involved creating a web application in 4 weeks. I had not done any web programming until then. That’s why I found it interesting.

Since I had no experience related to web development, I thought that it would be a good idea to experiment in a new field (web programming). And to try to work with new technologies (Spring, JSTL, Hibernate). Prior to the internship, all I knew about web development was that there is a client (the browser), a protocol (HTTP), and a server (the actual machine) that runs a daemon that generates HTML based on the code of a programming language. These 3 elements represented web programming to me.

After 4 weeks I was going to find out the real complexity of this field. And also, the fact that there are so many ways to create a web application.

The First Week of the Java Internship

In the first week, I met the other interns and attended lectures about the concepts, tools, and technologies we were going to work with. We also installed all the necessary tools and did small tests.

Git and version control

Each newly learned thing involved a presentation held by a mentor. And then, a series of exercises to practice the concepts learned. Some of the presentations were about totally new things. Others were about things we already knew but have now deepened in understanding: for example, using Git and version control.

We had exercises related to several Git scenarios that helped us a lot during the next 3 weeks. The main topics that we discussed with the mentors during that week were: Architectural Patterns, Servlets, HTTP, Spring MVC, Spring Core, DBs, WebServices, Git, Scrum/Agile, and a bit of front-end development (HTML, CSS+bootstrap).

MVC & Servlets

What I really liked was that we learned about the evolution of some technologies. We didn’t just learn about the final version that we were going to use in the actual project. For example, before using Spring MVC and layered architecture, we learned about servlets and we implemented directly servlets by expanding HttpServlet. Using this approach, we noticed how difficult it is to create an application in this way and what the purpose of Spring MVC is.

Java Server Pages

Another example is the use of Java Server Pages. Initially, we created views directly by using scriptlets along with HTML for later learning to use the JSTL library.

SCRUM

We also learned about SCRUM methodology in the first week (sprints, team members retrospective, daily scrum, and why we need to assign story points to each task in scrum planning).  All these were going to be used in the next 3 weeks of the actual project development.

Non-technical trainings

Regarding the non-technical part, the first week taught me how to distribute time between college and job. I learned how to avoid tiredness and how to deal with the learning process when there is a lot of information and short time.

After the first week, I discovered how difficult it is to work in a team. And how difficult it is to synchronize multiple tasks through version control. This significantly improved, however, at the next sprints.

The Second Week of the Java Internship

In the second week, we started simulating the creation of a real project (our project was a wine shop). During the first day, we attended our first scrum planning. During the meeting, we defined the tasks and evaluated their complexity using story points (being our first planning, the complexity evaluation was not very accurate. We found this out at the end of the week when some of the tasks were implemented faster than we expected and others were much more complex than we thought).

At the end of each week, on Friday, we presented the progress of development to the “client”. The fact that several colleagues from the company attended that presentation increased the motivation of trying to finish the tasks on time.

The Third Week of the Java Internship

In the third week, the difficulty of tasks increased significantly, but we started being more like a team since we came to know each other better. We started changing more ideas on solving specific problems.

Personally, I had to solve a task I did not correctly understand. Several times I thought I finished the implementation just to find out after discussions with the “product owner” that the functionality was not the required one and that I had to change the code. These things helped me realize the importance of the sprint planning and the discussion of the tasks in depth.

In my opinion, the third week was the most challenging and it helped me learn many new things.

The Final Week of the Java Internship

We had to finish the application in the last week. However, as time was running out, we started finding bugs in previous tasks. From the experience that we achieved during the previous two sprints, we managed to mobilize and finish most of the tasks. The presentation of the application was also very nice. In the end, we had a well-working online wine shop.

What I can say is that at the end of the 4 weeks, I was surprised at how much I learned. I had the opportunity to gain knowledge both on the technical side and non-technical side from mentors and from actual application implementation. One interesting thing is that in just a single month I started to like a field I did not know much about when I started the internship: web programming.

I am also very happy that I met nice and programming-passionate people during the four weeks journey.

If you want to see what internships have their applications open right now, check out this page.

– Florin Bologheanu,
Java Department