Should I go back and fix work when you learn something new/better?
refactoring
Solution
IMO, this depends a bit on a few factors:
Current project or not - Would this be going back to a previous project to make the change and opening a can of worms to do this? Where I work, there is our current project and while I may learn this and that, I'm not about to go into older projects and create new problems in trying to apply something that I thought would be simple. Another thought here would be to take what is in SourceSafe and move it to Subversion, which may be useful to have just one software for version control but would likely not universally seen as a wise investment of time as most of the developers here are used to using both.
Age of code - Is this code that I worked on recently or would I be spending a great deal of time understanding what I did way back when? While this is similar to the above, my current work project has been going on since June of 2008 so there are things I worked on a year or more ago that really may not be as worthwhile to go back and change.
Scale of change - Is this going to take weeks or just a few hours? This is also something to consider as little changes can sometimes lead to hours of work fixing this and that which become new bugs due to side effects in the change.
Those are a few things that would guide me as well as trying to remember that just because something may seem better, it isn't necessarily something to use everywhere. For example, trying to use a drill on a nail isn't a great idea but if you just learned how to use a drill and want to use it everywhere, then there may be problems where other tools like a hammer or wrench may be much more useful, so don't forget that there is the right tool for the job that can also be worthwhile.
Problem
Considering that we're all constantly learning, we've all got to come across a point where we learn something just awesome that improves our code or parts of it significantly. The question is, when you've learned some new technique, strategy or whatever, do your or should you go back to code that you know works, but could be so much better/maintainable/faster/generally improved and implement this new knowledge? I understand the concept of "if it ain't broke, don't fix it" but when does that become losing pride in code you've already written and what does it say for refactoring.