Co-op Reflection I - Deloitte d{} Lab

I have been meaning to write this reflection article out since the last week of my previous coop. But it just got held off for… umm, you know… reasons. However, I have an interview coming up and realized that I need to practice behaviourial questions about my previous coop, so just killing two birds with one stone here by writing this out.

The Position

I worked at an innovation lab funded by Deloitte Canada, called d{} (pronounced d-space) Lab. We were responsible for build prototypes for successful product pitches at Deloitte. At the beginning, to be honest, I was a bit skeptical about my role in the office, since the official job title from Deloitte was “Business Technology Analyst” and I was like “I’m pretty sure I interviewed for a dev job”. Fortunately, that got cleared up by my supervisor on the very first day. Seemed like, as this is the very first time Deloitte is doing this, they don’t actually have a title for our specific position yet in their database.

We were a team of five coops and three full-time supervisors. For the first few weeks, we, the coops, went through a series of 101 projects so that we would get used to some of the technologies that we might need for the actual prototype that we would be building for the term. These included mostly web frameworks like NodeJS, AngalarJS, REST API, etc. I wasn’t too happy with these projects since I really don’t enjoy working with web technologies, Javascript is probably my least favourite language to work with. There were parts that I did enjoy, however, like collaborating with my colleagues on these projects improved my git skills. I was still not that sure about the position due to all the Javascript in the premise, but I was greatly mistaken.

The Product

The timeline for the prototype deadline fitted perfectly for us coops, three months (+ one months for planning, 101 projects, and orientation). As a result, we got to dedicate our entire time on one project. I’m not allowed to discuss the specifics of the project, but I will cover, in general, what we accomplished as a team, as well as what I accomplished as an individual over the term.

We were assigned to develop a prototype for a real time communication architecture for a scalable sensor network in the mining context. I know, a lot of big words in there, but I will try to expand on it a little to give a better idea of what we built. We built a prototype for wearable devices with sensors attached that could monitor their location, vitals and environment and send that information to a central server. That data is accessed through a dashboard by an administrator. The goal was to decrease the number of casualties and injuries in the mines due to explosions, gas leaks, and health-related urgencies. We also built a messaging system to strengthen and simplify the communication between miners and their supervisors.

I was the main developer working on the software that was deployed on the wearable device itself. I also worked on some of the other parts of the stack, like for instance: * The location monitoring system by pair programming with our network engineer * The messaging system stack that was on the wearable * Helping the hardware team debug sensor-related errors * The stack on the screen of the wearable device

The Environment

It was a very close knit environment, we had a small office space and everyone was positioned in a way that they were facing two or more people. We all had rolling chairs, which made it really easy to move away from our own place and go to someone else to either work together or help them solve errors. Our supervisors were also incredibly helpful. They were really friendly and trusting, handing off a lot of the implementation responsibilities to us coops. Honestly, it was the best position that I never asked for. We got to work on a product from the ground up, and managed to help in all stages of the prototyping phase. Getting used to the Agile Development process in such a friendly place was also real nice. We had really regular meetings to discuss our own progress and failures, and it gave us a chance to communicate more openly. I might be biased since this was my first coop and I don’t have any other experience, but it was honestly that great.

The Gist

I learned a lot, like a lot. Unlike most other coop students on their first job, I got to take a huge responsibility and had an immense influence on our project. I also got the opportunity to pick out the language I thought was most suitable for the job, and inevitably I picked C++, atleast for the most part. I also wrote a few modules in python for a part of the stack that dealt heavily with communicating with the server. Moreover, writing code on a device that is not as powerful as what we are used in our daily life was a welcome challenge and it helped me strengthen my ideology of writing quality, optimized and well-architectured code. I got to work with low level programming with two incredibly talented Electrical and Mechatronics Engineering coops, and they taught me a lot about the underlying mechanisms of how data travels from the circuit-y context. I don’t like the current software meta of web apps and phone apps, so working on something that had a real influence was, albeit unexpected, extremely refreshing. In conclusion, I had a blast and learned an incredible amount about every part of a stack in a modern real time program.