I quit CS & programming after I failed three CS courses and left the major before even finishing a 200-level class.

There are a lot of reasons for that; it would actually be kind of tough to highlight just one. Here are some:

- I was in a terrible learning environment at "home" (the dorms where I lived) due in part to the way I was raised by an extrovert family to be a sociable introvert. They didn't really know better, and so I was essentially taught to constantly overstimulate myself and burn out. I was not only getting caught up in tons of social stuff, but I was also nominated to be the dorm floor leader and took on additional volunteer group-oriented duties.

- I was raised with fundamentalist religious beliefs, and the various little points of belief worked well in concert with my avoidance urges. Like I'd avoid homework until Saturday night, and then oh--it's 9 p.m., this'll take at least 6 hours, and I don't study on Sundays, so there's no hope.

- At the time I had some undiagnosed mental illness, which I only found out about and addressed later.

- I had a part-time job in IT that I was really good at, and I ended up compensating for the issues in self-image (or whatever) by pouring my heart into that job. I would go home having overworked myself, and after doing that I definitely had a headache and no bandwidth for homework.

- My learning style was completely different from the teaching style of my professors. In fact it was the complete reverse: Procedural outside-in for business impact on my end, vs. first principles-up for theoretical play on their end. I later realized that I would have had more success by reading the textbooks literally backwards.

(If your learning style is different, every single sentence, conversation, or email is potentially coming at your cognitive blind spots, and thus potentially very frustrating--not many people know this. My professors even tried to convince me that CS might not be a good fit given my goals, but I literally couldn't understand their reasoning and thought they were pretty ignorant for not seeing things my way!)

- Java, the language of our CS department, was completely new to me, it was generally new and hot, but I naturally work better with underdog languages due to the random configuration of my psychology from birth or near-birth. I would have done better to negotiate with professors to use something else that was older and way worse, but I had no idea that might have been an option, nor did I even know that was a differentiating psychology thing in general.

Anyway, the overall event of quitting learning programming was completely shattering to my belief in myself, and even my belief that I could learn to code.

I didn't go back to serious programming until something like 7 years had passed, and then only started by dipping my toes in via small edits here and there, and some templating languages like TXP Tags for Textpattern CMS. Up to that point, any time I needed to program I would either write a dead simple script, or use some orthogonal app (MMB/Multimedia Builder, Flash, etc.), or find some solution off-the-shelf.

This all still makes me very sad because I was very good at programming in Basic/Pascal/C/C++ in HS, and I could write system scripts all day long, and I basically stopped all of that.

On the bright side, in my last working day as a CS student, I walked into another department, told them I was into computers but looking to quit CS, and within minutes I had a key to a professor's office with a login on their high-end graphics workstation, and a catalog in my lap to order whatever Dell server I wanted for my own use. Thank you liberal arts! :-)

That's the best I can do for now, hope it's been worth sharing...