As for my extreme statements about how readily software is changed, I leaned pretty heavily towards one idea. I’m not usually one to have an strong opinion out to an extreme. Engineering is all about trade-offs and holding to extreme ideals doesn’t seem to fit with good engineering.
I discussed the Averse To Change essay with some friends and read the comments from all of my readers (thanks you two!). One thing that came up was the idea of using the right tool for the right problem as a bigger reason to use software, not just because it’s easy to change. But what is it that makes software the right tool? I’d say it’s the right tool for problems that you know you don’t have completely defined, that you will learn more about as you go. Problems that require agility and adaptability to solve. That’s why I pretty much stick by what I said. Of course you have to balance ease of change with other needs like reliability. Life-critical systems, as one commenter pointed out, are the ultimate example of that. But even in those systems software is the easiest part to change. Exactly as it should be.