Table of contents
No headings in the article.
In software development, it’s often said that the best way to learn and grow your skills is to build projects. The more projects you take on—and the more complex they are—the more you’ll learn throughout the process.
A few months ago, I completed an internship that required me to develop a software solution addressing a specific problem for the organization I worked with. From the moment I started planning, I knew exactly what kind of project I wanted to build: it had to solve a real problem and push the boundaries of my existing skills.
At the time, I was primarily a frontend developer and had just completed my first solid React project. But this new challenge required me to step into the world of full-stack development since a database was essential. To pull this off, I had to learn backend development and database management from scratch. Throughout this journey, I gained several technical and personal insights. Here are three of the most valuable lessons I learned:
1. Problem-Solving is the Core of Development
When I set out to create this project, I was determined to solve a real problem. But first, I needed to identify one. Since I had no prior experience in the travel industry (where I interned), finding a tech problem to tackle wasn’t straightforward. I spent time understanding the company’s operations, identifying strengths and weaknesses, and analyzing where optimization was needed.
This process sharpened my problem-solving skills and taught me the value of curiosity. Eventually, I stumbled upon the problem that shaped my project.
The company’s website lacked customer testimonials and social proof—something crucial for an online travel agency to build trust with potential customers. The importance of this gap hit me during a specific incident: a dissatisfied customer walked into the office with complaints. Despite our efforts to reassure him, he repeatedly said, “This is why I don’t trust online companies. You can’t tell which ones are scams.”
That statement was a lightbulb moment. If customers could see genuine reviews from real people, it would build trust and improve the company’s credibility. This insight led me to design a solution addressing the absence of customer reviews—a platform for collecting feedback and displaying testimonials.
This experience reinforced a vital lesson: the most impactful products are those that solve real problems. Whether you’re a developer or a founder, always start by identifying the pain points your solution will address.
2. Planning is Key to Execution
It’s tempting to dive straight into coding when starting a project. However, I quickly realized that planning is a critical stage—one that can determine whether your project succeeds or fails.
This was my first complex application, and I didn’t even know where to start coding. Instead of rushing in, I took the time to carefully plan every aspect of the application: the features, architecture, database schema, page layouts, and how everything would interact. I created diagrams, researched best practices, and iterated on my plans multiple times.
This groundwork made the coding process smoother. With a clear roadmap, I could focus on implementing the plan instead of constantly stopping to rethink the structure. Of course, there were some unexpected challenges during development, but they were manageable because the foundation was solid.
The lesson here is simple: adequate planning saves you from chaos later. Investing time upfront to design your application ensures a more efficient and less stressful development process.
3. You Don’t Know What You Don’t Know
When learning a new technology, one of the biggest challenges is dealing with the unknown. This became painfully clear as I worked on the backend for my project.
I frequently ran into bugs that took hours (sometimes days) to resolve. Many of these issues stemmed from features or quirks of the technologies I was using—details I hadn’t encountered in my initial learning phase. While frustrating, these moments taught me the importance of diving deeper into the tools I use.
For example, debugging a token-related error took me several days of research, only to discover it was caused by a small misstep in how I had configured authentication. Experiences like these showed me the value of gaining a comprehensive understanding of the technologies you work with.
Now, I make it a priority to familiarize myself with the critical details of any tool or framework I plan to use. This habit not only saves time but also reduces the frustration of troubleshooting unexpected problems.
In the end, I built TrustView, a feedback management platform. Businesses like the travel agency I worked with can use TrustView to collect and manage customer reviews, send review requests, and showcase testimonials to build trust. The platform also allows users to browse reviews of other companies.
This project pushed me to improve my skills in programming, backend development, and problem-solving. More importantly, it taught me lessons I’ll carry into every future project:
- Always focus on solving a real problem.
- Take the time to plan thoroughly.
- Embrace the unknown and commit to continuous learning.
Building my first full-stack application was a challenging yet rewarding journey. It confirmed that the best way to grow as a developer is to tackle projects that challenge you to learn, adapt, and innovate.
What do you think about these lessons? I’d love to hear about your experiences with building projects—drop a comment below!