Absolutely, to be a top notch software developer, learning to code trumps a CS degree. After all, you can get a degree but who knows how much attention you really paid in class. Further, learning to code goes beyond what is taught in a CS degree.
However, this isn't an issue of theory vs. practice. It's like saying, would you rather have a surgeon that learned surgery the traditional route with 4 year degree heavy in science, specifically biology classes and then went to med school, etc, or a self taught surgeon that learned at a field hospital during a war? Obviously, both would have to learn the basics of surgery itself, that is the actual cutting, the sewing, etc. The former is likely to have a far better grounding in a wider range of subjects to treat the patient, even if the a particular of the latter might be better at the actual cutting and sewing.
When one graduates with a CS degree, they might not have yet learned how to code, especially in a professional setting in a group. A coder can learn everything that a person with a CS degree learned, but that is basically going to each of the CS classes. Sometimes the hinderance to getting the degree isn't the CS classes, it's the other classes required for an undergraduate degree. In either case, to be a very good coder, you basically have to master both the theory and the practice.