Quick Facts

Position: Software Engineer in Test

Company name: Vital Images

Company location: Waterloo, ON

Company field: Medical Software

Technologies used: Python, PyTest, Selenium, Jenkins, Git, Attlasian software (Bitbucket, Confluence & Jira)

Summer 2019 @ Vital Images

Introduction

I believe there is little exaggeration in writing that the four months of my first co-op work term have been some of the most exciting and challenging in my life. I found an almost unbelievable amount of knowledge about the medical software industry, various standards and programming languages, working in larger teams and the practice of software engineering as a whole. However, I think the most important knowledge I found was about the nature of life in my position.

I hope this website proves useful and interesting not only as a reflective piece on my experience, but also a projective piece about the novelties and challenges of life as a co-op. Life is not a template that any of us can trace, though many times I see blogs simply list work experiences as “examples”. I would like to send a different message. I want it to be known that it is normal and common for co-ops to feel anxiety, to be overwhelmed and make mistakes. And that this does not stop us from being amazing.

About the Company

Though I have listed several facts about the company I worked at under the "Quick facts" section of this site, I think the most important aspects of a company are not these. I think the most important aspects of a company are what they do and how they do it. Vital Images makes software related to medical imaging (hence the name), offering a range of software from image viewers to software that helps manage the images themselves (what I worked on). The pipeline of medical imaging, from the modalities (the machines that take the images) to the final doctor's report is extremely complicated with many points of failure, and the company is built to reflect this. Computer science relates mostly to the manipulation of data and while most of the software that I worked on related to moving, storing or converting files, the techniques used to carry out these operations touch the core of the subject.

The corporate culture was not exactly what could be described as "traditional". The dress code and culture were casual, and almost all possible steps were taken to allow developers to do their work as well as possible. In such a freeform environment, guidance was more difficult to come by, which can cause a lot of stress for co-op students. I think emphasizes the importance of a rarely-known fact about the matter: finding the right work can be just as important as doing it. The easiest way for students to do well is to find out what their company needs the most and to orient their tasks around it.

Goals

The submission of my goals for this work term was quite late, because I wanted to ensure that the goals I set were realistic and related to the situations I was to face. My first week was spent mostly in confusion due to the magnitude of the project at hand, which made the writing of goals, as well as my job quite difficult. I think this is a very common problem that co-op students face, especially in a new industry. I always knew the general categories that I wanted to set goals under, and finally decided on them as follows:

1. To develop a working understanding of the python programming language and the pytest framework ( including language features and library functions).

2. To gain an understanding of the standards and technologies involved in the field of medical software development.

3. To gain an understanding of the standards and technologies involved in the field of medical software development.

When selecting the technologies to learn, I placed special emphasis on Broad Applicability. In other words, since I did not start with many skills, I wanted to learn skills that could be applied in many places. I knew that Python is commonly used, which made it a goal. I also knew that medical specific technologies, while difficult to learn, were also valuable. Of course, communication skills are important at every company.

Surprisingly, I achieved both my Python and communications related goals extremely well. However, I had trouble learning about the medical technogies due to a lack of exposure. My mentor expressed that a major reason for this is that I was so productive in my original role, that he did not want to switch me to another area of testing, which would have exposed me to more of these technologies.

Job Description

As part of the QA team, my daily work revolved mainly around writing system (integration) tests and writing a test framework. When I started the job, I was very worried due to the fact that I did not know Python, which is the language that the code was written in. What I found after writing some tests is that programming languages are quite easy to learn, while codebases are hard to learn. With new co-op students starting every 4 months, it was imperitive to develop a framework which was easy to use, which is where I spent most of my time. Over the course of my term, I developed a test framework for a large set of pages which was both consistent and easy to use. One good lesson to learn from my work is that that the developer experience is important. When frameworks and libraries are easy to use, software is developed much faster and with fewer bugs.

Relation to Acedemic Studies

Over the course of this work term, I found myself applying much of the design and work knowledge that I learned in software design courses. I find that many times, companies place importance on different aspects of software development than university courses. For example, I was sometimes told not to worry about the efficience (big O) of a function unless it was running too slowly. I do believe that the base knownledge that I learned in courses, such as how memory and sorting works, is almost always useful.

Conclusions

Over the course of this term, I learned many concepts and technologies that I did not know before. I think there is also another aspect of the co-op experience which is worth talking about. When I started this job, I felt very stressed, tired and overwhelmed for the first two weeks. Though I improved by the end, the journey was difficult. Almost every other co-op student I talked to shared the same experience. I think it is important for both co-op students and those new to the workforce to know that it is always hard to start a job and to become good at it. I think the greatest challenges are oftentimes more personal than technical and that we can learn equally valuable skills from overcoming them.

Acknowledgments

I would not have been able to succeed without the help of my wonderful mentors and team members Kyle Kreutzer, Ben Hartwell and Wes Thomson. They are all wonderful people and I feel very fortunate that I got a chance to work with them over this semester.

This website was developed in plain HTML and CSS without any additional frameworks. Measures were taken to ensure the content displays properly on multiple screen sizes, that said viewing on desktop is recommended. The home page which is in some places linked to is still under heavy development.

Contact


Email: recruitment@davidreti.net

Phone: 647-838-2154

GitHub: https://github.com/david-reti