How are production ASP.NET site problems applied in the future?

There are a lot of different things you can use to monitor a production ASP.NET web site for problems.  Some of the most common are logging, perfmon counters and the like.  There is also the method of getting feedback from people using the site when they relay that there is a problem.

The question I would like to talk about is how do you use this information for future projects.

Best Practices

I think the most obvious way is the create a type of best practices document from the learning that you have had in the past.  For example, using StringBuilder if you are going to be dynamically building up strings.

Code Re-use

Another useful method is sharing code that is already in production so that other future projects can use it.  This not only has the added benefit of less development time, you know this code has been running in production and will work correctly and not cause issues.

Analysis

Sometimes you can notice things in production that you are unable to fix.  For example something that would take an entire redesign of the web site to fix.  But these types of things can be passed on to the next project where some of the design decisions haven’t been made yet.  One such decision could be how many servers should handle each layer of your site.  And how many database servers you should have.

Other ideas?

What other things do you do with your learnings from previous web sites?  Do you look at places where you over-analyzed a problem and spent too much time solving something that didn’t need such a complicated solution?  I’d love to hear what else people do.  Does the technology play a role in future sites?  Like would you consider changing to Silverlight or MVC because of something that happened on a previous site?