Reflections on My First Startup Internship as a Freshman Software Engineer

A multipart series where I reflect on my university opportunities- Freshman Winter @ MatcHub, Singapore

Rui Yi Gan
6 min readOct 17, 2024

Author’s Note: About a week ago, during a conversation with my mentor from my current internship at the Government Technology Agency (GovTech), I was inspired to reflect on my various internship experiences. I believe this reflection could be valuable in helping me clarify what I want for my future and serve as a great way to document what I’ve learned from each experience.

And so begins this multipart series! I hope to go beyond just sharing my internship experiences and dive into other university and pre-university experiences as well.

Trekking at Henderson Waves as a company

Context

I joined MatcHub during the winter of my first year as a Computer Science undergraduate at the National University of Singapore. I was quite fortunate to have a great high school senior who had started her own tech startup a few years earlier. She had reached out to me before university, asking if I would help out at her startup. At that time, however, I was busy selling and building greenhouses (a story for another day!), so I didn’t have the bandwidth to assist her.

But when I officially began my journey as a Computer Science student, I naturally reached out to her, keen to gain experience as a software developer — a likely career path given my degree. I offered to do an unpaid apprenticeship for the winter, as I didn’t yet have any valuable software skills aside from a half-completed React course I found online. Thankfully, she was kind enough to let me shadow other developers, and that’s how I got my first taste of software engineering.

How was the Journey?

The first month

My month-long apprenticeship at MatcHub was probably one of the most stressful internships I’ve had. Although it was technically an apprenticeship, I found myself contributing to the codebase by taking on small frontend features. I still remember staring at the frontend codebase, wondering what on earth a package.json or a Dockerfile was. Back then, I only had tutorial-level knowledge of React.js, so I struggled to understand the various technical terms and jargon.

Fortunately, the other interns were incredibly helpful and talented. They guided me through what I was looking at and taught me how to navigate the codebase. Once I became more familiar with the codebase and the different components working together, I was able to follow the stand-ups better and contribute to new tasks.

This experience gave me a deeper understanding of frontend development. Beyond just becoming more familiar with technical stacks like React.js, Material UI, SCSS, and languages like TypeScript, I learned valuable lessons in good frontend practices. For example, I learned how to properly use the inspect feature for frontend development tasks, such as resizing screens and examining network tabs.

One of my tiny contributions at MatcHub

The next 8 month

After my first month at MatcHub, I became more confident as I gained a better understanding of how web development works. However, since I had only worked on frontend development during that time, I still saw a lot of learning potential, particularly if I could get exposure to backend development.

My senior — the CEO — was kind enough to extend my apprenticeship into a part-time internship. There was also a change in management, and I found myself with a new tech lead and teammates. The new team moved faster, perhaps because there was a clearer direction (or maybe because it was the start of a new year). One of our major tasks was to migrate our codebase to a new one using updated tech stacks like Next.js, NestJS, TypeScript, PostgreSQL, and Tailwind CSS. This decision came after a consensus among the leads that the technical debt of the old codebase was too high, which hindered the ability to push new features. Looking back, this might not have been the best decision, as the priority should perhaps have been to gain more users through marketing rather than focusing on implementing more features. But then again, it’s a classic chicken-and-egg problem: a lack of features can lead to a lack of users, and a lack of users can also make it difficult to justify or prioritize the development of new features.

Since I was working part-time, I initially focused on fixing existing bugs in the codebase and later assisted with the migration process. The team had better practices in place. The standups and sprints were more organized and I got a proper taste of the Agile workflow and learned how to use a Kanban board for managing tickets.

My next challenge came when I was assigned to work on small backend features. I struggled initially but managed to overcome the hurdles much more quickly this time. However, I didn’t go deep into backend development, as I was still juggling full-time schoolwork and mainly stuck to frontend tickets, where I felt more comfortable. This limited my experience to just a taste of backend web development, like creating APIs in NestJS and using ORMs like Prisma to assist with database queries. Much of my backend knowledge at that time was fragmented and only scratched the surface, but these pieces eventually connected as I continued my journey as a software developer.

What did I learned?

Technical side

Since this was my first software engineering internship, the learning curve was steep, and I learned a lot. It provided me with an introduction to what software engineering really is, which I discovered is quite different from computer science — something I only realized a few months into my second year of university. I gained a foundational understanding of web development and the various components required to make it work.

More importantly, I was exposed to essential software engineering practices. For instance, I learned how to use GitHub for managing workflows and version control and the importance of abstraction — from repositories to functions, down to elements like a Button component. This technical knowledge proved invaluable during my next internship, allowing me to work more efficiently and spend less time figuring out what was happening.

Startup culture

Since MatcHub was a startup, it wasn’t very large. The organizational structure was lean, with good practices in place. They closely followed the SCRUM methodology, and key members had clear roles. The company also had a great working culture, with occasional milestone celebrations and team bonding activities. This culture left me somewhat torn. On the one hand, I appreciated the positive environment, but on the other hand, I wondered if a startup should adopt these “later-stage” practices typically seen in successful startups after they have already scaled.

Beyond the technical aspects, I also got a glimpse of how a startup functions. I had the opportunity to sit in on meetings where they discussed marketing strategies and organizational restructuring. It is really cool to see the passion behind the teams and see how they overcome challenges in their way.

This experience gave me valuable exposure to the startup world, something that has stayed with me ever since.

Luck

Once again, I have to bring this up. I am fortunate to have a great senior who was willing to trust me and gave me this opportunity. This internship helped me to figure out what I want and even if it didn’t, it helped to build my portfolio, which opened doors for me later on. So yes luck is an important factor too!

Conclusion

In conclusion, I interned at MatcHub for about eight months, from December 2021 to August 2022, spanning from the winter of my first year to the end of that summer. Looking back, even through the haze of my slightly foggy memory, I can see just how impactful this experience was. It provided me with a solid foundation in software engineering and gave me a clearer idea of what I wanted to pursue next.

One of my colleagues at MatcHub wrote a LinkedIn post a few years ago that captures my experience back then — feel free to check it out here for more insights. After my time at MatcHub, I knew I wanted to delve deeper into backend engineering for my next internship, driven by the desire to expand my skill set beyond the frontend and explore new areas of development. More importantly, this experience also sparked my interest in creating things. I got a taste of what software engineering can offer — the beauty of being able to create products with minimal overhead. All you really need is a laptop and WiFi to bring your ideas to life :)

--

--

Rui Yi Gan
Rui Yi Gan

Written by Rui Yi Gan

I enjoy writing about life, college, and everything under the sky. Computer Science student in Singapore and a big fan of Conan O'Brien and Rick Riordan.