Responsibility in Software
A common statement that comes up in forums and other discussions about software is "the vendor should have put feature X into their product". There is no clear line where vendor responsibility "ends".
I don’t think there is a place where vendor responsibility actually ends. It’s a sliding bar that needs to be versatile to accommodate different situations. However at some point the vendor responsibility crosses with that of user/developers who build upon their tools. Indeed, users have a responsibility to learn their craft, have a good understanding of the tools that exist, and an ability to discuss the tools at a detailed level with colleagues and with the vendor.
I find this is the most difficult part of my daily life as a developer because I tend to use a lot of tools. People expect me to have answers to many problems (uh, maybe because that’s the way I advertise the business?) and that requires constant research, endless searches in Google, blogs, wiki’s, books, and other resources. In fact I probably spend the better part of every day reading about details on the products I use, especially the Microsoft .NET Framework which seems to go on endlessly. And yet I always feel like I’m never quite on top of my craft because there is always so much to learn, but I feel that I have at least done my part to bridge the gap. If I ask a question I’m better qualified to understand the answer, and when I do ask a question I’m much more certain that I have good grounds for asking. I consider it my responsibility to achieve these levels of qualification as much as I consider it the responsibility of the vendor/developer to provide good software.
My point here though is that I can’t ask Microsoft for changes to their products before I actually understand them. It’s my responsibility to learn my craft. Forums are filled with questions from people about ASP.NET or VB.NET, etc, and it’s obvious that these people aren’t reading other resources before they ask someone else to provide answers. The vendor can’t be compelled to take too much time for these people when there are obviously others who have taken the time to develop expertise. Since there are so many people who have developed expertise it’s obvious that it is possible (granted not always easy) to do so with the resources available. This is part of the metric by which we can judge how well the vendor has accepted their responsibilities. If it’s possible for some significant number of people to make productive use of the tools then the vendor has adequately done their part (to some extent), and it’s up to the rest of the user base to do their part (to some extent) to meet closer toward the middle or some other point which is acceptable to the majority of the user base. (I hope I’m being politically vague enough there by not making too many statements in absolute terms.)
But where is the line? Half-way? We can’t define "half-way" with intangibles like this. Some companies need to go much more than half-way to share responsibility with their customers. An auto manufacturer needs to make a product that simply works. An average driver is not expected to be an auto mechanic to make the vehicle move. The unspoken agreement between consumer and auto manufacturer is that the vendor must put much more knowledge and workmanship into the product than the consumer. This is certainly more than half-way, it’s more like 90% vendor effort with 10% or less of expectations from the consumer. The consumer is expected to know how to use the product – how to drive, to know that the vehicle requires fuel, to get a periodic tune up… but the consumer is not expected to know how the product actually works.