My Internship Journey
Over the past 7 months (Jan — July 2021), I had the opportunity to intern at GovTech’s Sensors and Internet of Things (SIOT) Division with the SmartGym team. It was an invaluable experience for me, and I would love to share more about my work during this period!
What is SmartGym?
You may be wondering: What is SmartGym?
Well, our team utilizes in-house sensors to track and record workout data from the various machines in a gym, after which users will be able to monitor their progress from any of our Kiosks located at the gyms.
SmartGym aims to be every citizen’s #1 Fitness Lifestyle Companion and we hope that through this, individuals will be more motivated to take ownership of their fitness journey.
For more info about what we do and to meet our awesome team click here — SmartGym Team
What did I work on?
In my role as a front-end developer, my primary job scope includes testing and implementing new features for the SmartGym application as well as improving the user experience. Luckily for me, I had the opportunity to work with a talented UI/UX designer intern, Kianne, to help come up with a new and improved Version 2 design for our app. Here are some of the things that I worked on:
Flutter
We used the Flutter framework for app development. It is a relatively new mobile UI framework conceived in 2017 and it uses Dart language. Not only is it used for both Android and iOS devices, it also allows for cross-platform development (mobile, tablet, and desktop) which makes it incredibly versatile.
I will briefly describe the data flow of the app and its architecture, so that you get a general idea of how things work here.
Firstly, data flow. On the console side, workout data needs to be reflected ‘live’ on-screen for users to see what they have done or are doing. To achieve that, the app subscribes to a socketIO channel to receive an update message whenever there is a change in the workout data. Upon receiving this update message, the app will then fetch the latest workout data from mongoDB via openApi to be displayed on-screen. Here’s a diagram for visual learners!
Next, let’s talk about architecture. The app is made up of 4 main layers (from lowest to highest):
- API
- Repository
- BLoC
- Widgets
Here, we use a state management tool called Business Logic Component (BLoC) architecture. To put it simply, there are two components: States and Events. States are the UI component and are basically what the user sees. Events are interactions (usually done by the user) that trigger the change in states. It could be pressing a button or when a predetermined condition is met, which causes the trigger. So, what the BLoC does is interpret the events (actions) and return the respective state (UI).
Main Hurdle
Before my internship, I didn’t have much coding background and I must admit that the learning curve was pretty steep at the beginning. It took me some time to get comfortable with what I was doing. And just when I thought I got the hang of it… runs code
… I guess I didn’t. 🤦🏻♂️
Thankfully, after months of consistent practice, guidance, and support from my team, I am proud to say that I managed to get over this hurdle. Cheers!
Takeaway
Looking back, I felt that my internship experience was a very fulfilling one! I was able to develop my skill set as a developer, picking up essential software engineering practices such as documentation and Git for version control. Besides technical skills, I also learnt critical project management skills such as planning, forecasting, and the Agile methodology. At the same time, I acquired vital soft skills such as leadership and interpersonal communication which would be highly beneficial for me in the long run. This level of holistic development is something I feel that not many interns can get to experience, and it made me appreciate my entire internship experience even more!
Of course, not forgetting the amazing team that I worked with! Despite the tightening of COVID-19 restrictions mid-way through my internship, we still managed to work together efficiently as a team whilst having fun and lots of friendly banter in the process. A special shoutout to my buddy, Kelvin Ang, for his patience and guidance throughout my time there. And to my reporting officer, Chin Hiong, for being such a nurturing and open-minded mentor.
Conclusion
For anyone considering an internship with GovTech, and want to be part of something challenging yet rewarding, I’d say go for it! I’ve learned so much during my time working with the SmartGym team and I’m sure you will too!
Find more about GovTech’s technical products and solutions on Singapore Government Developer Portal.