I was watching something on TV the other day and sat in disbelief as someone said something to the effect of, "I wish we could round up all of the people who made mistakes and punish them." That statement floored me. Punishing malevolence is one thing (preferably by immediate dismissal), but punishing mistakes? How is one to learn? Doesn't doing so stifle innovation? You can't be right every time. Don't we learn more from mistakes than being successful?
So, this got me to thinking. Mistakes are a way of life for developers, but many managers don't see it that way. I know I've worked in places where one could be reprimanded for mistakes in both judgment (e.g. incorrect estimations on time) and execution (e.g. plain old software bugs). My question to the SO community is, do you work at a place where mistakes are punished? And if you do, do you find that that behavior has an impact on your company's level of innovation?
In other words, are you encouraged to find good solutions to problems by venturing out and making mistakes or are you only permitted to implement tried-and-true (and therefore old and probably boring) solutions?
ETA: I'm not talking about chronic mistakes. I'm talking about honest-to-goodness mistakes where one did not intend the anomalous outcome and was reasonably unlikely to foresee such an outcome.