Creating the Code

July 12, 2010

Stefan Pintillie speaks to Jim Oldfield about computer programming for medical science.

Title: Software engineer.

Education: B.Sc., computer science and statistics (2005) and M.Sc., computer science (2007), University of Waterloo.

Supervisor:
Dr. Graham Wright, senior scientist, imaging research and director, Schulich Heart Research Program, Sunnybrook Research Institute.

Role:
Developed Vurtigo, visualization software for real-time magnetic resonance (MR) imaging guidance of cardiac interventions. Magnetic resonance offers better imaging of soft tissue than does X-ray fluoroscopy—the current standard—without image-enhancing dyes or radiation

Why did you choose Waterloo to study?

Waterloo has a very good reputation as a technical university. I liked their co-op program and courses, and they also offered financial assistance.

Was the co-op useful?

Many co-op students at Waterloo returned to organizations where they did their work placements. As an undergrad I did five placements: one at Princess Margaret Hospital, two at software companies, and then at SickKids and Sunnybrook. At SickKids, I was Labonny Biswas' co-op student, and now I work for her at Sunnybrook, so the program helped with networking. Moreover, at SickKids I connected the dots and realized I liked the research environment more than software companies.

Why?

Roles are more rigid at software companies. You're told what to do and how to do it. Here it's more goal-oriented: you get a problem, then figure out how to solve it, and you have to like that an awful lot. I get more freedom here, and I'm able to make design decisions on my own—that attracts me most to this position.

What does your workday look like?

I spend about 80% of my time on Vurtigo, debugging things people have found that don't work properly, and adding new features people want. New features are about design—trying to figure out how they would work inside the software architecture—and writing the code to implement them.

Can you expand on the difference between design and coding?

The design is something you can really do on paper, in a diagram. Software, like machines, has different pieces that interact with each other. When you add new pieces, you have to make sure they interact in a sensible manner. Coding, on the other hand, means typing out those new pieces and inserting them in the right place.

Using C++ or another computer language?

Yes, C++ connects all the pieces—many of which are prebuilt—into one unit. Returning to the machine analogy, you don't have to reinvent the wheel, because certain pieces of the machine—buttons, scroll bars, etcetera—are already made, and function within various "libraries."

What's most challenging about this work?

Initially, it was learning to work with the libraries and put them together. Different companies make libraries independently, and when you combine them, they don't necessarily play nice. After figuring that out, the hard part has been usability—making sure that whoever uses the software will find it intuitive. That's challenging because what's intuitive to one person isn't necessarily intuitive to another. As well, researchers will change their minds about what they want in a feature. If that happens halfway through a three-week development process, it's frustrating. So I try to ask them specific questions upfront, to be clear about what they want.

What do you find most rewarding?

When I get a feature request, I really like that it's a puzzle. You try to fit the piece into the current design, then figure out how to write the code. And once you've solved the problem of making it work, it's really satisfying to see it in use on an experiment. That's a great feeling.

Do you have a strong interest in seeing your work applied clinically?

Yes, I do. I don't have a serious background in biology, but an interest in medical science is critical for enjoying the work here. We wrote Vurtigo specifically for cardiac interventions, because the existing software for interventional guidance was general, slow and unreliable. Now, I like to be present for the cardiac experiments, to see if the software performs and meets the expectations of the researchers. All the experiments sound great on paper, and some of them are that great, but others aren't. It's interesting to see which do and don't work out.


This work takes place within the Imaging Research Centre for Cardiovascular Intervention, which is funded by the Canada Foundation for Innovation and Ministry of Research and Innovation.