Unlocking experience: The Value of Real Projects


In the world of technology, knowledge is the foundation, but experience is the true teacher. Instead of merely absorbing information, I think the best way to learn is by diving headfirst into challenging, real-world projects. In this article, I will tell you about my journey to explain why working on a real-world project is the key to honing your skills and gaining more valuable experience.
The why
Several months ago, I decided to learn more deeply about NestJS and Domain Driven Design, two critical components of my company’s project. I aimed to not only understand these concepts but also comprehend why my team applied them. Initially, I read some books and official NestJS documentation, but I felt it was tedious and lacked practicality. After a week, I opted for a different approach: starting a new project.
Selecting the right project was essential. Ideas like a to-do list app or basic messaging system didn’t attract me and I could not apply the framework and the approach fully. DDD, in particular, seemed excessive for such straightforward applications. I craved a challenge that would not only put these frameworks to the test but also ignite my enthusiasm.
Then I decided to tackle a significant project, a microservice initiative designed to address a genuine pain point within my team: meal placement. The prospect of creating something that could help my team and showcase my technical skills made me feel so excited and happy.
However, my initial vision faced an obstacle - the absence of APIs for restaurant information. Despite my best efforts, I couldn't find any APIs to provide me with nearby restaurant details, and managing deliveries seemed beyond my current capabilities. One alternative was to collaborate with larger, established platforms to access this data. Nevertheless, I changed my way and still completed an application to help my team give task estimation more effectively in the deep dive meeting.
The outcomes
The application helped my team improve the process of giving a task estimation in deep-dive meetings through a card-based system. While this approach wasn’t groundbreaking, some applications supported it, but the app offered an advantage over the existing solutions that charged monthly fees. By completing the solution, I not only enhanced our team’s efficiency but also expanded my knowledge.
Here’s a summary of the lessons I learned.
Problem-solving
To address our team's challenges, I needed to deconstruct the problem into smaller, manageable pieces. Thanks to my exploration of DDD, I acquired the skills to dissect complex issues, identify domains, and subdomains, and determine the necessary services
Building from scratch
As a novice with limited experience, I needed to reference various sources, including books and my company's projects. However, I avoided direct replication and instead adapted and personalized my knowledge, integrating it into the project. This process enhanced my ability to construct a scalable architecture
New Technologies
This project introduced me to a wide array of unfamiliar technologies and tools. Deployment, in particular, became a significant challenge. Concepts like Docker, GitHub Actions, EC2, ECR, and ECS were entirely new to me. To surmount these challenges, I turned to YouTube tutorials, Udemy courses, and unwavering determination. I didn’t skip anything while learning because I thought there were some important parts I would miss If I skipped it
Product owner mindset
Suddenly, I found myself in the role of the project owner, responsible for its features. However, I realized the importance of prudence – I couldn't pursue an overly ambitious feature set. I needed to strike a balance between what went into the Minimum Viable Product (MVP) and what could be improved later. Moreover, I had to manage the project timeline to ensure it met the requirement of being presented at our tech meeting
The Emotional Journey
What I'll never forget are the highs and lows of this journey. Moments of frustration when I encountered roadblocks, hours spent researching on Google, and reaching out to friends for assistance – all part of the adventure. Yet, the sense of accomplishment when I overcame challenges, and my application worked seamlessly in a production environment, was truly remarkable.
In Conclusion
Building a real-world project is such a challenge, but I think it’s worth. It extends beyond acquiring technical expertise; it's an emotional rollercoaster, a source of inspiration, and a wellspring of motivation. It's about translating theory into tangible solutions, challenging the status quo, and leaving a lasting mark in the tech world. It's more than being a developer; it's about evolving into a problem solver, creator, and innovator. This is where true magic happens.
Subscribe to my newsletter
Read articles from Khang Nguyễn directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Khang Nguyễn
Khang Nguyễn
I'm a dedicated software developer with a strong drive to create valuable solutions that benefit everyone. I believe in crafting software that not only meets user needs but also enhances their lives