Internship (Week 1): Learning version control and back-end technologies

During the first week of my internship at Tong Hin, I had the opportunity to meet my colleagues including my new friends, as well as our supervisor Mr. Peter.

Mr. Peter gives us various tasks about the version control tool as it will be used extensively in Tong Hin during internship. I explored Git tutorials while practicing commands in Git Bash. After the tutorials, I worked closely with my friends with Bitbucket and learned how to push/pull requests, create branches and resolve merge conflicts. Then, I explored the Git Flow methodology. I also faced some difficulties especially when following the tutorials which made me feel discouraged when certain tasks didn’t work as intended. I reminded myself that this is part of the learning process. With my colleagues’ support, we discussed the problems and worked through the challenges together.

The next day, to enhance our programming knowledge, Mr. Peter recommended to me Pluralsight courses about back-end technologies. I began learning C# to prepare for my internship, focusing on key .NET features. Through a gradebook project, I practised .NET CLI commands, mathematical operations, arrays, xUnit testing and OOP concepts. I also explored delegates, events and file handling which gave me a solid foundation in C# development. Next day, I learned ASP.NET by building APIs with the “GloboTicket” project, where it applied clean/onion architecture principles to organise components like API, core, and infrastructure layers. I also used some tools like MediatR, AutoMapper, FluentValidation and Swagger. Additionally, I gained experience with JWT-based authentication, Serilog for logging and explored Blazor with NSwag. There are many concepts that were complex but this course broadened my understanding about API design.

Moreover, I dived into Test-Driven Development (TDD) with the “Wired Brain Coffee” project. Although writing tests before code was initially challenging, the red/green/refactor cycle gave me a sense of accomplishment after each passed test. I further improved my testing skills with a course on Mocking. Learning about Test Doubles (Fakes, Mocks, Stubs) and behaviour vs. state testing using Moq and xUnit. I also studied Dapper, the micro ORM I will use in my internship, that focuses on CRUD operations, repository patterns and advanced topics. Finally, I explored PostgreSQL through pgAdmin by practising SQL queries with a DVD rental dataset. I enjoyed learning concepts like CTEs, transactions and grouping operations, even though some topics were challenging.

Conclusion

This week’s focus is on getting familiar with Git for version control and exploring various back-end technologies through Pluralsight courses. The first week is filled with learning opportunities and challenges. I explores a variety of tools and methodologies includes Git, C#, ASP.NET, and PostgreSQL, which provides the foundation for my development work during my internship. Despite the steep learning curve, I found the process extremely valuable and motivates me to continue improving my skills as I continue my software development journey.