When we are actually coding, we usually are completely alone. I'm currently on a five year project. No one can do as many as a dozen of them in a career. These factors make it hard for us to learn by experience.
Programming isn't the only profession to face this challenge. My wife is a design educator. She encourages her students to keep a "reflective practice journal". Keeping a professional diary helps them to learn more lessons from their experience.
Another thing that helps is pay attention to each other. I like to attend the meetings of other projects. When I have less at stake, it is easier to observe the dynamics at work.
Donald Schon pointed out that professionals do not really have a body established theory which provides answers to all the problems they will be asked to deal with. Rather they improvise on the basis of a repertoire of techniques and experience in using them. This is true even in mature professions like civil engineering. To improve, they must not only learn more theory, they must also think about what they have done. He described this as "reflective practice". See
Schon, Donald. (1983). The reflective practitioner. New York: Basic Books.
His talk "Educating the Reflective Practitioner"
is available at http://educ.queensu.ca/~ar/schon87.htm [1].
That is what my blog is for. Elsewhere, I have a TO DO list. This blog is my TO THINK ABOUT list.