My first real software engineering internship was at Galaxy Software Services in Taiwan during the summer of 2021. I was tasked with developing a Personal Financial Audit System for Fubon Bank using the ASP.NET MVC framework. Looking back, this project taught me more about professional software development than any course ever could.
The system was designed to help bank customers track and audit their financial transactions. Think of it as an internal tool for financial advisors to review customer accounts, identify anomalies, and generate audit reports.
This wasn’t a toy project—it was going to be used by actual bank employees with real customer data. That responsibility made everything feel different from school projects.
At the time, ASP.NET MVC felt like a massive framework with a steep learning curve. Model binding, routing, Razor views, Entity Framework—there was a lot to wrap my head around.
Over the course of the internship, I:
I had some C# experience from school, but building a real application was different. I had to learn:
My mentor at Galaxy was patient, but there’s no substitute for diving into documentation and Stack Overflow at midnight when you’re stuck.
This was my first time using Oracle SQL instead of MySQL or SQL Server. The syntax differences were subtle but important. Stored procedures, sequences, and Oracle-specific query optimizations took time to understand.
I learned to appreciate database design during this internship. A well-designed schema makes everything easier. A poorly designed one makes every query painful.
Financial systems have rules that don’t exist in typical CRUD apps:
This taught me that software engineering isn’t just about code—it’s about understanding the domain you’re working in.
The ASP.NET MVC Framework - Once I got over the learning curve, I appreciated how opinionated it was. Convention over configuration meant less decision fatigue and more consistency.
Kendo UI - Despite the documentation challenges, Kendo components saved a ton of time. Building those grids and charts from scratch would have taken weeks.
Unit Testing - Writing tests for each API endpoint seemed tedious at first, but it caught bugs before they hit QA. It also made me write more modular, testable code.
Mentorship - Having a senior developer review my code and explain why certain patterns existed was invaluable. Code reviews weren’t just about catching bugs; they were learning opportunities.
In school, if your code works, you’re done. In production, working code is just the baseline. You also need:
I spent more time reading existing code than writing new code. Understanding how the system worked before adding features was essential. This taught me to write code that others can understand.
I learned to write unit tests for API endpoints. At first, it felt like extra work. Then I refactored something and the tests caught three bugs I would have missed. Sold.
When I didn’t understand a requirement, I had to ask. When I hit a roadblock, I had to communicate it early. When I made a mistake, I had to own it. Professional software development is collaborative, not solitary.
By the end of the internship, I had:
More importantly, I learned what I didn’t know. That list was long, but at least now I knew what to focus on.
Looking back, this internship set the foundation for everything that came after—the IBM role, the Meta internship, and my current grad studies. It taught me:
If you’re a student looking for your first internship, don’t worry too much about having the perfect skillset. What matters more is your ability to learn quickly, ask good questions, and deliver on your commitments.
My first internship wasn’t glamorous—it was a lot of reading docs, debugging, and rewriting code after review. But it was real, and that made all the difference.
Tech Stack: C#, ASP.NET MVC, Oracle SQL, Kendo UI, jQuery
Duration: January 2021 - June 2021
Company: Galaxy Software Services (Taiwan)