The Java Internship organized by Evozon which I attended started in March. The reason why I found it interesting was that I had not done any web programming until then and the ad stated that this internship involved creating a web application in 4 weeks.
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 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) which 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 the fact that there are so many ways to create a web application.
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.
Each newly learned thing involved a presentation held by a mentor and then a series of exercises to practice the concepts learnt. Some of the presentations were about totally new things while 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).
What I really liked was that we learned about the evolution of some technologies and not just 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.
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.
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.
Regarding the non-technical part, the first week taught me how to distribute time between college and job, 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 synchronize multiple tasks through version control. This significantly improved, however, at the next sprints.
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 where we defined the tasks and evaluated their complexity using story points (being our first planning, the complexity evaluation was not very accurate, thing that we found 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.
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.
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 of how much I had to learn, 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.
– Florin Bologheanu,