Some developers enjoy working on different projects – the more diverse, the better. And some prefer to focus on a specific type of product. For the past five years (more than half of my software development career), I have been working as a software developer for various medical devices.
During this time, I found this “niche” to be quite rewarding. Here are just a few reasons why:
- First, it feels nice to work in a domain where you know you can make a direct impact on people’s health. You feel that your work is useful and relevant.
- Second, it’s a great opportunity to get familiar with how embedded systems work. Consider this as your “foot in the door” technique. If you’ve always been fascinated about what happens down there inside the machine, then a software developer position in an embedded medical project is the best place to start.
- Last but not least, it’s an area where you can shine pretty quickly if you have a mind set on innovation.
A few starting tips
OK, let’s say that you’ve made your decision. You want to develop software that commands a medical device and you’re wondering how hard it can be. I’m happy to share a few tricks that may help you speed up such a career transition.
1. Be curious about how things work at a physical level
There’s a certain physical, more tangible dimension when developing software for an embedded system. You can see how your software communicates with or commands various physical components of the device. You can feel the direct impact your work has on the device.
In the following video you can see me testing the device commanding a hydromassage bed, which is one of the projects I’ve been working on at RomSoft.
Also, you collaborate with teams from other disciplines, and get to learn how a software product interacts with the mechanical part, with the electronical part, and so on. You can witness an entire process and this, in my opinion, is the most beautiful part when developing software for embedded medical systems.
2. Sharpen your programming skills
A common misunderstanding in programming for embedded systems is that you have to learn C or C++.
Nowadays, many embedded projects are destined for what we call single board computer systems. These are usually powerful computers on their own, where you don’t have limitations on computing power side or storage capacity and you can use all kinds of high level programming languages.
For example, C# and WPF offer enough embedded dedicated libraries and support. There’s even a Windows IoT that is destined for device application development.
3. Think less like a software developer and more like a software engineer
While both software developers and software engineers are highly skilled professionals, there are some differences that are important when it comes to developing software for medical devices.
One important difference is that a developer takes functional specification and delivers the code required within tight parameters, essentially completing the task in isolation. Whereas a software engineer should be able to do everything that a software developer does, but with a bigger picture view. This means that they need to be more focused on structure design and eliminate technical debt, or solve a problem while minimizing the trade-offs to other parts of the system and its architecture.
For example, there are situations where you have to be aware of the environment that your software interacts with and to adapt to them, either it’s about the size of a specific display, a touch screen behavior, or some patient-device interactions.
4. Get ready for some unusual testing situations
There are two testing stages in medical devices, similar to all embedded systems: simulator testing and device testing. The latter can be pretty messy and hilarious, but it will also help you gain additional skills (physical endurance may be one of them).
I remember an instance when a fellow tester was trying to put the CT injector we were working on in an error state (a CT injector is a device that pumps contrast solution when you do a computed tomography scan). The specifications were that the error would occur after every 8 liters of contrast solution was pumped through the device. So our colleague was holding a bucket full of water with one hand and feeding the contrast solution pump with the other hand, trying to reach that upper limit that would generate the error message. Much different from desktop applications testing. And funnier, too.
5. Don’t use open source software
In programing for medical devices, using open source software is not usually accepted because of the domain regulations. This is why sometimes you may need to write your own libraries or frameworks. But this can be fun, too.
In line with this idea, system upgrades are also a challenge of their own kind. Suppose you are using a version 4 framework, and after 6 months, version 5 becomes available. You have to be aware that any system upgrade may impact your final product in a different way. This may require the manufacturer to redo all tests and clinical trials, not to mention all paperwork requested by regulation authorities. It’s like dealing with a whole new product all over again.
6. Understand quality standards and risk mitigation
Everything that goes into a medical device, whether it’s software, mechanical and electronical components, or substances, has to be closely tested and validated.
When you develop software for medical devices you must strictly follow the industry required standards. These don’t necessarily limit your work, but help you discover possible problems more timely and efficiently.
For example, when a desktop application freezes, you can press a few buttons and run it once again. But if the freeze happens during a procedure when contrast solution is being injected in the patient… actually, no, this is never an option. The final system should be nothing less than perfect.
7. Choose a company with a solid record of similar projects
As a final point, I would say that choosing the right company to help you navigate through this career change is important.
In a large company, there’s this tendency to split things in very specialized roles or tasks that may limit your possibilities to gain an overview of the entire project and development process.
On the other hand, a team of one or two people could either mean the project is too small or that you’ll end up filling too many roles and take the trash out, too. Also, not ideal.
What you want is a company with consistent experience in developing software for medical embedded systems. You want to have people to learn from, but also have an impact on the overall project outcome and positively influence somebody’s life through your work.
While working for various medical embedded systems at RomSoft, I’ve had the chance to branch out into other areas of the product lifecycle, like writing documentation, architecture design, or validation and risk mitigation. Handling a bucket full of water when testing a CT injector or short-circuiting the computer board of a massage bed were some of the side skills acquired while learning the serious stuff.
Considering how much our current lifestyle depends on embedded systems, and how rapidly technology evolves in the medical field, I would say working in this type of project would secure you a highly sought skills set on the future job market.
Medical devices get used more and more every day, and nearly everything is automated, in order to help or facilitate the medical act. It’s easy to foresee that this domain will see explosive growth.
Not to mention that you can be fortunate enough to start from a simple device like an insulin pump and implement an idea that could bring a significant improvement. It’s an area that allows you to put that creativity to work and build something important. If you’re the type of person who enjoys programming as much as helping others, this type of job will make you thrive.
And a career opportunity
If such a career change sounds appealing to you, feel free to check out this job opportunity for a .NET Software Engineer at RomSoft. We’re starting the work on a new project that requires developing the software components of a medical device that is specifically intended for the diagnosis, monitoring, and treatment for patients living with HIV. And that’s something that can really make an impact on so many people.