Live data from Hacker News

Ask HN: The Required Fundamentals for Self-Taught Programming

news.ycombinator.com

41–50 of 57 posts

Re: Ask HN: The Required Fundamentals for Self-Taught Programming

#41
Learn some C, and dabble in assembly, because that's what the computer is actually doing under the hood. Every operating system you probably use is written mostly in C. It exposes you to the gory details of computation: memory management, function calls, fiddling with the stack, etc. The fundamentals are simply what the computer is doing that usually gets abstracted away from you. Learn how your computer actually works, not the Pollyanna version presented by high-level languages. Sure, use Python for playing with trees and graphs, but spend time down in the dirt with the language that still underpins a large amount of software.

Re: Ask HN: The Required Fundamentals for Self-Taught Programming

#42
post #5

If you can get access to ChatGPT, use it as a learning resource. Ask it to act as a mentor that is teaching you how to program, ask it to give you an problem to solve, and give it a shot. Then paste back your code you wrote (keep it simple) and ask it to explain your approach, provide advice, describe patterns, and explain tradeoffs between different techniques. Initially, learning how to talk about code is important…

[flagged]

Re: Ask HN: The Required Fundamentals for Self-Taught Programming

#43

Data structures and algorithms. I don't have a formal education either but after 25 years of programming, IMO everything boils down to data structures and algorithms - the former more so than the latter. I think everything else comes from experience gained from on the job training because you need to train the pattern matching part of your brain. A good foundation in data structures and algorithms simplifies that pro…

+1 for learning datastructures + algorithms in a structured way. Other posters are saying "just build stuff and you will learn", which isn't wrong, but there's a reason every CS student learns data structures and algorithms first. They are literally the building blocks for everything else. Then, once you've got that foundation, the "just build stuff" advice is sound but if you skip that step you will always be at a d…

Do you know of a more beginner friendly book?

Re: Ask HN: The Required Fundamentals for Self-Taught Programming

#46
post #27

If you really want to learn programming. 1. Buy SICP and put it on your book shelf. 2. Don't read it, instead read random StackOverflow posts talking about the content. 3. Spend the next 10-50 years trying to understand what people are talking about on various related forums. 4. Add more legendary books to your shelf over these 10 years, like The Art of Computer Programming. Fawn over their greatness. DON'T READ THEM…

Feeling slightly called out right now

Re: Ask HN: The Required Fundamentals for Self-Taught Programming

#48
There are so many books on learning a programming language, that I'll ignore that topic.

Someone else mentioned data structures and algorithms. Algorithmic complexity is particularly important. The Algorithm Design Manual is a great book in this space.

As a low level developer, I've also found the following topics way more useful than I expected:

- Finite State Machines (These are the basis for everything from inter-device communication protocols to simple video game AIs.)

- Binary arithmetic and boolean logic (Rarely relevant, but absolutely essential for diagnosing certain types of parsing errors, buffer overflows, etc.)

- The Halting Problem and P = NP (Useful when a manager tries to get you to do something that is actually impossible.)

I learned these from intro to Computer Science classes in university, but honestly Wikipedia is probably a good place to start. I think the (middle grade) book Lorem Ipsum also covers most of these concepts.

Re: Ask HN: The Required Fundamentals for Self-Taught Programming

#49
post #20

Build projects and ship them. There's no better way to learn. That could mean web applications deployed online, or CLI tools that people can install, or data science projects that result in a report you can show people, or mobile apps shipped to an App Store. The key thing is to build actual working software, and ideally to get that to a place where other people can try it out. This will help you learn SO much, and w…

Agree 100%.

I’ll add: build whatever interests you

The project you’ll work on will teach you more than the one you abandon.

Some of the most random things I’ve done purely out of curiosity, which were objectively not valuable at the time, have paid dividends decades later.

Like writing AOL chat room bots in the late 90’s and accidentally learning a lot about the Windows API.

Re: Ask HN: The Required Fundamentals for Self-Taught Programming

#50
My suggestion would be to experiment with languages until you find one that you like more than the others and replicate the functionality of someone else’s software. Free yourself of the need to come up with a good idea.

If you choose a language that’s not widely used or no one is hiring for, don’t worry about it. You’ll find that the concepts you learn in any language are portable to all languages. Once you learn those, it will be easy to pick up new languages when you need to.

Bonus advice: when you find a language you’re good at, stick with it and get really good at it.

Post reply on HN