Keeping an eye on the Output Build window
Whenever I compile my ASP.NET apps I watch the output window very closely, and whenever I see a line that seems longer than the others, even if its a successful compile, I go back and check it out, usually making changes to get rid of it. Those "longer lines" are always of benefit to me. Usually they'll mention "unreachable code" or "variable declared but not used" or something, but in my move into inheritance this week I found the most excellent "long line" listed below. Wow! Talk about instructive! Seriously.
\\cutter\vsnet\proj\proj.WebUI\Controls\ClientReqsHeading.cs(25): 'proj.WebUI.Controls.ClientReqsHeading.Page_Load(object, System.EventArgs)' hides inherited member 'proj.WebUI.Controls.TextLinksHeading.Page_Load(object, System.EventArgs)'. To make the current member override that implementation, add the override keyword. Otherwise add the new keyword.