Recently, a piece of code that I wrote crashed after running for over a month because I forgot to lock one of several methods that was concurrently accessing a collection. I was very ashamed of this - this was an amateur mistake, and one that someone with the amount of experience that I had should not have made. I didn't get any any trouble for this, but I was pretty ashamed. "I am better than this, and I should not be making this sort of mistake," I thought and have been very careful to avoid this sort of thing since.
I don't write perfect software, and I never will. I'm choosing to not feel bad about that. It's all matter of perspective and expectations, isn't it? My colleagues can think less of me if they like - that's their baggage, though, and I won't pick it up. Shame is dangerous, and leads to a lot of the communications errors that developers make, which are often worse than the bug itself, or even the cause of it.