Last year we started our Hybris learning and development training at ANT. We invite you to take a look at our journey. This training got us an insight into what software development looks like in an Agile environment. Let’s get a little closer, and start with the technical part of our training.
Technologies we worked with
The idea of this training was to get familiar with Hybris. As a brief overview, Hybris is an eCommerce platform based on Java Spring Framework. The training was divided into three parts. Each part had a well-defined schedule including a buffer as well, in case some topics took longer than expected. Every week felt like a mini SCRUM sprint, we planned the next week according to how much material we went through the previous weeks. The first two parts were dedicated to developing a base knowledge of core Java and Java Spring Framework. This being said, we got familiar with the different stages of software development such as creating a backlog, poker estimation, development, testing, and code reviewing. The third part of the training revolved around Hybris-specific concepts.
Firstly we had a summary of core Java (J2SE) and clean code best practices, concepts we are familiar with from university then we gradually got into advanced Java (JEE) where we covered Java Database Connectivity (JDBC), Servlets, and Session Management. According to the fact that Hybris is Spring-based, we needed to understand how Spring web applications work. The training included an online course that contained all the Spring concepts that are mandatory for Hybris and many more. Along with the course for each chapter, we had detailed documentation that gave us a more in-depth look. Besides the framework itself, we got familiar with many tools that make development much easier.
At the beginning of our journey, we didn't understand why such a thorough preparation was needed, before learning Hybris, but it all became clear when we first opened the code base of the platform. Hybris gives an eCommerce solution, a well-built platform, our job as developers is to build on it. Hybris-specific topics were presented every day followed by small tasks waiting to be done. This was the most abstract part of our training, we were exposed to many new concepts that changed our perspective about the complexity of an eCommerce platform.
One of the best experiences. A very important aspect for those who want to work in a young team is collaboration and communication. Considering the current context of restrictions and opting for remote work, with the necessary tools, we managed, not just to keep in touch with our closest team members, but with our colleagues from different guilds thanks to our weekly knowledge sharing sessions.
As juniors, we often had trouble finding the best solution for some implementations. Our process of learning was encouraged by our mentors with some good lectures, books, websites, and blogs. Teamwork was at a high level. We were given pieces of advice from experienced senior developers. Best practices and knowledge sharing worked hand in hand. Code reviews made us stronger, self-dependent. A good lesson to highlight is the debugging process, and the conclusion is: “It’s not a bug – it’s an undocumented feature.“.
Here at ANT, you are in continuous growth, you are expanding your acquaintances about “technologies” and that is just great.
Finally, we got here. The most amazing and funny experience. This project opened our eyes and introduced us to the programmer's world. Our responsibility was to develop a Spring boot backend for an eCommerce web application. The mentors gave us some guidelines on what the application architecture should look like and how to organize our work. We have used many enterprise design patterns that are also implemented in the Hybris platform. Besides applying the knowledge that we accumulated up to that point, the purpose of the Pet Project was to collaborate and organize our work in such a way that we didn’t have to rely on our mentors. Of course, they gave us great support when needed, but it was our responsibility to develop a fully functioning application that can be later on presented to our clients. Who were they? Well, our beautiful colleagues of course. The whole setup part was synchronized. This allowed us to monitor ourselves and reach a brilliant functional environment by all frontend and backend requirements. Now we know the meaning of: “It works on my machine.”.
To be more efficient, we applied the scrum methodology, through which we kept track of all the tasks and problems that were encountered during the project. That also contributed to the time management part, highlighting the possibility of improving our skills constructively. We took into account the smallest details of the workflow and framed them into stories, which in turn were divided into tasks. If we move on to the set tasks, estimating and assigning them, this part was pretty cool. Over time, we managed to estimate more accurately the working time required for a story, a task. As I said, we brought time management skills to a new level. We can also talk about the following: how complex a project can be. Knowing that all the functionalities were divided into small tasks, that were assigned to us, and which at some point will depend on each other, made me nervous, though in a good way. What do you know about Conflicts?
Let me tell you, once you have to work with others on the same project, you do your work accordingly. Here are 2 possible cases:
1- misunderstanding the task (that means your implementation doesn’t fit)
2- the solution doesn’t fit anymore, because of the already merged implementations. (the previous changes on the project affected the current implementation, and now we have to solve it differently).
In both cases, you have to resolve all the conflicts and find other solutions regarding the task. This is amazing, isn’t it? (I'm kidding) You find yourself in a loop. First, you have to pick a task, then implement a solution (a “best-practice” solution), and test it. Once all the requirements are achieved, you make a pull request and wait for the code review to be done. The flow usually splits here in two possible ways: first and the ideal one → You are the best and the code is “impeccable“ (or maybe the task was quite simple). After the code review, your work is approved and merged into the origin.
The second one → I call it: “Comments are my passion“. You receive more comments than the count of lines your code has (I’m joking). Well, that is the second loop, a smaller one, but more interesting. Here comes the help of the team with some good lectures, where you have to find a needle in a haystack. No worries, we’ve done that many times. The work on the new solution keeps going, and once is tested, everything works as it should. You just update the pull request, and again you’re waiting for approval. Hopefully, no new comments are arriving, “hopefully” because you don’t have that luxury of limiting the number of new comments, the code review was done successfully, the code is approved and merged. Good job! And we move on to the next tasks.
Being at the beginning of the road as a programmer, it takes a while until you develop your codding style. I think this project made it easier for us to adapt and understand what being part of a team feels like. We always had the support of seniors from ANT. Their involvement in our learning process was necessary. The truth is that we have to learn a lot from them, and they are always open to giving us any advice needed. Of course, everything mentioned before was not possible without the guidance of our mentors. I have to say, awesome folks, with plenty of experience in this field, always ready for a new challenge. Thanks to them, we learned how to respond to troubleshooting debugging issues. Here, I would like to emphasize the importance of experience and how many great things it can bring to the table. I can’t say that everything we did was as it’s supposed to be. The clean-codding part wasn’t one of the simple tasks either, as we learned to understand the gaps in the code reviews. Yet we did our best and we are still learning.
In the end, it was a well-structured and challenging training program, led by a great and supportive team. The ANT Team. Considering that we are students, and our work experience is based on college projects only, ANT offered us the opportunity to go with small steps into achieving our goals, to gain experience. The part-time training allowed us to easily fit into the curricula of the faculties, so we managed to successfully excel both: at work and college (conclusion made after the first semester).
“Being a student is easy. Learning requires actual work.”— William Crawford
At ANT, even if we are a small team at the moment, this can be a big advantage. Being a young company, ANT shares with us a great spirit of a family. We have built friendships quickly and have spent quality time with our colleagues. We are glad that here, at ANT, we participate actively, be it projects or not.