Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: Why did you quit learning programming?
20 points by kirillrogovoy on July 12, 2022 | hide | past | favorite | 55 comments
Maybe, HN is not the best place for this question, but something tells me there will be interesting stories behind it.

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?




Unfortunately, the majority of resources available to learn programming are made by professional software developers and they assume what people using their resources want to be professional software developers too.

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.


I have a similar gripe about a lot of "Learn Web Dev For Beginners" courses I've seen. Many of them start out with "Ok, so here's this thing called HTML... ok here's this thing called CSS... ok here's this thing called React..."

No no no no no. You don't just throw tools at people who may or may not have had a background in software development. Yes, they may be able to pick up the set of skills to build a React app, but do they have the skills to be good software engineers? Do they know what's going on under the hood when a React app is being built?

I'm not totally against this method of teaching, but I think there's a perverse incentive to sell these types of courses to absolute beginners when in reality they should be marketed to people who at least know how to program.

This stuff results in a market flooded with candidates who can't do fizzbuzz, allegedly. I seem to keep hearing that there's "tons of jobs" but not enough talented candidates, and though I am skeptical of this narrative, if the narrative were true, the industry itself has no qualms in perpetuating the cycle.


Almost 50 years ago, I took a course in Fortran IV. Input was a pain, for the options were teletypes or punch cards. The class was interesting, in a puzzle-solving sort of way, and I got through it OK. I think the most interesting task was to create a craps-game simulation. The class was fine, but I was not aiming to be a mathematician, scientist, or casino operator. I lost interest.

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.


My friends quit because they can't see the value of programming immediately. You start by learning variables, how to multiply 2 numbers, how to print text to the console etc. So they fail to understand how that can be useful when their perception of programming is building cool video games, complex software or websites.


my dad was always insistent that learners need to get tactile results as soon as possible. Don't show them sheet music, have them strum a guitar. Cue the Mathematician's Lament. For a budding video game developer, working on mod scripts would be more immediately fruitful perhaps.


Agree. I was 12 when I first discovered programming, and it was through JavaScript. And the fact that I could instantly see the result of what I'm doing by running it in a browser (which everyone already has), it's definitely what got me really hooked into this.

As a "mentor" for some of my friends, I feel like it's a failure on my side, since I wasn't able to quickly show them what you can really do with programming.


I'm a few years in and I haven't quit, but I probably should have.

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.


Every craft is mostly boring and tedious repetition, with slow improvement of skills over time in the background. That's why people celebrate the best craftsmen - they know that it takes a special person to be able to enjoy such work, and reach mastery in it.


The local kid who knew about computers told me that Commodore 64 games were mostly written in machine language. So at the age of 12 or so I went to the library and flipped through the Commodore 64 Programmer's Reference Guide chapter on machine language - what the C64's memory map was, what registers the 6510 processor had, and then a series of steps in assembly language to display an A on the screen. This was fairly over my head, and my mentor, who was getting busy with high school by this time, didn't have much luck explaining it to me.

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.


From my observations, a non-exhsustive list:

- 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


Programming turns many people off since it’s so unforgiving. There is no room for getting things a ‘little bit wrong’ like in art. Most art allows for small errors - errors sometimes add to the aesthetic even!


Yes and this unforgiveness starts at the very beginning when you set up your dev tools using conflicting or outdated instructions.


But at the same time, the feedback loop on programming is incredible. If you're wrong, you'll know right away.

What I have found more frustrating is learning something with longer feedback loops. That's kept me from doing hardware.

But I agree, this doesn't compare against things where there isn't a definite right answer.


The feedback loop is what got me hooked to programming. If it wasn't for that, I'm not sure what I would do. I used to do more writing, and wasn't very confident in my writing, was it any good? I wouldn't really know, no feedback whatsoever. Sometimes it would feel like you just wrote stuff and it went into a black hole.

