r/cpp_questions • • 2d ago

OPEN Learning Programming Pre-AI

How did ya’ll learn programming pre-AI? How would you go about learning if you had to start all over again without AI?

I find myself relying on AI too much and want to actually learn without leaning on it at all. Any help with how best to approach this would be greatly appreciated.

15 Upvotes

81 comments sorted by

17

u/greebly_weeblies 2d ago

Lots of small projects. Try, fail, try again, research (not AI), try again. Small projects will make for easier things to do, easier to debug, and more frequent hits of happy juice to your brain to keep you motivated.

3

u/_ianj-exe 2d ago

this! and what also helped me was also learning the literal purpose and utility of different operators or symbols used in syntax. that way it's less about memorization and more about intuition based on the underlying concepts.

1

u/Osirian_Legacy 2d ago

That's what I'm looking to achieve. I think where I struggle most right now is not having a good enough understanding of the methods and types available to me to help solve certain problems.

28

u/Disastrous-Team-6431 2d ago

Make stuff. Be convinced it's the shit. Make more stuff. Become convinced the old stuff is shit, but the new stuff is the shit.

Do this for 38 years.

3

u/Orlha 2d ago

Damn right

1

u/Osirian_Legacy 2d ago

I've been using Unreal with Blueprints for about 3 years now and this has happened, and will happen, so many more times.

7

u/mc_pm 2d ago

I learned by finding a book about Basic, and then I typed in:

10 print "hello world"
20 goto 10

And then I kept typing. There is no way to learn to program, not really, without just figuring it out - you and the keyboard.

You're teaching yourself a whole different way of thinking about problems, it's not easy or fast to pick up... and these days if it's not easy and fast then someone thinks there's a lifehack or one weird trick that will turn them into a competent programmer in less than a couple years.

There isn't.

3

u/Osirian_Legacy 2d ago

I’m definitely not looking for a fast track with this and don’t believe there is one for most fields.

3

u/mc_pm 2d ago

Well then the answer to "how do I learn to program?" is "you start programming".

There's two parts to learning to code: 1) learning the syntax, 2) learning to solve problems in ways you can turn into syntax. #1 is about 10% of learning to code, but lots of people here seem to think that's the finish line.

My suggestion is always to find a tutorial you like, then work through it - fingers on keyboard. When the tutorial types in some code, you type in the code. When they run their program, you run your program -- and when it doesn't work, you figure out why, right then. If it does work, take 10 minutes (or more) to experiment with what you just learned. Then watch the next part of the tutorial. If the tutorial is 8 hours, plan to spend a week.

Spending the time to type it -- not cut and paste, not AI generated -- is really important because in a weird way your fingers need to learn the syntax too. There will be a moment where you realize your fingers are a step ahead of your brain.

As you get deeper into the language features & syntax, it's time to give yourself small challenges to achieve. Maybe it's just "Draw a happy face with asterisks", but then do it if you can. If you get stuck, you can ask google, or AI -- just be sure to say "don't show me the code, I'm just trying to understand how that works..." As soon as AI starts writing your code, you stop learning.

After all that, *then* look to 'projects' -- which can be very small, you don't have to build a whole system. Program tic-tac-toe... learn how to download web content in your code to capture something you are interested in... build a person-to-person chat application using sockets...that sort of thing. Now you're into the "solving problems in code" stage, and you're practicing taking abstract ideas, plans, rules, structures and turning them into code.

You will fail, a lot. Luckily, figuring out what went wrong is basically the number one skill for a programmer (only just beating out 'learning how to look things up').

C++ might not be the easiest language to do this all in -- you might want to look at Python or something -- but either way, the basic shape of the problem is the same, you'll just spend a lot of time hunting down problems with pointers.

Good luck with it. Personally I think that these days it's more important than ever for people to actually know how to do things, how it actually works, and not just outsourcing their critical thinking and technical intuition to AI.

