My name is Karun, and I am an Honours B.Comp student completing a Computer Science (Co-op) Major and an Economics Minor. At this moment in time, I have completed two years at the University of Guelph and am now wrapping up my second co-op work term. For my first two co-op work terms, I had the pleasure of working for 7D Surgical (now SeaSpine's Enabling Technologies Group) as a Software Developer Intern for 8 months.
While working at 7D, I had the opportunity to gain valuable experience by completing a variety of purposeful projects with the help of supportive colleagues. Throughout this report, I will discuss my experience here at 7D Surgical and how this company has laid the groundwork for my career.
7D Surgical is a medical tech company based in Toronto that leverages optical and spatial technology to produce image-guided navigation systems. Image-guided navigation systems are medical devices that enable real-time surgical navigation using preoperative computed tomographic (CT) images.
Using augmented reality, the surgeon can see where the surgical tools are placed in the patient’s anatomy during the operation. By using this technology, surgeons are able to reduce errors and improve patient care during surgery.
Because this was my first co-op placement, I devised five learning objectives that would enable me to gain experience in many different areas of software development. Working at 7D for eight months gave me many opportunities to connect my learning goals to my daily tasks. Here is what I learned:
My first goal was to improve my collaboration and problem-solving skills by working with members of the software development team. As a student of computer science, I spent a large part of my education developing software by myself, without much opportunity to collaborate with others in my classes. Once I took on this role, one of my first goals was to take on projects that would allow me to work closely with others on the software development team. As a result, I was able to observe how my colleagues approached problems and also gained experience working in a collaborative environment as a software developer. For example, my first research project gave me the chance to work together with a senior software developer to optimize parameters for an algorithm. During weekly meetings for the research project, I was given the opportunity to present my findings to my colleagues that were from different teams and backgrounds. Additionally, I received feedback on my work to help guide my research and improve my approach to the project.
As part of my placement, I had the opportunity to work on a variety of projects, which allowed me to collaborate with junior developers, senior developers, directors, QA analysts, and members of other teams. I was very pleased with the experience I gained to accomplish this learning goal as I had gained a lot out of working with 7D Surgical's staff and had improved my ability to solve problems in a collaborative environment.
My second goal was to gain a thorough understanding of the software development life cycle by working on and learning about several projects that involve many of these phases. From our weekly project update meetings, I learned a great deal about the software development life cycle. Every week, each project owner provided a status update on each project that the engineering team was working on. These meetings allowed me to observe how these projects developed week by week as I completed my co-op placement. As many of these projects were in various stages, I was able to see how the projects developed as they moved through the software development cycle. I also had the opportunity to work on three projects that were all at different stages in the software development life cycle, which helped me to gain a more comprehensive understanding of the SDLC.
My third goal was to gain experience in writing production-quality code and improve my ability to produce software documentation. During my time at 7D Surgical, these skills were most important for me to develop as they are essential to becoming a successful software developer. After finishing my research project, I was able to work on a benchmarking framework that was used to profile and optimize the code of other developers. By adhering to the coding guidelines 7D Surgical uses, I was able to create an application that other developers could pick up where I left off on my project and maintain easier. To improve the structure and quality of my code, I addressed the feedback and comments made by my supervisor. My final project also gave me the opportunity to gain additional experience writing unit tests. This project required that I follow the UnitTesting framework so that my code would align with other unit test projects
I also gained experience creating technical documentation. Since the medical device industry is heavily regulated, I was tasked with creating six technical documents as part of my second last software project. As a result, I learned the purpose of each document and how to construct them independently.
My fourth goal was to enhance my skillset by integrating existing technical knowledge and learning new languages and technologies. Throughout my studies as a Computer Science student, I have been formally taught Java and C through my curriculum. This enabled me to learn the fundamental programming concepts and Object-Oriented Programming. Once I received this placement, I wanted to leverage this knowledge to learn new languages and technologies that would be useful to know. Thankfully, I had plenty of opportunities to do so.
For my first research project, I had the opportunity to apply my self-taught knowledge of Python to optimize parameters for an algorithm. In the course of my research, I learned two widely used Python modules in OpenCV and Matplotlib. I was also able to learn C# and C++ after my research was completed to implement my changes to the algorithm. As well as programming languages, I also learned scripting languages such as Batch and PowerShell in order to create an automated update package. My placement provided me with many opportunities to apply my existing technical skills and also allow me to experience a wide range of languages and technologies that were applied in a variety of projects.
My final goal was to develop myself as a professional software developer by learning and applying software development best practices. I found this very helpful to learn since these practices can be applied to a variety of different projects, regardless of the type of project. I was able to learn new best practices at 7D which will prove to be very beneficial to my career. The first is version control. Though Git was introduced to me during my first year, I had limited experience with using it since it was mostly used for submitting assignments. During my time at 7D, I learned a lot more about the uses of git and how it aides developers in collaborating with each other. I learned how to create my own branches off of other users’ branches, reverting to previous versions of a branch, solving merge conflicts, creating pull requests, and addressing pull request comments. I even got to learn how to use a Git GUI client, which allows users to avoid the use of a command-line terminal to simplify the process of version control. The other practices that I was able to pick up included Unit Testing and YAGNI (You Aren't Going to Need It), which are used to simplify code and eliminate any redundant parts.
As a Software Developer Intern for 7D Surgical, I was given the responsibility to design, develop, test, document, and maintain software for 7D’s medical devices. Since I worked both in-office and remotely for this role, it was considered a hybrid position. As a developer, I was placed on the software team at 7D.
On the software team, I was involved in the research and development of many projects throughout the course of my internship, using languages such as Python, C#, and C++. Many of the foundational skills that were required for development were taught in class, but a lot of the skills required to complete these projects were learned on the job. These projects required me to work independently with little supervision, but also work closely with other members of the software team. In addition to developers, I also had the chance to work with QA analysts and members of the tools team. Communication and collaboration skills are crucial, as they are required on a daily basis in order to complete projects. In addition to research and development, I was also responsible for providing status updates, writing documentation in compliance with a quality management system, and giving technical presentations from time to time, all of which are tasks that also require good communication skills.
Overall, this co-op placement has been extremely beneficial to my academic and professional development. I was able to put the concepts I learned throughout my degree into practice and helped supplement my learning with new practical skills.
Having the opportunity to work at 7D Surgical for 8 months has been a very important experience, as I have gained very valuable skills this early in my co-op program. It allowed me to both enhance my technical skills as a developer and gain new experience in research. At 7D, I had the opportunity to work with many talented and supportive members from whom I have learned a lot. As a student of computer science, I have greatly benefited from working at 7D.
I would like to thank Michelle Leung, Vladimir Savchenko, and Michael Leung for providing constant support and valuable feedback throughout my placement. Additionally, I would like to thank the rest of the software team and tools team for making me feel welcome as an intern as well as helping me with my projects. Finally, I would like to thank 7D as a whole for hosting very fun in-person events, as these have been some of the most memorable moments throughout my placement.