Programming is quite a remarkable activity:
- It has an extremely low barrier to entry
- You don't need expensive equipment
- You don't need to be in a particular location
- You don't need special credentials
- You can finding information / resources just by opening the internet
- You can learn it / do it independently
- It gives you rapid feedback (which can lead to rapid growth)
- It gives you frequent rewards (which gives a huge boost in motivation)
- It's objective and unforgiving (this is a good thing, because it teaches you how to confront reality)
- It's intellectually stimulating
- It's useful in the real world
- Corollary: you can make money or even build a career out of it
- It's badass (or are you telling me that Hackers WASN'T your favorite movie of all time?)
- Electronics (but this is basically still programming)
- Math (lacks "rapid feedback" and "frequent rewards"; "useful in the real world" is also questionable)
- Go, poker, video games (usually lacks "useful in the real world", sometimes lacks "badass")
- Juggling, poi (lacks "intellectually stimulating" and "useful in the real world")
What you say is absolutely true on a large scale.
When I say that programming is a very "independent" activity, what I'm trying to describe is the fact that at any time, I can think to myself, "I want do some programming", and within 30 seconds, be doing some programming. In particular, I don't have to call someone, convince them that "no, this will be fun", fail, try convincing someone else, succeed, wait for them to head over, etc. etc., by which point my impulse to do some programming has completely disappeared.
You might be surprised how much of a difference this makes, especially for an INTJ like me ;-)