I've gotten quite interested in coding katas in recent months. I believe they are a great way to hone my programming skills and improve the quality of the code I write on the job.
There are numerous places where Katas can be found. like..
http://schuchert.wikispaces.com/Katas
I've found these to be excellent repositories of Katas... my attempts at some of them have been been immensely rewarding.
However, I feel that all the Kata's I've seen so far have one short coming. None of them seem to allow me to practice refactoring bad code. It's great learning how to write clean code the first time around...but in my current job, I don't have too many opportunities to write new code. Rather I'm often battling against legacy code and trying to figure out how to refactor modules, eliminate dependencies, and reduce coupling.
As such, I'm on the look out for a couple Katas that I can use to hone my skills of refactoring legacy code and turning it into clean code.
Does anyone know of any that already exist? I know I get a lot of practice at it while I'm at work...but I'd like to hone my skills to the point where I'm able to quickly see how to break apart dependencies and separate concerns in classes that do far too much.
I don't know of a site that catalogs them directly, but one strategy that I've used on occasion is this:
When you find a part that was especially challenging, throw away your work and repeat it a couple times to reinforce your skills.
This doesn't just practice refactoring, but other skills like code reading, testing, and dealing with build processes.
The hardest problem is finding a project that you're interested enough in to keep working in. The last one I worked on was a python library for genetic programming, and the current one I'm working on is a IRC library for Java.