Over the years, I've tended to push back a bit when I hear people talking about code that uses "questionable" APIs. Things like become: or isKindOf: or even worse, thisContext. You could probably guess that I'm not really fond of the "sends questionable messages" rule in the RB's CodeCritic.
I've seen lots of questionable code that does not include any of these "exalted" APIs. The problem I have with the general theme is that it is a blanket judgement, made without context. There are times when become: is the perfectly correct thing to use. There are times to use them for a while, and then to evolve your design beyond that. What matters is that we all strive to gain experience on when to use these high powered APIs.
Martin McClure and I were discussing just this topic at ESUG. It was he that coined the title of this post. I was noting that one of my favorite past times at these conferences was to sit around and hear the "cool" things people had done with the super APIs. You learn new tricks to try. Hopefully you gain some insight into when it indeed might be appropriate to use something like changeClassToThatOf:. I was positing that this might make for a cool OOPSLA workshop. Each participant submits a one page write up about a novel use of some power API. I was noting that it ought to be like Spiderman's uncle Ben's advice "with great power comes great responsibility." It was at that point that Martin suggested the "Smalltalk SuperPowers, Do You Use Them for Good or Evil?" idea.