by kirillrogovoy on 7/12/22, 6:43 PM with 55 comments
I saw a lot of people I knew start learning how to program. They did it in all sorts of ways: free courses, paid courses, books, schools, etc.
Almost all of them quit within weeks or months.
An interesting observation was to hear them describing why they quit too abstractly, too broadly. "I didn't like it." "Couldn't make the time to learn." "Too hard." Things like that.
I've always felt that there's so much more behind those answers. So much we could learn about why programming is so hard to enter, apart from the inherent domain complexity.
What's your story, or that of someone you've seen quit?
by akagusu on 7/12/22, 11:21 PM
So they start teaching you about IDEs, git, tests, docker and lots of stuff that is completely unrelated to learn how to program.
Think about it. Why should someone learn about testing code if they don't even know how to code?
Sometimes, all people need is to learn enough programming to make their life easier, like automating Excel spreadsheet stuff or PDF stuff.
Unfortunately, there is nobody to teach things like that.
by cafard on 7/12/22, 8:47 PM
Then some years later, I found that there was data over here that I needed over there, and that writing a program was going to be a lot more efficient that printing it out and typing it back in. I taught myself assembler, and went on from there.
by s1k3s on 7/12/22, 7:31 PM
by VoodooJuJu on 7/13/22, 12:13 PM
I don't have a natural aptitude for this stuff. If it takes you 1x of grinding to learn some programming thing, it takes me 4x. Although aspects of it can be enjoyable, like when a whole project neatly comes together, or when someone gives me money for the app I made, I find it to be quite a soulless and artless "craft".
Nonetheless, I fell for the learn to code meme, I'm pretty invested at this point, I'm not half bad at it, I need some money, and this is the only lucrative skill I have, so I can't quit now.
by Ologn on 7/12/22, 11:39 PM
I worked in IT for a while and picked up some programming but didn't do much at work for a long time. Then I started going to college at nights and on weekends and now I am a programmer.
by ungawatkt on 7/12/22, 8:24 PM
- Very little initial benefit, especially depending which language you choose.
- Small mistakes are not forgiven by the computer, which is demoralizing.
- Very non-intuitive feedback loops and error messages
- A semi-requirement of going down rabbit holes at the drop of a hat (I wanna write python to download a csv, wait now what's a virtual environment??)
- learning and suggestions from a friend in industry will give you a very direction that's not always helpful ("ok now install git")
- abstraction is often unintuitive, and learning programming requires some heavy compartmentalization early on, or you'll be stuck trying to learn cpu architecture fairly quickly
- the puzzle isn't fun, and if programming isn't somewhat fun or interesting to someone, it's a hard sell
by gravitate on 7/12/22, 7:07 PM
by otras on 7/12/22, 8:18 PM
In retrospect, I think the main problem was motivation, in multiple ways. It was during a period of "I don't really know what to do, so maybe I'll try to learn to program, or maybe learn a little Korean, or what if I got into...", where I was exploring broadly, but without clear goals or much practice learning on my own. At the time, I didn't even know what I wanted to major in! Because there wasn't much real interest backing the initial exploration, I backed out when I ran into some resistance and it required a little more effort, and I instead moved on to the next thing (spoiler alert: I also didn't learn Korean). I wasn't very good at putting in the work it takes to learn hard things, and I hadn't had a lot of practice studying, though I somehow passed my freshman year classes without good study skills.
I think that starting with the broad, amorphous goal of "learn to program" didn't include tangible goals that I think would have helped motivate 19-year old me, like building an actual website, writing a useful app, or making a basic game. As another comment says, multiplying numbers for the sake of multiplying numbers wasn’t enough. Coupled with the aversion to putting in the work, I don't think there was enough to motivate me to keep going.
When people ask me about learning to code, I try to think of ways that they can leverage their interests — maybe if you love cooking, you can learn enough to build a very basic cooking app. You'll run into some tough spots, and having that inspiration can help you get through them, hopefully until you're well practiced in getting through those tough spots. Better yet, work through it with other people and get through them together.
When learning to program later, a large part of the motivation was to make a career shift, and it was much easier to direct my energy and focus, aided by a little more maturity and practice learning as well. There was nothing quite like fielding customer support calls to help motivate me to study after work, and I stuck with it much better.
The joke is truly on me, because I now really enjoy both programming and learning.
by bergenty on 7/12/22, 10:47 PM
by lofatdairy on 7/12/22, 7:42 PM
I'll add on here that it's not like my classmates were using esoteric learning languages like Racket (god bless the poor souls at NU), they were using Python, with plenty of helpful resources online and more experienced classmates. However, Python too has its quirks and reliance on perhaps unfamiliar concepts like packages (which means a new student will also need to learn how to use pip, why they don't need to use pip for the std library, etc). It's probably because of this that things inevitably get lost in the wayside, because you need to teach so much at once and the knowledge doesn't neatly project onto a linear timeline. It really is more similar to learning a new language, but add in some bootstrapping issues, as well as the fact that if your grammar is wrong or if you misspelled something then your entire construction is unintelligible it's not often obvious why.
by togs on 7/12/22, 11:15 PM
by ilovhn on 7/13/22, 3:05 PM
by CrazedGeek on 7/12/22, 9:04 PM
by dc-programmer on 7/12/22, 9:22 PM
by dormento on 7/13/22, 7:07 PM
These two things do not necessarily map neatly into each other.
Could it be that people had an expectation to build a working product/service, and not learn 2's complement, operator precedence and whatnot?
by themodelplumber on 7/12/22, 7:52 PM
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...