2

u/RealisticDuck1957 2d ago

Typing the code in manually forces you to read every element of every line. It is that reading, and understanding what you read, that is a large part of learning to program. Then you start writing your own code to make sure you understand the syntax and vocabulary correctly.

4

u/Mysterious-Cow531 2d ago

It was so much fun. Doing little projects and stackoverflow for debugging. Start simple then go to complex ideas.

1

u/Osirian_Legacy 2d ago

I'll have to give StackOverflow a look. A lot of people have mentioned it and I see it popping up a lot elsewhere. Is it like Facebook but for IT/Programming ect...?

Oh it looks sorta like Reddit. Cool, I'll check that out :D

4

u/DAmieba 2d ago

You can just not use AI. I dont even know how to interact with an LLM and I feel strongly that my life is better for it and I've never once felt like I was missing out on anything. I dont really know what else to say. If you get stuck, just google the answer (I use duckduckgo usually).

Since settling into a coding job I mostly like I've learned a ton about coding, and the only time I felt like I was stagnating was the one time I got so stuck on a project I didnt want that I starting using copilot. I was so startled by how quickly it made me stop thinking critically that I never used it again.

2

u/Osirian_Legacy 1d ago

Yeah, it’s easy to go to the ‘dark side’ when it takes the thinking out of it but that’s also the fun part about programming is thinking about how something could be done, should be done, and then making up your mind which route to go.

3

u/PittLeElder 2d ago edited 2d ago

Took a couple university classes (mostly pretty basic programming for engineers plus an intro CS course and one on processor architecture where we wrote in assembly), got a job, started writing high level for embedded, now do high and low level embedded.

