I hate them. I am especially annoyed when a library that exposes some sort of API requires it’s own configuration file. So, not only do you have a configuration file for your application, you also have to have another for this stupid library you integrated into your application. Wouldn’t it be nicer for the API to expose some methods, structures or something so that the data needed by the api could be set from the consuming application? That way, if you insisted in persisting these settings in a file you could do so in the application config file, giving you a single config file instead of two. I suppose one might make an exception and have a separate config file for a something that is so pervasive that is canonical like the log4XX logging libraries.
Defensive Programming is usually thought of as a software quality technique but I have another use for the term. Defensive Programming happens when you are dealing with two or more modules of code that interact with one another in some way and the modules are written by different developers. That’s the programming part. The defensive part happens when something is wrong and each of the developers blames the other for the as yet unknown problem because they are covering their ass, have low self esteem, are lazy, are arrogant, you fill in the blank. This drives me nuts. Let’s just collaborate to solve the problem. Software has bugs. It’s fundamental. If the defensive programmer spent half of the time they spent pointing the finger at someone else fixing bugs in their own code we’d all be better off.