Did you take the “Pacemaker Test” before shipping your code ?

As a developer, the onus of delivering a functional, working code is always there on you. Whether you were there in the sprint planning meeting or you got the requirement specs over email in 2 sentences (“I need the login to support social auth. Should support ActiveDirectory too”), the moment you commit your code and say “Done”, do you realize there is lot more to it ?

There is a large population of developers who deliver the requested functionality as-is to the Reviewers(Reviewers may include peer-review, Manager or the QA team), and leave the tough job of thrashing the finer points to Reviewer and point out gaps in the code.

For all such developers, they should take the “Pacemaker test”.

Pacemaker Image & Working

Pacemaker: A system that sends electrical impulses to the heart in order to set the heart rhythm. The pacemaker can be the normal “natural” pacemaker of the heart or it can be an electronic device.

https://www.medicinenet.com/pacemaker/definition.htm

Just suppose you are in the team that is writing software for implementing the pacemaker algorithm, i.e to monitor heart activity like irregular and slow heartbeats and in response to these events, send out electrical impulses to the correct region of the heart to enable contraction.

So, just suppose you know that as all Software teams have, you also have a QA team which will test your code endlessly to make sure your code works flawlessly. Now you have two options:

  1. Apply your programming knowledge and algorithmic implementation to generate the code, while covering all possible scenarios like gaps in signals, missing signals, invalid signals etc., and make sure you have, as a developer, tested your code thoroughly for all conditions/exceptions etc. before shipping to QA (or reviewers) and you know in your heart that your code doesn’t contain any issues that would be uncovered by the QA.
  2. Apply your programming knowledge and algorithmic implementation to generate the code as per the specs given to you and handover the code to QA. You know that the QA team (or reviewers) will always catch any bugs before your code ships to production and to pacemaker devices to be used across the world.

Before choosing any option, realize the following 2 truths of the world:

A. QA (or reviewers)Teams are also human-beings and it is possible that they miss any corner-case or an unhandled/un-imagined scenario and any QA-verified product may be released to production with a bug lurking somewhere.

B. Since you don’t know which countries and which patients will be using the produced pacemaker device, it may also be used by one of your near-and-your-dear ones (god forbid!)

Will the above realizations (A,B) impact your choice (1,2) ?

So, while developing any piece of software (even if it is a hello-world or an ERP or any code), just apply the above principles to ensure quality — imagine that your code means life and death for someone.

Avionics

If the concept of pacemaker sounds too grimy for you to consider as an example, you can consider the software to govern Avionics in a fighter-jet which your best-friend might be flying (Yes, he got into Air-force, while you chose engineering). Imagine your friend depends on your software to guide his actions at a height of 50,000 feet in air, and a slight oversight on your part while producing the code will cause chaos to his Jet, and maybe to his life. How much quality would you ensure while coding that piece ? I am sure you would run your code through endless permutations and scenarios before giving it to QA.

You can consider yourself a great programmer when you start applying the same diligence to all your pieces of code — it maybe the next one project is a cutting-edge high-frequency algorithmic-trading engine or a mundane user-login system.

Instead of thinking in terms of value of your work, think in terms of Perceived Value of your work. You may be creating the code for a note-taking application, but it may mean a collection of notes, recipes, to-dos and an efficiently organized life for someone.

Show-Me-How

How do you ensure water-tight coverage and ensure highest quality of code ? Many developers rely upon the product managers to work out a story and the devs themselves are a passive stakeholder. Nevertheless, the devs can ask themselves if they have the following answers before putting down pen on paper :

Creating any work is easy, but creating a great work is boring, tiring, demanding, and you are often alone in creating it, and what keeps you going is that it will impact someone’s life somewhere immensely. You gotta do what you gotta do, no shortcuts!

What’s your thought on personal qualities a good developer should have ? Do let me know in comments!

Reliance Jio

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store