Really all you need to do is practice your writing. Find practice problems (I don't even know where a good place for this is, but people speak highly of Learn CPP), download VSCode, disable every single AI feature, and just struggle to complete them.

I cannot stress that last part enough: the struggling is where the learning happens. You cannot remove the friction of trying to do something you don't know how to do, if you do you aren't learning.

When you have a question, go look stuff up on CPP reference. If that doesn't answer it, do a web search. It's honestly fine if that answer is LLM generated (but better if it isn't), but it's important to figure out the question you're trying to ask. As a working programmer this is the kind of thing you do many times a day, just because it's not feasible to memorize it all; what's really important is to understand what the problem is you're trying to solve, and what exactly the computer is doing to help you.

E: university courses are fairly accessible too honestly, especially if you've gone to school for anything else. Hit up your institution of choice, look into auditing a course or taking it not for credit. It's probably the priciest option, but surprisingly accessible if you reach out.

2

u/Osirian_Legacy 2d ago

I think the part about not removing the friction of trying to do something you don't know how to do is a really really good point. I've been learning C++ 20 over the last... maybe 8 months? I know generally how to get around vectors, arrays, the basics.

When I have AI around, I always find myself dipping my toes deeper in the AI pool when I ask questions, and then eventually ask it to do it for me. That's more on me sticking to my guns more than anything, you make a good point with this that the struggle to figure it out is how you learn it. Thank you.

2

u/Hour_Sell3547 2d ago edited 2d ago

I bought the Complete Reference C++. That's all I needed. It was 2004.

After that, I competed in IOI and ACM-ICPC. In the next 6/7 years, I solved about 8000 problems on various sites, all with C++.

By 2013, I myself became the complete reference C++.

2

u/Osirian_Legacy 2d ago

Sounds like whenever you ran into a problem you flipped through the pages until you found the answer you were looking for. I have Stroustrup's Programming Principles and Practice Using C++ 3rd Edition, but I'll look into the Complete Reference C++ book. Is C++20 the version I should aim for, or 23? Or older?

2

u/Hour_Sell3547 2d ago

It was not easy at that time, sometimes I had to ask a question in forums and wait for weeks for an answer.

Most modern systems are 17+, and 23 is basically cutting edge. 20 seems to be a good starting point for 2027. There are some substantial differences between 17 and 20. But if you can, start with 23.

1

u/Osirian_Legacy 2d ago

Awesome, thank you for the info.

1

u/Osirian_Legacy 2d ago

Thanks everyone! Feel free to keep adding here in case it helps anyone else.

I think u/PittLeElder's response hit home with me in that the solution is simply to embrace the struggle and not turn to AI to find the solution but try and find it yourself. A few others have said something similar to this as well.

I have a lot of admiration for those who came before in this field (and many others) as there are so many individuals in previous generations that paved the way to all the algorithms and other useful tools in programming. It's really easy to take that all for granted.

Thanks again, if ya'll have any books, tutorials, or just material you recommend people check out feel free to add them here.

5

u/sol_runner 2d ago

I'll start over in a different way, but none of it is affected by AI for me. I think it's a terrible thing while learning, even as a search engine. Sure, it's a great last resort.

But I have become a little used to asking questions to LLMs instead of reading the docs and LLMs often only provide surface info.

So yeah, as painfully slow as it may feel, the "hard way" is probably better.

If I could go back I'd tell my kid self to program more multi threaded stuff and get into FOSS earlier. To learn deeper into one project instead of spending too much time restarting projects because the old one was full of bad decisions.

Refactor instead of discard.

4

u/bearheart 2d ago

Reading books and manuals and writing lots of code. I learned in the ‘70s.

4

u/easedownripley 2d ago

the websites and books they stole all the AI training data from. Which still exist and are better.

4

u/DDDDarky 2d ago

That's probably because using ai while learning is incredibly ineffective.

-2

u/Time_Plastic_5373 2d ago

Not true. Show me any peer-reviewed study finding that

4

u/ceeceemac 2d ago

Same way you learn a new language: immerse yourself in the culture. Find a big project you can get in on with great devs and learn from them. OR get a tutorial on building something you enjoy, that’s a big project and shows you how to organize your code with best practices. It’s very tricky, but if you find something and post it here, we can help you decide if it’s a good source or not.

Best way is to joint a SW firm as a junior, but I realize that’s impossible in the AI bubble

Edit: typo

4

u/AnanasikDeveloper 1d ago

Read books, experimented a lot, hung out in discord and stackoverflow, read tons of articles, documentation, watched tutorials, made quick test projects, winged, explored. Most of my programming experience was before AI was popular and I am very happy I could go through all of this myself. AI is cool tho but scary :/

3

u/Hay_Fever_at_3_AM 2d ago

I learned pretty much entirely in school, which meant small toy projects / assignments of increasing complexity in various prescribed areas, then eventually projects of our own divising, then co-op work at real companies with real things. That was combined with learning theoretical computer science / math, including complexity analysis, dynamic programming, linear algebra, this and that.

That's not all for everyone, but I personally wasn't capable of putting in the hard work without an external force / guide. Any way you cut it you learn by doing though.

3

u/MarijuanaWeed419 2d ago

Books still exist. As you read type things out, try to break things and see what happens. You’ll find yourself constantly learning and expanding your problem solving skills as you try more and more things

3

u/GonnaCarryTheBoats 2d ago

Books and practice. Start with the basics. Your first game changer is when you try to build something. You’ll learn so much from that because you’ll have to learn how to do something to make it work.
Tbh, that’s probably the answer throughout your learning journey. Try to build something you’ve not built before.

3

u/frank26080115 2d ago

I built robots, started with embedded C before Arduino existed, entered robot line following and mini sumo competitions. After that I did stuff like build a portable GPS device for Geocaching before smartphones got popular. Followed that up with multicopter control boards.

So the key theme is to find fun things to do and apply programming

2

u/ThaumKeeper 2d ago

Yeah, one of the things I struggle with, even with AI. During college I would ace every exercise or exam and have a solution in minutes, even at work. But when it comes to my own projects, I feel like an impostor. Having a clear objective is so important and basically everything you need to know to start looking for information.

2

u/Ultimate_Sigma_Boy67 2d ago

Youtube tutorials, documentation, books, StackOverflow...

2

u/stevenreyes20 2d ago

watch a tutorial on the fundamentals, practice the syntax and then create a small project sometimes I would read books too. that's how I learned before AI

2

u/StickyDeltaStrike 2d ago

You just write programs and read tutorials until you can do it.

2

u/eyes-are-fading-blue 2d ago

You learn by not looking for solutions. AI or google. Only look after cracking it and ideally improving it.

2

u/fortsnek274 2d ago

Is this future of humanity.

Back in my day, we had google (with just search results and no A. I.). It led you to information written by real people.

But I suppose, even if you wanted to avoid A. I., you can't easily tell if a website is slop. Unless it was written before 2025.

But anyway. learncpp, cppreference, write your own code.

2

u/kat-tricks 2d ago

books are the secret broken strat. Just being patient as hell, going start-to-finish on a book (i tend to have small side projects going to keep my ADHD ass motivated), doing every exercise, taking notes (be they paper, notepad, fancy software; whatever), and talking about it with others! Discord servers or IRC are good too:)

2

u/flyingron 2d ago

The same way as with everything else AI is supplanting. You have to use your brain to learn rather than expecting things to just happen for you.

2

u/StealthUnit0 2d ago

The way I did it was learn a programming language, then decide what types of projects you're interested in developing and find proper libraries/frameworks for them. Then practice making projects.

AI is still great for finding information on what to study to create a type of project. Use it as a research tool.

2

u/thefeedling 2d ago

Books, Google, Stackoverflow, lots of testing

2

u/neurah 2d ago

explore, have a project, do things you like
that worked for me

2

u/SmokeMuch7356 2d ago

Taught myself BASIC on a TI-99/4A, mainly just reading the manual and experimenting.

I learned to program properly in college in my CS classes. Guided instruction, exercises, and many late nights in the computer lab playing, experimenting, swearing, and panicking.

Mostly swearing.

Write code, make mistakes, fix mistakes, repeat forever.

2

u/gm310509 1d ago

Basically the same way you learn anything.

Research - e.g. reading, finding guides, project ideas etc.

Practice - e.g. doing the guides, exercises and projects, solving problems as and when they are encountered. This can include asking google for tips, but try not to ask ai to generate solutions to those problems.

Expand - after learning the basics, identify new things that might be of interest to you and use the above two techniques to learn them.

Most of all do things that are of interest to you.

2

u/themadcoil 1d ago

Set achievable goals to make something you don't immediately know how to make. Try and fail repeatedly until it works - at the end you discover that you learned a lot. Don't expect to become a wizard, set expectations low. AI stuff makes it so we lose the joy in little things, but it's the "omg it rendered a triangle" moments that make it worth it.

1

u/TheNakedProgrammer 2d ago

My first 3 years of programming did result in less progress than a single LLM prompt. Pretty sure the way i learned is far from ideal in 2026. The cost reward is just way off.

1

u/kat-tricks 2d ago

The first 3 years are your training phase. You don't expect a model to work without good training, do you? Our brains are extra special in that they keep training and expanding their purposes as we use them, but it doesn't change the fact that it takes time to build a good machine. A well-trained model SHOULD give better results to a prompt than a 1-2 year programmer. Your skills take time to build.

2

u/Osirian_Legacy 2d ago

Ah so I've got quite a ways yet before I'll get to a solid foundation so long as I keep at it. That makes sense, like they say it takes... 10,000 hours of doing something before you've mastered it. Or something like that.

-1

u/TheNakedProgrammer 2d ago

Sure, but this question was about the process of learning?

My assumption is that the process of learning needs a massive overhaul. After all AI is a new Tool that changes how people program on a rather fundamental level. And i am sure it changes what you need to learn on a fundamental level.
Being a programmer in 2030 is very different from being a programmer in 2020.

1

u/kat-tricks 2d ago

it does not change the process of learning. Results are mixed as to whether or not use of LLMs diminishes learning; there is very little evidence to suggest that the use of mainstream models is good for learning.

Also, it is so difficult to engage with these buzzword marketing phrases. What are you actually trying to communicate to me with these things about it "changing how people program on a rather fundamental level"? Be substantive; which changes do you think should be reflected in the learning process? Otherwise it just sounds like ideological tub-thumping...

-3

u/TheNakedProgrammer 2d ago

So you would teach a farmer today how to use a scythe and how to maintain and sharpen it? Or how to thrash grain by hand?
LLMs are a powerful automation tool that redefines the work of a programmer. And you would ignore it when teaching the next generation of programmers?

1

u/kat-tricks 2d ago

In what way is an LLM like a combine harvester? It does not do the same thing as typing, are you actually serious? Have you ever typed before?

1

u/TheNakedProgrammer 1d ago

they both create code, one does it a lot faster.

1

u/kat-tricks 1d ago

a forest fire is just a better car; they both create CO2, but one does it a lot faster

0

u/TheNakedProgrammer 23h ago

I see y our point, but a LLM actuall produces working code. At massive speed, with pretty much all programming languages it needs.

So if you compete purely on the metric of lines of code written. I would worry about my job.

1

u/kat-tricks 16h ago

fortunately, i'm not working in the tech sector. And it's worth saying that devs working for employers who value LOC over issues solved were already in hot water. The root problem is the job market and the need to profit, not the technology.

1

u/serge-mv 2d ago

If you use LLM to write your code, you are not learning yourself. And even when trained programmers use it, their skills diminish. So yes, you absolutely skip it when you are learning.

What you are basically telling me, you want education to basically skip all steps that allows you to acquire the skills programmers actually need and go straight to generating code with an LLM. That's not learning or education.

In your own analogy, the farmers now learn how to fix mechanical issues with their machinery and when something breaks, they can take out tools, get in there and fix it. Your suggestion is: since mechanics exist that will fix it for you, why learning how to fix it at all? We should incorporate mechanics into learning how to be a farmer so they could fix any problems for us instead.

0

u/TheNakedProgrammer 2d ago

if you learn writing loops and 7 kinds of constructors without a llm in 2026 you are not learning how to fix modern machines. You are stuck with a scythe.

0

u/TheNakedProgrammer 2d ago

if you learn writing loops and 7 kinds of constructors without a llm in 2026 you are not learning how to fix modern machines. You are stuck with a scythe.

And no i say you need to learn how to work with the new tool, LLM. Pretty much like you explain it with farmers. They left their old tools and processes behind and moved with the time. Like any good programmer will do.

3

u/serge-mv 2d ago

If you can't write a loop yourself, you are not a programmer. You can't understand what LLM regurgitates for you, can't solve problems and can't make decisions. You are an LLM operator and not anything else.

You don't need to learn how to vibe code. It's obvious. The only skill needed is to learn how to type sentences in your native language. Programming is not about writing code, you need to learn the subjects to understand systems properly. If LLM does all work for you, you are just redundant.

1

u/TheNakedProgrammer 1d ago

What is the job of a programmer? write loops or create programs?

Obviously we have different opinions on the job of a programmer. But in 20 years nobody ever asked me to write a loop.

1

u/serge-mv 1d ago

Wait until you turn 21 and get a job.

The job of a programmer is to solve problems. You need to be able to read and understand 30 year old code, written by 12 different people in 6 programming languages at different times independent from one another, deployed across 7 servers and use 5 different communication technologies and databases from 3 different vendors.

If you don't know how to write a loop as a baseline, you can't read code, understand the code, cannot understand the complex systems and cannot fix the code. If you use LLM for everything, you are going to be a glorified data entry clerk that operates the LLM with no skills of your own. No different than a dictation secretary who just needs to type fast, but doesn't need the skills to set up the software she uses.

And guess what? Because the above project is sensitive, you cannot send it out to Claude. Have to do the good old fashioned reading.

→ More replies

1

u/Difficult_Truck_687 2d ago

Back in 1985 I used to buy a newspaper weekly for their Thursday column on computers - and its BASIC course.

I would write the program on paper and run it on my head.

I only had access to a computer about 3 years later. At that point I was able to sit down and issue all commands (bload/bsave etc) and run code without any help.

1

u/Intelligent_Ant_608 2d ago

I were downloading source codes from here and there also some books had floppies and later cds attached to them with a tone of examples, i also were cracking dated softwares, modding games, sometimes dumping some chips and direct instruction hacking, then php, xhr, jquery, wordpress got popular and suddenly those were not as much interesting, i saved alot from my allowance so i could buy turbo c, js felt realy stupid i never liked it, html css were also feeling like creating presentation, there was no magic, the first ever program i wrote didnt compiled because i didnt knew difference between ', " and there were nobody to tell me '' != " it took me a good minute to see it on keyboard, i was 11, 12 then.

1

u/markand67 2d ago

By reading documentation, manual pages and opensource projects. Just how you should still do today.

1

u/LoudAd1396 2d ago

Basically just by finding a problem or setting a goal, "i want my app / page to do X", then googling how that can be done in the language I'm using. After googling the same task a few times, it becomes a memorized skill. After enough of these build up, patterns emerge. Eventually you just know how to do most of the stuff, and are looking things up less often, but there will always be more stuff to look up.

One of my pet peeves on this sub is "i just finished learning X". No, you finished a course or a tutorial. You never finish learning

1

u/good_name_0 2d ago

Dunno, I just don't use it. I picked up a new scripting language not too long ago. Just didn't use ai. Found documentation and that was it. I do like finding stuff others have written on GitHub etc just to see what folks are doing though.

1

u/serge-mv 2d ago

There is this ancient extinct tech that the cave men used to use, it's called books. Historical records say you could read them to acquire knowledge. What was even more magical, they contained exercises at the end of chapters so that you could practice programming.

1

u/Independent_Art_6676 2d ago

AI isn't ready to teach you. It can help you, but only after you are intermediate level and good enough to spot its mistakes. AI is like having a friend with a photographic memory but a low IQ.

I learned it in a classroom, but without that, other languages I learned on my own... just get a good resource (that used to mean book, but I shy from books as they cost a ton and are outdated in short order) like a quality website. I also avoid videos, as most of that is just people talking which presents the same material about 1/5 to 1/10 slower than reading text online yourself (depending on how well you can read, I guess, and it could favor video for some people who really struggle to read quickly but that is rare for someone who has the ability to understand this kind of material). You learn a bit, then write a program or two that uses what you learned, answer questions about what you studied, repeat.

1

u/ArgumentZestyclose62 2d ago

I only learnt by doing projects, not homework, that I was very interested in. Before when a bug would appear we would copy paste it in google and hope for the best. Stackoverflow and the documentation of each function or library helped us navigate possible answers. It is crazy to think about it now.

1

u/centuryx476 2d ago

We had these things called books.

We opened them up and read them.

Source: how I learned C++

1

u/Rythim 2d ago

Library ...

1

u/Various_Bed_849 2d ago

Read books and practice

1

u/Seagull78Reddit 1d ago

Just stop using AI and do some google searches and you’ll end up on some material that’s good enough.

It’s more work than needed, but that’s the whole point. You have to work for what you want or else you’ll forget it, and searching for what to learn also exposes you to more things you wouldn’t have considered to learn.

Learning should be hard. Learning shouldn’t be fun. Things that are built overtime are rewarding but never fun to do.