In my previous article I talked about my second work experience as a Full Stack Software Developer at the University of Waterloo. I had little knowledge in the field and had taken a dive in the world of software development. Although it was difficult, I found I loved software development and decided it was the career path I wanted to follow.
My field of study, mechatronics engineering, is described as the design of computer-controlled electromechanical systems. It brings together the fundamentals of mechanical, electrical and software engineering. I knew that I wanted to pursue software engineering but I also knew I needed more experience. To that note, I went looking for another software related coop and landed at DSpace, Deloitte’s Corporate Innovation Lab as a Software Product Prototyper.
What I Built
At DSpace, the coop cohort was split into 5 pods of 3 coops where each pod worked on a software project leveraging different technologies. Each pod was prototyping a different product, hence the title Software Product Prototyper. My pod worked with machine learning technologies to create an Intrusion Detection System Generative Adversarial Network (IDSGAN) which is just fancy for a machine learning model which disguises network attacks as a normal network request.
There requires a certain level of knowledge to fully understand the implementation of an IDSGAN but to sum it up, we train two machine learning models and make them try to confuse each other. One of the ML models is a Discriminator (which is basically a gatekeeper) and the other is the Generator ML model (which is an artist that disguises malicious attacks).
At first both models are very poor at identifying and disguising attacks but we train both to become very good at their jobs. Eventually the Discriminator will be able to identify all bad attacks and the Generator disguises bad network requests as normal. When they are trained to a sufficient level, we pit the attacker against the IDS and continue to train both models until the attacker can disguise attacks that even the Discriminator can’t identify. When that happens, we have a working IDSGAN.
This coop was another jump in levels as I was introduced to a modern tech stack and was building from “scratch” (mostly). My team and I read through multiple research papers (including the original IDS paper by Ian Goodfellow). We all were very new to this space and spent the first few weeks gaining the necessary knowledge to understand what the heck we were building. Although the learning curve was steep like my previous coop, the difference this time was that I had other coop students to consult and connect with and an industry expert mentor to help and guide us along the way.
The coop program was designed very similarly to a normal development team except on a smaller scale, allowing us to fail fast, fail forward, and fail often. This allowed us to learn at an incredible pace, sped up development progress and get experience iterating on a project based on project stakeholders feedback and our weekly prototype presentations. I levelled up my non-technical skills pretty quickly through the constant presentation, pitching, and feedback.
Aside from the non-technical skills, I learned an INCREDIBLE amount during the term about a broad range of topics. I got to work with new languages and frameworks relating to AI, develop my curious-first thinking through exploratory data analysis, and see/experience the intersection between housing & shipping ML products in web-based applications. I also got my first taste at using git with other teammates and it was one hell of an experience — I found that deleting my branch and re-committing was often easier than working through my git-related errors. It may not have been the most ideal but everything is a learning experience.
Finally, the best thing about the coop program was the people I worked with. For the first time ever, I had the opportunity to work with likeminded individuals who loved what they did and were all (without a doubt) leagues ahead of me in terms of general knowledge and experience. My mentor was a PhD candidate, my coworkers (who later became some of my closest friends) were all software related by degree and had experiences (winning) hackathons and previous software coops. It’s safe to say that they helped lay the foundation of my knowledge today. I’m extremely lucky and fortunate to have met such an amazing group of individuals who helped prep me to become the software engineer I am today.
During my time at DSpace, I learned a few things:
- Software development goes well beyond the implementation — planning & reflection makes up 70% of the process
- It’s really hard to estimate timelines — you never know what problems you will encounter. Hope for the best, plan for the worst, expect something in between
- The people you work with plays a huge impact on your work life & quality of life.
I loved going to work every day and felt like I was a part of something bigger than myself. This experience changed my perspective of a full time job and I knew without a doubt that this was the type of environment and culture I wanted in my work life.
After this experience, I have to say I was a different person. I remember looking back at the end of the term and I couldn’t believe in the amount that I grew as an engineer and as a person. Through the amazing support and organization of the DSpace team and the friends I made, I was able to develop in more ways than one and navigate this pivotal point in my career.
Needless to say, I struggled an incredible amount this term and I wouldn’t have been able to get through it without the patience and support from my supervisor and the help of my friends and previous coop student. I got my first glimpse into what it meant to be to work on a real tech stack and contribute to a larger code-base. I absolutely loved playing the role of a software engineer and saw that this path was indeed the one for me. And I have my supervisor and the previous coop student to thank for taking a leap of faith and hiring me.
I got a real look at what a software engineering team is like, how the operate and communicate, planning & management, iterating & pivoting, and how reflection accelerates growth. I couldn’t be happier with the way things turned out this term and used this experience as a stepping stone to get to the next step in my journey, bringing me all the way to California.
Thanks for reading! The next chapter talks about my “cali or bust” experience.