You gotta be smart and able to think abstractly. You are building virtual legos and keeping that all suspended in your brain and that's hard to do. I hear people throwing out general terms like literacy and communication. Not really. There's a certain type of brain that's built for programming if it comes easy to you. If it doesn't come easy just bail now.