1. Executable code provides a fast feedback loop that doesn't require instruction. That's hard to find especially for mathematics.
2. You don't really have to understand what you're doing in order to build something. So you can do useful stuff -- which is great for motivation etc. -- and then use that stuff to probe and gain a greater understanding.
3. The psychology is favorable to self-study because there aren't long periods of self-study before the material becomes truly useful.
4. A lot of CS is just more difficult. No one asks why Analysis is more difficult than Calculus -- it seems like a silly question on face. Maybe programming vs CS is similar.