The Abundance of Software Missionaries

Few years ago, I was checking out the highly regarded Structure and Interpretation of Computer Programs textbook, mostly on a whim to see what made it so influential. And while it is not the most difficult read, suffice to say, my efforts were not long-lived. But regardless, a few ideas did stick with me, such as programming being the marriage of procedures and data. Yet, what stuck with me even moreso, was the opening dedication to Alan Perlis. I encourage you to read the whole paragraph as it is heartwarming & uplifting in its hopefulness, but the main part that stuck with me was Perlis saying

I hope the field of computer science never loses its sense of fun. Above all, I hope we don’t become missionaries. Don’t feel as if you’re Bible salesmen. The world has too many of those already.

Back then, the missionary metaphor did not really click with me, at least not the implications of it. But as of late, it has become more and more evident why Perlis used missionaries specifically and not preachers or something else. See, unlike with the preachers who preach what they believe to be true to willing listeners, there is a sense of urgency, an overwhelming duty and pressure to save the ignorant & the foolish, that comes with being a missionary. I mean, someone has got to save the souls of the dynamic language users and let them know that their language sucks, right?

For some context, I enjoy consuming “programming” content, be it talks, articles, or blog posts. And what I have concluded is that the only common theme among software developers, is their absolute disdain with the state of software development. And sometimes enough burning hatred for that state to fuel them to go an hour long rant. And often, shortly following each of these scathing tirades, a solution is presented that promises the world. Just follow this new methodology, use this programming language, implement these design patterns and not the other one, and you are set. In other words, join my church, and you’ll be spared the sin of bad code.

These derisive rants are often tempting to any soul that has to deal with the buggy, over-engineered and complex monstrosity that is modern software on daily basis. But they are also often dismissive, and pessimistic of any progress made. All these rants do instead, is create a tech-savvy doomsday cult. I mean, is most software really that bad? maybe, but is the modern web the cancerous death-spiral of all software that many tout it to be? probably not.

A healthy skepticism is essential for any developer to manage navigating the trends & fads that plague the software, and to help distinguish what is better and what’s just hyped. But so is healthy optimism. So grounding that skepticism in an optimistic outlook of what we can do to help better direct these trends, is much more constructive than simply raging about mistakes done.

I leave you with this Perlis quote from the same dedication

We began to feel as if we really were responsible for the successful, error-free perfect use of these machines. I don’t think we are. I think we’re responsible for stretching them, setting them off in new directions, and keeping fun in the house.