Ask HN: Resources for CS and software eng for a sharp middle school dropout?

6 points by vector_spaces ↗ HN
I have an adult friend who wants to learn about CS, mainly for fun but also to improve professional prospects. She dropped out in (American) middle school. She's incredibly sharp but suffers from math trauma and general anxiety about school and academia -- so denser texts, stuff that assumes significant math preparation, and traditional classroom settings or resources intended for those aren't ideal.

She responds very well to videos, shorter written resources, interactive and project based work. The problem we've been finding with videos is that lots of the codefluencer stuff that comes up in a naive YouTube search seems to be either straight up wrong garbage, highly superficial, or expects lots of math preparation.

Any suggestions are appreciated. So far she's doing well with CS50 video lectures and Khan Academy

Also interested in resources for people mentoring folks learning CS/software eng -- that's the position I'm in!

13 comments

[ 0.25 ms ] story [ 38.5 ms ] thread
I don't have specific recommendations, but building off something she is interested in IRL would be beneficial.

For instance, a side interest in restoration and manipulation of images and TV shows got me into vapoursynth, which got me into Python and ML.

Try this website: https://teachyourselfcs.com
Thanks for the suggestion, I'm aware of this resource but it's not what I'm looking for -- for example, it recommends SICP and Berkeley's 61A lectures for learning programming.

I'm very familiar with both resources -- the former is how I learned to code, and I actually took the second class in person at Berkeley. But I have a math background, and mostly don't have math trauma anymore

This is for a person with math trauma who dropped out in middle school. The goal is to get her comfortable with the ideas and methods of CS, at least enough that she'll eventually be ready to tackle deeper resources like those one day if she wants to. I think introducing those at this stage would be overwhelming and disheartening.

I do like those resources for folks with more traditional backgrounds and preparation though

Not sure how far she makes in CS without some high school level math like pre algebra, algebra 1 and 2. remember that actual computer science curriculum have more advanced math like single and multi variate calculus, differential equation, linear algebra, discrete.

Good news: most software engineer not taking derivative or vector calculation like full calculus or linear algebra taught in CS program.

but you need ability to reason about basic maths if your program has any computation at all.

khan academy is good for the math. dont really need much more.

If she can handle CS50, that's a great way to learn a lot of stuff in a short chunk of time. (I once tried announcing a Meetup for people in my area taking the class. That's one possibility if you're looking for a way to structure your mentoring: organize weekly in-person gatherings for people working their way through CS50.)

The big advice is to eventually start uploading your code to GitHub, so you can get your first entry-level job and start getting real-world experience. (Which is also educational, and beefs up your resume.) You can even do that with your final project for CS50.

The other general advice I always got was to learn one language really well. (Which gives you a sense of how far a language can stretch.) So I was also going to recommend the "Head First" books, which have lots of pictures with funny captions while giving a nice succinct summary of how a language works (with exercises).

I totally forgot about those Head First books -- those helped me a lot when I was first learning this stuff too. I love all of this advice, thanks!
- python repl, or similar iterative environment.

- chatgpt plus.

- curiosity.

there’s never been a better time to learn than now!

I never get tired of recommending "Introduction to Computer Science and Programming with Python".

www.edx.org/course/introduction-to-computer-science-and-programming-7

For the Math side, I do recommend: https://schoolyourself.org

Hope that helps

> naive YouTube search seems to be either straight up wrong garbage, highly superficial, or expects lots of math preparation.

Like what? Which youtuber? Which channel? The blacklist is so vague that I think helpers here need more examples to narrow down the scope.

Also which portion of software engineering? There are absolutely somewhere do not require any math, but that means ChatGPT is also invading in those labor intense areas because everyone can do it.

i don't mean to be harsh. But it seems like everyone thinks they can easily become a programmer no matter their background. We don't have these kinds of beliefs for doctors/lawyers or enginners but we falsely believe anyone can become a programmer in a couple of months. If you are homeless, learn programming. If you're just out of Jail, learn programming. If you drop out of middle school and is afraid of math, learn programming. Programmers belittle their own professions. Perhaps it is because programming is permissionless , so people believe it is easier. But just because everyone can start a youtube channel doesn't mean you can easily become an influencer. Same for programmers.
We don't have those kinds of beliefs for doctors and lawyers in part because the stakes are different -- a mistake in our profession usually means something breaks silently and nobody ever notices or is worse for it. Or maybe a site goes down or a user sees a strange error message or an app is slow. On the other hand, mistakes from doctors and lawyers can ruin or destroy lives and cause actual suffering. There are exceptions in our industry where the stakes are that high, but even in those settings there are often technical and operational controls to minimize risk and allow newer folks to gain experience safely

And it does seem that programming and some actionable amount of CS can be learned in some months. Maybe the same is true for lawyering and medical practice but I doubt it

Anyway, I find this attitude mostly to be condescending and pointless gatekeeping. It turns out that a CS degree doesn't imply that someone is a strong problem solver, architect, communicator, leader or has deep technical skills, as a college dropout who barely graduated from high school who has now mentored lots of folks with CS degrees

It's kind of awesome & amazing how much better coders work as a team. Doctors are on the line for dealing with patients: they don't consult or make a Patient Treatment Request for every thing they do. Lawyers don't get everything vetter.

But in software we work in teams, and most lines of code get checked over. Most companies expect to be hiring juniors, who, even if they have 4 years undergrad, still have no idea how actually to build software in practice. It's a team effort.

And frankly, at most places, the CS has only a minor bit of overlap with the day to day. I spend more time with juniors flailing trying to understand how Kong and Docker relate than I do with people writing O(N^2) algorithms. Tech has infinite minutia, has endless tech-specific problems we run into. We don't have to train people to be able to take care of anything, to be able to stand alone: we just need to support & guide people who are set up to learn & explore. There's so much twiddling bits until the things start working as desired that experts and novices both have to go through, and just pounding into people's head the idea that it's a journey, that you have to keep going, that you need to look for data (and showing them new ways to read data out) counts more than background, in my view.

It's worth noting that while doctors and lawyers have a long amount of training expected, it's possible to become a registered nurse or any of a variety of paralegal roles in under a year. Unlike these professions, we rarely expect devs to emerge into the professional world fully formed & capable of autonomously leading.

You don’t want to hear this, but your friend needs to finish school. A GED should be the first priority. They can learn programming too. Khan Academy is great.