The well-known Hanlon’s razor states-
Never attribute to malice that which can be adequatelyexplained by stupidity.
While it’s a seemingly pessimistic perspective on the capacityof one’s fellow human, it is an undeniable truth that we oftenmistake carelessness, thoughtlessness, or outright ignorance asmalicious intent.
Yet it’s a more serene existence — to the benefit of one’slifespan — to simply assume that the person who dangerously cutyou off on the road, for instance, is just a moron deservinga bit of sympathy, rather than considering him or her a roadway foechallenging you to a deadly battle of wills.
From a software development perspective, however, I think aninverted variation would serve the industry well.
Never blame others until adequately considering thepossibility of your own (negligence | carelessness |stupidity).
As a general rule, the denizens of the software developmentprofession — it certainly isn’t limited to this profession, butgiven that it’s the general focus of this blog it’s the one Icomment upon — have a tremendous capacity for assuming the worstof others, far before considering the unsavoury prospect that maybe– just maybe — it’s actually their own mistake or lack ofknowledge that’s the cause of the issues they face.
It is far too common to cast a wide net of blame, declaring thatMicrosoft’s products are screwing up, the documentation is allwrong, the server is malfunctioning (maybe because of cosmic rayparticles toggling memory bits), the installation tool is a dud,and one’s coworkers are surely idiots insidiously and maliciouslychanging code just to make one’s brilliant code poetry fail toachieve its momentous glory.
After such hand-waving, blame-weaving dramatics, in most casesthe developer realizes that they skipped an obvious step in theinstructions, or they forgot to get latest of the entire branch, orthey were copying the wrong file or looking at the wrong folder orrunning the wrong executable, or they were using the class entirelywrong, or they completely misunderstood how the operating systemsecurity system works, or they set a global setting a week backthat completely changed how the application functions, or theyignored the email and documentation and group meeting detailingsystem changes, and so on.
They quietly retreat — don’t expect a retraction — until theyrepeat the same mistake the next time something doesn’t go exactlyas imagined.
I’ve met these people in the industry. I’ve worked with thesepeople. I’ve been one of these people.
I think we can all relate to situations where we’ve railedagainst a company, a product or a person, only to have theembarrassing realization that we were simply doing somethingdumb.
And it’s not even that doing something dumb is noteworthy: We’rehumans, and we’re bound to make mistakes. The problem is that weoften don’t even give a moment of time to even thepossibility that we could be at fault, instead justassuming the worst of others.
It’s far more beneficial to both productivity and team morale tohave a little bit of self-doubt in these situations: Assume theworst of yourself before assuming the worst in others.
After hashing out this entry, I wondered why it wasn’t appearingon the public blog. After berating various products and services, Iremembered that I recently outsourced my DNS (for the reasons describedhere, using the service recommended by a reader), and forgot toadd an entry for the FTP server. Whoops.
As a completely offtopic aside, one of the reasons I switchedDNS providers was to have support for a domain SPF record. While it doesnothing to stop the tide of pump-and-dump investment scam spams, atleast it allows those recipients utilizing the service toimmediately dump-bin those that claim to come from yafla (I getabout 100 bounces a day, and who knows how more actually getthrough), knowing that the from: address was forged.