Skills
About
Working for a small IoT(Internet-of-things) startup named Galiot was my first ever professional programming experience, which I started in my junior year of high school. Before being offered the internship, I had a fair amount of non-professional experience. I had worked with multiple programming languages, but what I had been focusing on at the time was front-end development, hence why I was recommended for this position. The company focused on making low-cost, low-energy IoT devices, mainly focused on security cameras for small businesses.
What I did
I was primarily focused on front-end development for the web portal that customers could use to interface with the devices. This portal interacted with an API the company's backend developers were working on. As time progressed, I did end up working here and there on the backend. I also helped manually assemble PCB boards by hand that were then used by our clients.
Challenges we ran into
We initially used a RESTful API built with Python, but in the early stages of testing we found significant issues with speed and scale. These issues warranted a full rewrite in Golang, which also used a GraphQL architecture. This also required a fairly extensive rewrite of the portal, switching from Redux to Apollo client, a GraphQL client library. This decision was extremely beneficial to the API's performance and documentation and made for a much cleaner portal codebase.
What I learned
I learned a great deal from this internship and it set me up to continue to grow with my future projects. I significantly improved my front-end development skillset, from strengthening my existing knowledge, such as using React, to learning many new things such as interacting with RESTful and GraphQL APIs. I was introduced to backend technologies, such as Golang, MongoDB and Redis, which gave me a better understanding of how to build full-stack web-apps. Outside of technical knowledge, I also gained other invaluable skills such as meeting company requirements and clients’ needs, collaborating with other developers to make a product, and communicating technical things to technical and non-technical people.