DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Refcards Trend Reports
Events Video Library
Refcards
Trend Reports

Events

View Events Video Library

Zones

Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks

How does AI transform chaos engineering from an experiment into a critical capability? Learn how to effectively operationalize the chaos.

Data quality isn't just a technical issue: It impacts an organization's compliance, operational efficiency, and customer satisfaction.

Are you a front-end or full-stack developer frustrated by front-end distractions? Learn to move forward with tooling and clear boundaries.

Developer Experience: Demand to support engineering teams has risen, and there is a shift from traditional DevOps to workflow improvements.

Related

  • Cybersecurity Innovations in Software Development: How Developers Are Tackling Security Threats
  • Beyond Automation: How Artificial Intelligence Is Transforming Software Development
  • Misunderstanding Agile: Bridging The Gap With A Kaizen Mindset
  • Software Specs 2.0: An Elaborate Example

Trending

  • Apache Doris and DeepSeek: Redefining Intelligent Data Analytics
  • Smarter IoT Systems With Edge Computing and AI
  • Beyond Java Streams: Exploring Alternative Functional Programming Approaches in Java
  • MCP Client Agent: Architecture and Implementation

The surgery metaphor

By 
Giorgio Sironi user avatar
Giorgio Sironi
·
May. 21, 12 · Interview
Likes (0)
Comment
Save
Tweet
Share
8.0K Views

Join the DZone community and get the full member experience.

Join For Free

As you know in the last months I've been intrigued more and more by metaphors for object-oriented systems, since they brilliantly solve the problem of naming by borrowing terminology from an existing field.

However, it is also interesting (and indeed has happened many times) to propose metaphors for a software development process. Analogies like building a skyscraper and growing a crop have let us ground some of our hypothesis in "thousand-years old domains"; and often lead us ashtray by false comparisons like the one between programmers and bricklayers.

The goal of this article is to describe the surgery metaphor for software development and check where it is useful to explain development concepts to newcomers and non-technical people.

Quality

There are some shared values between surgery and a certain category of software development, that deeply cares about the quality of the final product.

For example, the diatribe of long-term and short-term value is resolved in favor of a the former: a solution must work without requiring larger operations for years (ideally, for decades). The cost of maintenance is taken into account and never discounted when discussing different approaches to the current problem.

Attention to the detail is omnipresent in surgery, down to the singles procedure to follow; software development faces risk by automating most of these checks: broken builds cannot be deployed, and business metrics like current active users or satisfied requests must be monitored to ensure availability of the service.

TDD and refactoring

Following Uncle Bob's metaphor, common Agile practices like TDD are akin to aseptic techniques in surgery. These procedures started out simply by hand washing, and has evolved into gloves, masks and sterilization.

Thus practices are not strictly necessary conditions for success: emergency scenarios require to operate without it, like in the case of first aid.

However, standardized procedures are facilitating conditions: not as strong as necessary, but able to improve the odds of a good outcome enough to show a good return on investment. Post-surgery infections were as common and lethal in medieval times as finding bugs in production is nowadays.

However, practices are never a sufficient condition: you don't bring a postman into a surgery room, make him wash hands and tell him to operate (while many people tell him to code without even the hand washing part.). There is a whole set of training that he has to undergo before being able to make a positive contribution.

Training

The training of surgeons is one of the hardest in the world. Depending on the country, there are strong qualifications to obtain and associations of certified professionals that a surgeon must belong to in order to operate the profession. In cases of misconduct, a surgeon can be stopped or expelled from the order.

Try imagining a programmer getting expelled for doing a sloppy job. However, given how certifications work in the field at this time, we still have much work to do before they become a reliable signal for employees.

A big part of the medical training happens on the field (in hospitals and periodically in operating rooms), although the apprentice is usually never left in charge.

Moreover, the training is never declared complete, and there is a costant update on the latest tools and techniques on the part of doctors. Their publication ofscientific papers and journals can be compared to our blogs and articles reporting the best (or good) practices of a field, although the selection system is based on peer review in the former case and on popularity in the latter.

The issues

A first way in which the metaphor fails is in the different definition of value: while maintaining software and adding new features to it is often necessary, the best surgical operation is still the one that is not performed. In this sense, the value of getting the application to work again would be preferred to the one of further product development.

Another issue that we would face is the inflating cost and time needed for training of doctors, alghouth the long training may actually be necessary for such a delicate domain. After all, the surgeon's salary justifies the investment costs to become one. High compensation systems seem to be able to attract the best programmers as for the best surgeons in the market.

The inflating costs of healthcare are instead more worrying. In the case of software, there is a trade-off between value (and so monetary revenue) produced and cost, while it is much more difficult to ethically quantify if the costs of medical procedures are worth bearing. What is happening in software is that there is absolutely no regulation on who can be a supplier in the market, and as such the average (and also median) quality of the products is terrifying.

I'm not saying that you should adopt the values of medicine in your work, which can be a stretch for Wordpress applications, but that if you share them, the surgery metaphor becomes interesting for you. Software is as important as human lives only when they depend on it, in the case of biomedical and transportation systems such as pacemakers and flight control; other important categories of software are business critical, and as such economic metaphors will suit them more than the medical one.

Software development

Opinions expressed by DZone contributors are their own.

Related

  • Cybersecurity Innovations in Software Development: How Developers Are Tackling Security Threats
  • Beyond Automation: How Artificial Intelligence Is Transforming Software Development
  • Misunderstanding Agile: Bridging The Gap With A Kaizen Mindset
  • Software Specs 2.0: An Elaborate Example

Partner Resources

×

Comments

The likes didn't load as expected. Please refresh the page and try again.

ABOUT US

  • About DZone
  • Support and feedback
  • Community research
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Core Program
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 3343 Perimeter Hill Drive
  • Suite 100
  • Nashville, TN 37211
  • [email protected]

Let's be friends: