Sometimes,
of course, it's like
Mr. Option says. But other times, the
hallmark of a
good programmer is
precisely passing the buck.
Programming is, at heart, an engineering discipline. Good code can be used to do other things. And the only way to get code to do several things is to preserve modularity.
The philosophy of modular programming can be summed up as "what I don't know can't hurt me". If I'm writing code with someone, we need to fix an API. Then, all I do (and all they do) is program up to the API. And I don't care what happens on the other side of the API. It's not my business.
Of course it's not really like that. In practice, we can help each other, talk to see the interface between us is in the correct place, and look for other components we could abstract and share. (Sometimes the person on the other side of the API is me again!)
But to do my job right, I have to ignore all that. The moment I do stuff on my side of the API that has any relevance to what goes on on the other side of the API, I break modularity and produce lower-quality code. Good code performs up to the spec, but also not beyond it.
Passing the buck on bugs is, of course, a very different matter.