Almost One Year at Modanisa
How it all started?
It was almost a year ago when I thought I was ready for an industry-level job. 3-4 months were just passed since I have graduated from the software Bootcamp. As some of you may know, while this Bootcamp laid a well-based knowledge inside my head, it was my free time effort that improved my software-related skills. Thankfully with these skills and some references in the industry, I had a chance to have an interview at one of the leading e-commerce websites.
I must say, when Modanisa HR called me for the first time, for a second I thought it was some kind of scam or advertisement. I could not even tell that phone was from their HR. It feels absolutely stupid when I look back at my reaction, but we are all humans and I believe in the Pratfall Effect. Kudos to the lovely HR agent, I had a great talk about the process that was in front of me. After this very informative and assistive talk, I was ready for the steps ahead of me.
After a brief talk with one of the engineers (who was my pair buddy after I got in, and still a great friend), my take-home assignment was sent to me. The assignment was very well documented, and the requirements were solid and simple. At least most of them were because back then I did not know much about testing, continuous integration, continuous delivery, and deployment. It occurs to me that, back then I did not know most of the important pillars of software.
With this huge challenge and numerous unknown topics, I started my improvement beforehand. Even back then, I realized that I have so much to learn. Therefore, this interview was a great opportunity for me, so I give my best for it. The assignment was to create a to-do web application with modern languages and frameworks, such as GO, NodeJS, React, and Vue. I will come back to the GO.
Since I was familiar with the MERN stack environment because of my former personal projects, I decided to go with this tech stack
Some might call this stack Venom (VENM), which is pretty cool.
I do not want to go too deep on the development process of the project in this post. However, you can always check its Github repository from here. All in all, the most challenging parts for me were Deployment and CI/CD. Because, I held no prior experience with dockerizing applications, writing unit and end-to-end tests, clusters. However, I had some idea about them at the end.
- Frontend
- Vue
- ️ Backend
- Express
- NodeJS
- Database
- MongoDB Atlas
- Deployment
- DigitalOcean
- CI/CD
- Travis
Despite having some lacking in some parts, my assignment was good enough for me to qualify for the position. I believe, my eagerness to learn about the lacking topics also played an important role in my interview process as well. So, do not be afraid if you do not know something, be willing to learn about it!
How it went?
Well, at first I needed some time to get used to the system that the tech team adopted. The whole team was consist of multiple domains, that had their own team. Each domain was considered as a separate start-up team, this way members of the team would feel more resident to their team and their work. My first domain was Marketplace, but for a temporary term.
Throughout my time at Modanisa, Marketplace always had the most members. On my first day, I had the chance to participate in a MOB programming session. The first days were rather passive than my future days in Modanisa, but I had insights into topics that I was lacking.
In my first week, I also learned that my actual domain will be Sherlock🕵️. The Search & Listing team, which is responsible for the two most important things in a high-traffic e-commerce website; the search bar and the listing pages. I mean, how cool is that name Sherlock. I thought it was pretty cool when I heard it for the first time. The product was cool too.
By then, I learned that our backend was based on the Go programming language. I had no prior experience with Go, which I still regret. Go felt different at first, but I was not sure whether this difference was good or not for me. Since I and all of the readers of this post are human — at least for now — we all know, things that scare us are the things that we do not know. Thanks to my colleagues' guidance, I embraced Go briefly. Among many pieces of advice, I want to share some of them with you too. Feel free to check them out, If you're new to Go and want to improve on it.
- a tour of go
- gobyexample
- learn-go-with-tests (This one is a wonder for testing as well.)
You could have heard them before, but if you have not given them a try yet, go
do it now!
In time, I felt fluent with Go and its logic. One of the things that helped me most was testing. You have to have a grip on testing if you want to understand the code that you want to write or the code that was already written. After I had some ideas about the testing concept, I have started to understand the projects more and more. I even understood the connection between our services with integration tests. The integration tests were written with Pact (Contract Testing), and thanks to its features, it was easier to understand which service was consumer or provider, which request was valid for a specific endpoint, or what kind of response would an endpoint returns.
Other than that, once we had a card assigned to us, we would read the Acceptance tests of that card. These tests were mostly written by our domain's Product Owners. We would then start writing these tests with automation testing tools. Since our team's developers were working Full Stack, we had three parts to develop and maintain.
It was a little overwhelming to maintain a such number of things sometimes, however, these challenges are the most improving things in our lives. So, seek discomfort.
- Frontend
- Desktop Web
- Mobile Web
- Backend
- Numerous services
- Mobile Application
- Cross-platform Flutter application
- There were times that we needed to handle the legacy IOS and Android code bases as well
In my 11 months in Modanisa — almost a year — I had two great challenges related to programming:
- Developing an entire backend service for products' images
- This was quite exciting for me because it had been 5-6 months since my first day. I know I was ready for it, but as I said before — the unknown seems scary. However, thanks to my buddy's guide, I think I handled the problem at that time quite well. Of course, in time, that service had more and more requirements, but that is the point of what we do, developing. Nonetheless, I could have done a better job in some parts of it. This I know, thanks to our brown bag sessions for feedbacks. All in all, it was quite an experience for me.
- Updating all of the outdated frameworks that were being used in Frontend projects
- I think the most annoying challenge was this since most of the testing frameworks were interdependent, most of the tests were failing at specific steps, such as creating a mock window object and its fields. Still, these updates were needed since most of them provided better features. One example I can give is that tailwindcss' compiled file size reduced significantly, resulting in much faster dev environments as well.
What did I achieve?
In addition to all I have learned in the tech context, I was lucky to meet such colleagues, who guided me in the best way for the beginning of my career. I have learned invaluable things and shaped my path regarding those. Hereby, I want to express my gratitude to all of them, who I will not name, since they do know themselves. Communication plays a huge role in every part of our lives, therefore please do not neglect this aspect. Share and experience together.
In conclusion, all of these experiences and knowledge both technical and soft, led me to where I am now. A place where many opportunities are possible for my future. I had the chance to continue my improvement in software at an academic level here in Poznań, Poland. Thanks to Piece Of Cake's lovely Latte and Rogal, I enjoyed writing this blog about my journey at Modanisa. Hope you enjoyed it, thanks for reading, and have a nice one!