Lessons Learned from Co-Op

April 30 2023

I will soon be wrapping up my second co-op term, and have found myself reflecting on the skills I’ve gained and the lessons I’ve learned. My first co-op was at Tradable Bits, a company that is built around helping organisations collect first party data on their fans, with a specific focus on music and sports businesses. My second co-op has been at Tamvoes Health, a startup created with the mission of building a health management platform to provide a central location for patients, their family, and doctors to view and manage their healthcare data. From these experiences, I’ve not only been able to grow my skills as a developer, improving at everything from React to SQL, but I’ve also learned my fair share of lessons beyond these ‘hard’ skills, which is what I’ve written about today.

1. Learn How to Ask Questions

The first key thing that I’ve learned over the course of my co-op journey is the importance of asking questions. When I started my first job at Tradable Bits, one of the things that I worried about was whether I was asking too many questions, particularly about the best way to do something. Of course, they were well intentioned - I didn’t want to waste time doing something one way only to have to redo it some other way, but I also didn’t want to waste my boss’ time. Thankfully, my boss assured me that this wasn’t the case, but I did also realise something important. Namely, instead of simply asking a question, the better course of action is almost always to ask a question alongside potential solutions you’ve thought of to address it. Doing so demonstrates that you’re capable of thinking critically and creatively, and that you’re willing to put in the effort to find solutions to complex problems. After all, it’s important to remember that if you’re working on a certain task or with a particular part of the codebase, you are likely the one who is most well acquainted with why it works the way it does, and thus have the ability to judge whether solutions or feasible or not. All this to say, it’s important to remember that not all of your solutions will be the right ones, and you need to be open to feedback and willing to learn from your mistakes.

2. Use Your Strengths to Your Advantage

Before I ever got into serious web development, I remember being in Grade 7 and playing around with Canva and PicMonkey to make cool thumbnails for my Minecraft Youtube videos. Although my opinion on what looked good at the time may have been a bit questionable, since then I’ve only deepened my appreciation for good design, and nowadays find myself admiring everything from typefaces to product packaging.

Although at times having such an eye for details can be a double edged sword, I’ve found it to be very beneficial in much my work as a developer. Apart from obvious situations where having a design background is helpful, such as when designing my personal website, I have found other benefits as well. I’ll begin with Tamvoes, where working on a small team meant that when a new feature was requested, I was responsible for everything from a wireframe all the way to the final product, which often meant firing up Figma at the start of a project instead of jumping straight into my IDE. And though I sometimes wondered if the time spent in Figma was worth it, being able to consult my boss to ensure that we were on the same page about what a feature should look like before I started to code it allowed us to make better UX decisions, and ended up saving time in the long run.

Yet, this is not to say that an eye for detail is only useful when I am responsible for an entire interface. For example, at Tradable Bits, although there were designers responsible for coming up with the UI for new features, I still found myself being asked by the other developers to catch any small mistakes that they might have made, whether it was using the wrong colour or having icons that were slightly misaligned. And yes, although I recognise that these small inconsistencies will likely be indiscernible by most users, I strongly believe that these are the inconsistencies that lead to poor user experience if they are allowed to stack up over time. In this way, I feel that by using my design strengths, I have left a greater positive impact that I may have otherwise.

3. There’s more than one way to solve a problem

One of the features I worked on at Tradable Bits was the ability for users to create Facebook posts directly from within the platform. Essentially, when you upload a video to Facebook via their API, you get a callback URL to view the post you created. However, when creating a post that contains a video, it naturally takes some time for Facebook to process the video, so if you view the callback link before the video is done processing, you get redirected to the Facebook homepage instead of your own video. When I realised this would be a problem when trying to show a user their post, I really wasn’t sure what to do about it. I thought that maybe I should find a way to check if a redirect occurred when you navigated to the link, and only provide the link to the user once there was no redirect. However, this would have been complicated and there were no tools in the codebase that would allow for such an action. Perplexed, I went to my boss and offered up this issue, to which he said - “Oh, that sounds like you should just add a tooltip that tells people to check back if the link doesn’t work.” It was such an obvious solution, yet it was something that hadn’t even crossed my mind, and in that moment I realised I had been so caught up in the technical, code-related ways to address the problem, that I had failed to think about the other ways that might be a more suitable way to solve it. Ultimately, it taught me that not all problems require complex technical solutions, and that spending some time to find the best way to solve a problem can save you a lot of time and headaches.

Of course, these lessons are far from everything that I’ve been fortunate to learn about during my co-op experience so far. Additionally, I’ve also been able to expand my skills as a developer, and have learned from some amazing people. So, whether you’re someone going into your first co-op, or just curious on what I’ve taken away from the work I’ve done, I hope this has been an insightful read.

Designed and Developed by

Matthew Berger

Made with in Toronto