With programming it works (... or it doesn't). Of course, there are abstractions and clean ways to write a program so in the end I think my prior experience in writing has benefitted me in programming.


I disagree.The feedback loop on programming is horribly slow, at most bearable.

Where are we from a feedback loop of a woodworker where when he cuts something wrong he can see it while doing the cut? I have to wait for a 2 to 30min build with end to end testing and deployment to hope that I'm right then two weeks from now a person with Opera starts using the application and proves that I was wrong.


Either you find it right away... or once it's deployed and you get asked to fix it outside work hours.


>If you're wrong, you'll know right away.

Uhhh...wouldn't that be nice.


It still beats getting it wrong in other forms of engineering.


The unforgivingness of math combined with the complexity of languages.

Math is a prereq not because we use it, but because people who don't have the patience for high school math won't have the patience to learn programming.


I think about this question a lot, because although I learned to program after college, I had a false start during one of my college summers. I tried to follow the intro JavaScript section of Codecademy (this would have been ~2011) on my own, and I fell off the learning wagon.

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.


> In retrospect, I think the main problem was motivation,

I think this is key, as it's fundamental to learning anything.

Some folks "learn to learn", and that's all well and good.

Most folks, however, learn to do. They have some task they want done, so they learn what they need to in order to do that task. We can exempt folks taking courses solely to meet a degree requirement, but that's also a goal oriented learning experience. "Need to pass to graduate. Need high grade for GPA, but that doesn't mean I actually care to learn Psychology 101."

Aimless learning is rarely rewarding. While I was fascinated at a general level with computers, once I learned the basics, pretty much everything else was self-taught with some goal in mind.

With me, I was always writing crummy little games. Games present all sorts of interesting implementation problems. And there's no better way to learn than to write something really badly! My friend and I in college were trying to do our own Roguelike, and went through two platforms, and four languages, rewriting and standing on the shoulders of, well, not giants, but the ruined wasteland of our previous attempts each time. Learned a lot.

Also, there's nothing wrong with someone learning something to then find out they don't like it. Computers are awful, horrible creations and demand a certain mindset to wrangle, and they are not for everyone to be sure.


> My friend and I in college were trying to do our own Roguelike, and went through two platforms, and four languages, rewriting and standing on the shoulders of, well, not giants, but the ruined wasteland of our previous attempts each time. Learned a lot.

The first time you code yourself into a corner is an interesting experience. It can be frustrating but it's almost always lead me to big realizations about larger concepts around/about how to design a program.


I quit because I didn’t like programming anymore. It’s too detail oriented, is constant work when I prefer bursts of work and doesn’t let you work directly with people on people issues enough. Moved to management around 5 years ago and things have never been better.


I'll chime in to give a few anecdotal accounts of people I know. A lot of them have more of a biology background, and only took CS either out of an interest in computational biology research or against their will entirely. Generally, these are smart people with pretty solid math backgrounds, so I think the biggest problem for them was the matter of expressing themselves through code. It's generally not that intro CS problems are hard, but they were running into the problem where, if the program failed, it was unclear to them _why_. Even looking at the stack trace doesn't always helps these students, either because the stack trace expressed the common issue in a technical way, or because the stack trace points them in an unhelpful direction (e.g. not directly at a line in the code that they wrote that was wrong). While it's clear to us that the first step may be to check an unfamiliar error against stack overflow or use a debugger, these are learned skills too, which are often not taught even in intro level classes. There's also the learned skill of reading documentation and knowing what builtins are available and how they are supposed to behave, which gave some students trouble when using MatLab since MatLab functions are poorly named and are implemented inconsistently, the documentation is oftentimes unclear, and it's often their first time using a vector-based language (without realizing it) which adds a new dimension to behavior.

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.


I realized I don’t like to program practical things. Also, everything useful has been made. What else do we need to program? Most of our problems now stem not from lack of tech but from a lack of social will.


Everything useful has certainly not been made. There wouldn't be any jobs in software development if that was true, would there?

Myself, despite being really good at coding, I don't much like it. But I do like solving problems and coding is a particularly great tool for that. Imagine a toolbox that has every tool and the only bound is the time you're willing to put into using the tools.


> Everything useful has certainly not been made.

Name one thing that hasn't already been done to such a degree that it wouldn't be worth the time for an individual to work on with their own resources.

> There wouldn't be any jobs in software development if that was true, would there?

If the economy was only about supply and demand, that might be sound. The economy, however, is not a closed thermodynamic system, but an open one. Marketers know they can create artificial demand by convincing people to buy or subscribe to things they don't actually need. Easy money from venture capital creates business opportunities that wouldn't otherwise be viable or sensible but can line people's pockets in the meantime. Human attention and relevance churns, so every year there's another version of essentially the same things that have already been made because eventually the old thing will go out of style. And finally, there's business owners and executives who simply don't know better, are living in the past, and think that they need to write more of their own software than they actually do.

To an extent, I agree with you, but I have a beef with our industry perpetuating the idea that we can all strike it rich. It's reminiscent of the narrative that everyone has a chance to can come to Hollywood and be a star; after all, there's tons of movies and shows that haven't been made yet. It's certainly not untrue, but it's not that simple. Someone who wants to build the next "thing", almost no matter the scale, will have competition with more resources and financial backing, and the likelihood that their app in particular will take off is very, very slim.


> Also, everything useful has been made

"All good music has been already composed..." LOL


All I can say is, I feel sorry for those who learn programming for the money, without being attracted to it. Most of them are gonna have a very hard time.


Don't feel sorry - the money gives them the ability to pursue their true passions, like supporting their family, and other unprofitable things.

Similarly, don't feel sorry for the wastewater treatment plant worker. He's not doing it because he's passionate about cleaning up your shit, he's doing it for the money, because he's passionate about supporting his family.


Honestly, I hated the people around me trying to learn the same. CS was my original major in university (around 2011), and every interaction I had with my classmates was bizarrely bro-y and negative. Made me afraid that that type of person would be who I’d be working with for the rest of my life, and the thought scared me enough to switch majors into a more businessy/managerial direction.


Interesting! I have degrees in CS and economics, and my experience was that the business school was dramatically more "bro-y" than the CS department. Not doubting you, just really surprised!


My school's CS classes were full of hot, cheerful girls with colorful hair. Reality was I ended up working with hot, cheerful dudes with colorful hair.


At the time I attended, the CS department at my school was still a subset of theoretical math. So my classmates nearly all were polite, if shy, math majors. If it was more oriented towards the brogrammer culture, I’m not sure I would’ve stuck with it either


Anecdotally, a lot of people do fine in the 101 class up to the point where functions (imperative paradigm) are introduced. Thats the threshold for the level of abstraction where people start feeling frustrated. In college, I tried help some of my friends who got stuck here but did not have much luck helping them build the right mental model.


Imperative functions are something people can't grasp? I... um... <boggle>

In math, we introduce functions all the time. I define f(x) to be whatever is handy for a particular problem, and then I work with f.

By any chance, do these people have much of a math background?


Nothing past calc I I’d reckon. I think one of the issues was how function calls can seem arbitrary at first (esp in python). You have imported functions, user defined functions, built in functions, etc. so when students see a function call, they aren’t confident in knowing where it came from, causing distress.

Most students really dislike anything that appears arbitrary which I think plays into this. One pre-med student I knew despised math after being taught 0!=1 because it seemed seemed completely made up to him and broke established rules.

Part of the onus falls on instructor to clear up areas like this (e.g. explain the cardinality of the set containing just the empty set is 1, 0!=1 allows for many formulas to be expressed tersely, etc). The other component of this is that the students who dislike ambiguity self select out of the program.


What do you mean by 0!=1 here? It reads as the integers zero and one are not equal, which is true. I'm struggling to guess what established rules that could break.


> It reads as the integers zero and one are not equal, which is true

That's not what 0!=1 means in math, the ! means factorial, which is to multiply by decreasing positive integers. Here's the definition:

n! = n x (n -1) x (n - 2) x . . . x 2 x 1

So, for people starting to learn calculus/math, being told that 0!=1 makes no sense


And that's why we need spacing. 0 != 1 is very different from 0! = 1


Right I forgot my audience


Ah. ! for factorial was not an obvious parse. I suspect it has alternative meanings in mathematics as well.


There's "programming", and then there's "building apps".

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?


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...


[flagged]


"I'm personable".

"That's what autistic guys like you are."

...

As a great man once said "I'M A PEOPLE PERSON!!!"


> I didn't keep dating her, but I don't blame her for thinking that way.

You should, that isn’t OK. If she really said that, she’s an asshole. Fuck her.


It might not be OK, but if I had been in her position I might have thought the same. The work we do is often thankless. I know a guy who describes it as "building cathedrals on quicksand from blueprints drawn on bar napkins". We routinely outlive our work, and most of us are invisible unless something has gone wrong and management wants a fix -- or a fall guy.


"If I wanted to, I could make more money faster as a stripper."

> Average stripper salary $50k

> CS grads out here accruing $1m in 5 years

Ya I think she was just rationalizing her inability to complete her major...


You're comparing average strippers with the top percentile coders...


It doesn’t really look any better anywhere in the bell curve.


All I know is that I dodged an ICBM when I dumped her.


Whoa! It takes a lot of directness and a bit of self-deception to put it like that. :D

When I was studying, we would have nine guys for each one girl learning CS, and it was fairly hard for the girls to fit in terms of actually learning things. Some of them would show real interest for the subject, but they were being more or less alienated when it came to working on projects in groups.


I'm kinda surprised, if you don't mind me asking when roughly did you attend college? Nowadays it feels like almost the reverse. CS at my school is considered a fallback option in the engineering school (CS in general certainly can be hard but my school let you get by pretty light with electives). Not only that but I know several students with ambitions for medical school switch to CS since the money in tech is so good.


it's the only thing most guys like you are good for

You clearly paraphrased her quote beyond recognition.


The last comment is pretty trashy




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: