One of the advantages of writing a blog post or an article is that the author has an opportunity to think about what he or she writes before publishing it. Presenting at a conference is always more risky because one might have a momentary memory lapse or gap in judgment and say something he or she will later regret. While this can happen in writing, there are usually a few more guards (such as a in a blog posting) to many guards (such as in peer-reviewed writing). One common thread we often see in both writing on technical subjects and presentations on technical subjects is an implied expertise in the subject material and often an associated implication that the author can do no wrong.
It is understandable that an author or presenter would not want to admit to his or her shortcomings or lack of knowledge. Even when a person really is an expert in an area, any sign of weakness can be and unfortunately often is interpreted as a significant hole in that person's expertise. It is natural for authors to only want to present their good side and to only write about or talk about things they understand.
The reason that I include the word "speculations" in my blog title is because I often do mix experiences, observations, thoughts, and cogitations with some speculation. This is also why I include a disclaimer on my blog that essentially states that while I try to be accurate in what I write, there is no way I can guarantee that everything I write will always be correct. I do not knowingly write something that is false or incorrect, but that doesn't mean that I don't make mistakes.
I think much can be learned from mistakes. We can certainly learn from our own mistakes, but it is even better if we can learn from someone else's mistakes without paying the same price that someone else had to pay. The unfortunate side effect of our seeming human nature to emphasize our strengths and hide our weaknesses means that we can lose some benefits of lessons learned from poor choices.
With all of this in mind, I found Ioannis Cherouvim's recent blog posting The * Stupidest Things I've Done in My Programming Job to be especially refreshing. It is not easy to post mistakes one has made publicly and open oneself to potential ridicule. There are some mistakes on this list that are not trivial. However, this post seems to be evidence of what the blog author has learned. It also provides an opportunity from others to learn from his mistakes without having to make the same mistakes themselves.
Predictably, there are some negative feedback comments that do, in effect, ridicule the blog author. Others, however, encourage the blog author for his candor and for describing the types of poor decisions we all see (and in some cases make) fairly often. Perhaps the most interesting facet of the feedback is that some of the acknowledged mistakes are now being debated as to whether they are truly mistakes. I love discussions such as these because, in the end, few things are really as cut and dry as we like to pretend.
UPDATE (7 March 2009): Another refreshingly honest blog posting is How and Why I Missed the Boat as a Developer.