For the 2022 Summer, I was given the opportunity to intern at SmartGym under GovTech’s Sensors and Internet of Things. With this being my first internship in software development, it was a steep learning curve but also one full of many learning opportunities.
A brief overview of my role: it included creating an end-to-end feature for physiotherapists to assign and keep track of workouts done by their patients on the SmartGym platform. In this post, I will be sharing more about the process of creating this feature and the key takeaways I got from this internship.
1. Understanding Users’ Needs
The first step to creating the feature was understanding how the SmartGym system can be a useful tool for physiotherapists as well as their patients.
For example, some key questions to consider before even coming with any ideas included:
- What is the current process of these physical therapy sessions like?
- What are some pain points that the physiotherapist and patients face with the current process?
- How might we alleviate these pain points with the SmartGym platform?
After gathering feedback, we identified the following needs:
- A platform for physiotherapist to manually assign workouts and track these workouts that have been done by their patients.
- Patients need to be able to easily follow the workouts assigned to them without much intervention by anyone else.
After better understanding the problems that physiotherapists and patients face, I moved on to brainstorming of some solutions. Much of the brainstorming was done on pen and paper before refining the better ideas on Figma.
Here were some of the early iterations of the dashboard design for therapists that I proposed.
After generating these ideas and refining them, I moved on to where I spent most of my time, which was the implementation of the new designs. This implementation included the frontend and backend development to support these new features as well as a new schema design to support the workout data.
For the frontend, some of the technologies/languages that I used included:
- React & Typescript (for the web development of the dashboard for therapists to create workouts)
- Flutter & Dart (for the mobile development of the workouts that will be seen by the patients)
For the backend, some of the technologies that were used included:
- FastAPI & Python (for the creation of the APIs that will be used for the web and mobile application)
- MongoDB (to store the new collection of workout data)
As mentioned earlier, with this being my first software development internship, learning the tools mentioned above as well as other necessary skills such as GIT was definitely challenging. However, thanks to the support of my colleagues, it made this entire learning process much smoother.
Here is what the frontend looked like after implementing the Figma designs into code:
As you can tell, some of the screens were really different from the ones made on Figma!
4. Iterative Development
Finally, after the basic implementation of the feature, I entered the iterative development stage. This meant improving the feature through feedback gathering to meet users’ needs better.
Much of the feedback was gathered from the colleagues as well as from the physiotherapist (although there were not enough time to implement some of their suggestions).
Here is one example of the changes that were made:
Checkbox was changed since the old version implied interactivity when the design was actually a static component
Technical constraints (Idea vs Reality)
One of the main takeaways was the concept of technical constraints and finding alternative solutions to the same problem. Having not done any software development prior to this internship, I did not realise the technical constraints that might be present when I was implementing the Figma designs into code. I often ran into trouble at the beginning when I was doing the frontend development because my technical knowledge was lacking and struggled to follow the designs that I had come up with. This required me to improve my technical skills as well as being open-minded to other solutions as long as these solutions solved the same problems.
An Agile mindset
Having learned of terms such as being lean or having an agile mindset before, this has been the first time seeing firsthand and practicing these forms of thinking. The idea of using whatever works best for the current problem was something I really enjoyed while working here.
For example, in the beginning, the idea was to implement the web application with Flutter but after further discussions, we decided to use React instead due to the faster speed of development and the higher amount of support available online (in terms of frameworks and help).
Looking back at the 3 months spent in SmartGym, I am incredibly grateful to everyone in the team for being so supportive and welcoming. The amount of opportunities to contribute to SmartGym as well as opportunities to learn new things (soft and hard skills) is something that I consider myself very fortunate to have.
Special mentions to Chin Hiong, my supervisor, for being so supportive and helpful by giving me constant feedback in terms of my work as well as life in general as well. Shoutout to Kelvin and Xing Jian as well whom I worked closely with throughout my internship journey and got lots of help and advice from.
Author: Marcus Sng
Originally published on Sensors & IoT, GovTech.
For more articles, visit Sensors & IoT, GovTech