A hands-on software engineering internship building real features on a production team, from backend logic to the systems that keep data moving correctly.
During my time at Landis+Gyr, I worked as a software engineering intern on a full-stack development team, contributing to real production code rather than isolated practice projects. I worked within an Agile/Scrum process using Gerrit and Azure DevOps for version control, Postman and Swagger for API testing, and SonarQube for code quality, alongside code reviews and technical documentation practices used across the team. I also had some exposure to the broader system architecture, including microservices and Kafka-based messaging used elsewhere in the platform.
I worked on Landis+Gyr's App Manager, the internal tool for monitoring deployed apps and devices in the field, improving the readability of its Devices Monitoring view (HW version breakdowns, online/offline status) so operational data was easier to parse at a glance. The work spanned React, Bootstrap, and HTML/CSS on the frontend, integrated against backend APIs.
I built a full search-and-filter system for metrology reference codes, spanning the API, database, and frontend layers. On the backend, I worked with a resource-code API controller and repository layer, stored procedures like GetMetrologyReadingTypes and GetMetrologyReadingTypesByName, and models supporting filtering across roughly 13 separate metrology attributes (things like quadrant info, multiplier, unit of measure, time base, and commodity).
The filtering logic had to support both numeric and text-based search, wildcard behavior within a dot-delimited code format, and nullable integer fields so a user didn't have to fill in every filter criterion just to run a search. It's a small-sounding feature with a genuinely fiddly data model underneath it.
This lived inside a larger internal Developer Tools portal covering three related lookup types, Metrology Reading Types, End Device Models, and CIM Codes, each with its own controller, model, and view following an MVC structure (things like CIMcodesController.cs and EndDeviceModelsTabController.cs alongside the resource code repository layer).
The slideshow below walks through what I built and learned during the internship.