Ask HN: The Required Fundamentals for Self-Taught Programming
21–30 of 57 posts
Re: Ask HN: The Required Fundamentals for Self-Taught Programming
#22Re: Ask HN: The Required Fundamentals for Self-Taught Programming
#23Looking for fundamentals to get you ready as a self taught programmer is going about it in the wrong direction. Pick something you want to do and go do it. When you run into roadblocks try to figure out how to solve them and when you get too stuck then ask the question "what are the required fundamentals I'm missing in order to solve this problem". You'll find you will rarely need to ask that question, just keep solv…
SICP was helpful in peeling back abstraction layers but I lost interest a quarter of the way through. I found The Rust Programming Book[0] really approachable coming from a nodejs background. Rust's compiler is so helpful I learned more about CS just working through the exercises and making mistakes. Rust really holds your hand but the book describes all of the "why" behind Rust's memory safety. Completely changed how I structure programs. After the Rust book I dove right into personal projects in Swift and fundamentals I learned in Rust translated very well.
[0] https://nostarch.com/rust-programming-language-2nd-edition
Re: Ask HN: The Required Fundamentals for Self-Taught Programming
#24Re: Ask HN: The Required Fundamentals for Self-Taught Programming
#25Data structures are how programmers describe reality in the Wittgenstein/Sapir-Whorf sense and they shape our understanding as much as we use them to encode it. The right data structures drastically simplify problems and the wrong data structures turn them into nightmares of bugs and spaghetti code. Database schemas are the natural extension of this at the application, rather than module, level.
I don't have a specific recommendation because data structures is such a broad field, but an MIT OCW data structures and algorithms course is a good place to start. Oh and the book Designing Data Intensive Applications for a higher level overview of how data structures and algorithms are used in the field.
Re: Ask HN: The Required Fundamentals for Self-Taught Programming
#261. Genuine interest
2. Ability to focus/concentrate and overcome frustration (there will be plenty)
3. Understanding of the basics: conditionals, iteration, functions and function calls, variables, basic input/output in any form. I would add on memory/pointers here, as understanding it will greatly improve your comprehension of what's going on even if you use a language that attempts to abstract that away.
It's worth finding a tutorial on these and do as many exercises as necessary. I'm not going to recommend any specific language as I think they all are bad for beginners in their own ways. You need not concern yourself with practicality or popularity of the language you pick though as your focus is on the basics. These skills are transferable, important and yet a tiny kernel of all your future progression. Then you'll be able to combine these basics to build some simple programs. Print a string backwards, guess the number, guide a cursor on a canvas by keyboard or similar.
From that point you can branch out to explore and comprehend actual CS concepts, and start with writing small practical applications.
Re: Ask HN: The Required Fundamentals for Self-Taught Programming
#271. 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.
5. Go on long walks, take spirit journeys to harsh natural locations, put your life in danger while you meditate on the concepts.
6. Blog profusely about your experiences.
7. Optional: actually write code.
Re: Ask HN: The Required Fundamentals for Self-Taught Programming
#28Use c to build some very minor things, so you can get a better feel for how memory works.
Don't build any mobile apps, you'll go down a rabbit hole. Don't worry about algorithms or any theoretical books for at least a year.
Re: Ask HN: The Required Fundamentals for Self-Taught Programming
#29It's become very popular to learn how to assemble code by following step-by-step tutorials and watching YouTube demonstrations. It does get the job done for a lot of people, but it usually doesn't develop very strong or deep foundational knowledge. As a result, people who don't make a point to leave that world generally end up stuck under a low skill ceiling.
So whatever suggestions you find in other replies here, favor books (and perhaps deep courses) over anything more shallow. And among those books, favor those that are heavy on prose and explain things over those that just guide you through doing things. And then when you get the books, sit down with them and really work through them.
Re: Ask HN: The Required Fundamentals for Self-Taught Programming
#30Start a greenfield project. Something that isn’t huge in scope. A basic text editor, a mini redis clone, an asteroids game. Try something harder for your next project.
Theory-wise I think type theory is a good start. Along with with Software Abstractions; a great book on the design of software systems using formal methods. And a book or two on data structures and algorithms. Discrete maths essentially and combinatorics. That will get you far.