I’m a firm believer in the idea that there are no best practices in software development. There are practices that are known to be good under certain circumstances. Sometimes those circumstances are near-universal (or at least you think they are), but context is king and when the context changes maybe that practice you were touting as ‘best’ doesn’t look so crash hot anymore. Rather than just spouting ‘best practice’ it is much more important to understand the pros and cons of a particular approach, and WHY it might be considered a good practice. When you do something without understanding the rationale for doing it you’re liable to look silly when circumstances change, or if you work in the medical field you’re likely to put someone’s life at risk. I was reminded recently of the importance of knowing WHY something is being done by a story I heard about a family friend.
This family friend is as tough as old boots. He’s a veteran of the Second World War. Now in his mid eighties his body is wearing down and he suffers from a number of health problems, the worst of which is (or was) intense crushing pain in his lower legs caused by peripheral arterial disease. He described the pain as like having your lower legs put in a vise. Although he underwent a number of treatments including Aspirin (commonly given to patients in low dosages to prevent heart attacks, strokes and formation of blood clots such as Deep Vein Thrombosis or DVT) the pain was so intense doctors decided to take the drastic measure of amputation. The operation was a success, but a short time later he suffered an unrelated injury – intestinal bleeding which forced him back to hospital. While in hospital the staff put him back on….Aspirin, because that is what he’d been previously prescribed for the pain in his lower legs. Never mind that he didn’t have any pain in his lower legs anymore, or any lower legs at all. And never mind that Aspirin is exactly the thing you don’t want to be taking if you’re suffering from internal bleeding because of its antiplatelet effect (in layman’s terms they prevent your blood clotting). He suffered more serious internal bleeding and nearly died.
For my family friend the context had changed – the Aspirin which had previously been a ‘best practice’ for treating peripheral arterial disease was now actively harmful. The hospital staff didn’t understand why Aspirin had been prescribed in the first place, and didn’t think through the consequences of resuming taking Aspirin again given the changed context. Next time you hear of a ‘best practice’ ask yourself what assumptions about the context are implied. Are these assumptions valid? What things would need to change for this practice to become dangerous or harmful instead of beneficial?
[Image of a pill courtesy of doug88888]
Comments
I really don’t like how judgemental the term best practice is. It makes it hard to even think about what the other options might be.
I think the worst thing is how often they are just fashion. This year’s fashionable framework or pattern becomes the thing we snigger when we spot it in next years code.
The worst offenders are junior nursing staff who are "working to rules" and just don’t know how to react when I point out the differences.
I think it’s true to say, in both software development and medicine, "Best Practices, while often useful, are not universally applicable."