Most software is important and impactful in some way, but building software in the healthcare space is special. Healthcare is a critical sector where software has a meaningful impact on millions of people every day. This is true not only in the realm of life-saving medical devices but also in the subtle, behind-the-scenes work of backend healthcare applications.
For example, if a backend system causes a patient’s medication refill to be delayed the result can be discomfort, suffering, and, in the extreme, major health complications.
Patients entrust their lives and well-being to the healthcare system and that trust extends to its software systems. Healthcare is too important and too sensitive to settle for mere “software development”. Healthcare needs software engineering. What exactly differentiates software development from software engineering?
Quality: Engineers build systems that work as intended. They systematically identify the goals and requirements of systems, implement processes to ensure quality and verify appropriate performance, and quantify and track quality to ensure quality improvement as opposed to degradation.
Security: Engineers build secure systems by design. They identify threats and vulnerabilities and implement controls to mitigate them.
Predictability: Engineers employ process and planning methodologies to ensure predictable delivery. The development of software is inherently uncertain, but software engineers perform de-risking to better understand the effort required to deliver and can give reliable estimates within a defined confidence range.
Maintainability: Engineers lay the foundation for solving tomorrow’s problems. They understand that software systems operate in the context of a broader ecosystem and that requirements are constantly evolving, therefore the ability to adjust and extend a software system is critical. Engineers build systems in such a way that they can be modified to serve future needs.
It is possible to deliver a software system that addresses most of today’s problems, most of the time, while neglecting the above. However, the cost of such neglect will be evident somewhere–reliability, functionality, security, velocity, total cost of ownership, or some other aspect will suffer. With software engineering it is possible to over engineer a solution, and that should be avoided. However, there is a massive difference between analyzing system requirements and making an informed, conscious decision that certain system constraints have wide tolerances versus haphazardly neglecting quality, security, maintainability, or other factors.
Not every application space demands true software engineering; but healthcare does. The stakes are too high, the data too sensitive, and the costs too great to accept anything else.
Software engineering is truly a team sport, and everyone has a role to play. Not every application space demands true software engineering; but healthcare does. The stakes are too high, the data too sensitive, and the costs too great to accept anything else. Software engineers need to advocate and champion software engineering within their organizations. Healthcare leaders need to demand, and support, software engineering. It isn’t easy but it is necessary. Digitizing our healthcare system with software development, as opposed to software engineering is a recipe for disaster.
Just over a year ago I joined Syntax as the second member of the founding team. I was, and am, deeply passionate about Syntax’s mission to accelerate value-based care. But I’m also a realist. I would not have joined if I didn’t believe that I would be empowered to build a culture of software engineering. Towards the end of the interview process, I met Rachael Jones, our CEO. I was quickly convinced she would support my efforts to employ software engineering while building Syntax. As a company built at Redesign Health, I knew I would have partners who truly understood the healthcare space, who could understand why healthcare demands software engineering.
Ideals about software engineering are great, but practice is hard. Over the past year at Syntax, I’ve committed to build an engineering culture focused on more than quick delivery. A culture where quality, security, predictability, and maintainability aren’t “nice to haves” but are essential.
At Syntax every engineer is a quality professional. We go beyond just writing unit tests and evaluate what does and doesn’t need to be tested in each test suite. We track quality metrics over time and identify ways to improve the quality of our software and processes.
At Syntax every software engineer is also a security professional. Threat modeling is a part of every engineer’s job–no feature is shipped without an analysis of threats and identification of appropriate controls.
As a team we strive for predictability by revisiting our roadmap at least biweekly, to recalibrate and check our past and future estimates.
And lastly, we focus on maintainability by being conscious about our technical decisions. When we need a new framework, tool, or library we research various approaches within a timeboxed window, a design decision document is authored and then reviewed by the team.
These are examples of how we are putting our belief in software engineering into practice. There is still room for improvement and things don’t always go as planned, but continual improvement is a critical part of any effective organization.
We need a healthcare system that works and that isn’t possible if it’s powered by software that doesn’t.
Software engineering isn’t easy, but neither is healthcare. We need a healthcare system that works and that isn’t possible if it’s powered by software that doesn’t. Healthcare cannot get by with just software development, it demands software engineering.
Will Hudgins is a dynamic technology leader who is passionate about transforming healthcare for the better. He brings an engineering leadership that balances technical excellence with an attention to the unique nuances of healthcare.