Codeforces rating system is based on ELO, which is a great system. But divisions cause a bit of trouble with it. Candidate masters are the best od Div 2. They usually get good positions at contests, and that causes them to get a very big rating change. Then they will turn International Master or high Master, which can be bad. Of course when they participate in Div 1 their rating will converge again. The graphs of people who are converging at CM usually get a very big jump at the end, and that is not how the model should work. I'm not suggesting to remove divsions, maybe just twist the formula a bit or something. I don't have many experinece with rating systems tough.
Thanks for reading!