Write semi-manual code

Everyone who owns an DSLR camera is highly appreciative of both its automatic and manual modes. Automatic mode – the green rounded rectangle that lets us point and click – is great for most of the shots we take. However, sometimes the lighting is odd, the subject is strangely positioned, or we just need to compose the shot in such a way that the automated sensors can’t quite adjust either exposure or focus to produce the right shot. This flexibility to use automation 90% of the time, and permit manual operation for the remainder, is what makes DSLR cameras absolutely required for any serious photographer.

This paradigm has an often overlooked analog in software automation:

It’s pretty common for people to want to automate computing tasks. Automation can significantly reduce labor costs or allow people to be more efficiently allocated. We all hate doing mundane things, and the more we can eliminate them, the more satisfaction we can derive from our work.

Programmers, especially, are afflicted with the desire to automate everything, and we tend to overplay the benefits, and severely underplay the costs.

Though repetitive tasks abound, there are always those pesky exceptions that get in the way of a clean replacement process. These exceptions could be caused by user error, and mitigated with validation, but some of the time they are caused by unexpected, yet perfectly valid, inputs.

Developers often work in isolation to implement theoretical processes, and when it comes time to deploy them, exceptions become painfully obvious and render the code either partially or completely unusable without serious re-design. This is particularly true in healthcare, since exceptions are exactly those things that are most interesting and usually require immediate attention.

The solution is for developers to avoid trying to make point and click software. Whatever tasks you’re trying to automate, you can be absolutely certain that every single step will require a manual override at least some of the time. Unless you want to be doing this repeatedly while stressed out clients wait on the phone, then put in some buttons, fields and forms that permit every step to be performed by hand.

Make DSLR software, and avoid the lure of point and click.

Leave a Reply