Live data from Hacker News

Ask HN: The Required Fundamentals for Self-Taught Programming

news.ycombinator.com

1–10 of 57 posts

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

#2
If you can already read code... just start a small project of your own, I would say. Pick the language you are most familiar with and create something. Be patient, learn as you go. Learning to code requires a lot of time and dedication, but it is a good experience!

What is your language? Maybe people here could give you ideas of a good first project to try :-).

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

#3
post #2

If you can already read code... just start a small project of your own, I would say. Pick the language you are most familiar with and create something. Be patient, learn as you go. Learning to code requires a lot of time and dedication, but it is a good experience! What is your language? Maybe people here could give you ideas of a good first project to try :-).

I hope the OP is okay with me getting in on this.

I just picked up _Learning Go: An Idiomatic Approach to Real-World Programming_, 2nd ed, based on its positive reviews. I'd like to read it and create a small project (for example, a simple backend for a personal website).

Any other suggestions for a good Go project?

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

#4
You need problems to solve, but most importantly, problems that are highly relevant to you and your interests so you won't give up easily if they become unexpectedly difficult.

You'll be forced to learn new approaches, new tools, perhaps even new languages to solve these problems if they're challenging enough, and don't worry, you'll almost always assume something is easy when it turns out to be a lot harder than you could ever imagine.

Get exceedingly good at breaking down difficult problems into smaller steps you can actually achieve. Try and estimate how much time these steps will take so over time you can get better at estimating how much work is involved in something, which can inform which approach to take or which tool to use.

Above all else, when you learn something and want to know more, learn both in terms of deeper fundamentals, but also in a more strategic sense, like how it is applied, and what are the ramifications of this knowledge, how it fits into the bigger picture.

Remember, it's abstractions all the way down, but also all the way up!

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

#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, then identifying patterns and approaches.

Coding isn't about memorizing things, it's about understanding the advantages and disadvantages of different approaches.

Have fun!

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

#6
teachyourselfcs.com has a neat collection of textbooks for CS fundamentals.

Though, these fundamentals are more theoretical (though worthwhile). You may want to just build a couple of things first to get some muscle memory.

No need to finish them, as long as you make it over a few hurdles before you move on.

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

#7
Looking 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 solving problems and learning what you need to know for that problem. You'll build good experience and though that experience you'll learn a lot.

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

#8
If you can read the code next step would be to start writing the code. Write a code of the program that you are interested in and it does not really matter which kind of program you will develop. If you are interested in learning more about fundamentals (which is really good) you can do that in parallel to writing the code.

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

#9
The traditional reply is complete either of these books and you'll be further than even an average Comp Sci BA:

  - Structure and Interpretation of Computer Programs
  - How to Design Programs (easier)
In reality, it strong depends on your specific domain and how old your company is. Doing embedded projects at home vs. quickly prototyping systems in Ruby vs. modifying an API for a large SaaS vs. lowering latency for trading vs. ensuring compliance at a bank... The demands are all very different, yet generally we don't write algorithms or implement data structures too often. Our languages and libraries typically offer optimized versions, we just have to know when and why to use them. And after it's built, adding extra features won't change that model.

The way everyone actually learns is by doing many projects, like an apprentice of old. Such a book could interest you (after) though: https://aosabook.org/en/index.html#500lines

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

#10
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…

I see, thanks!
Post reply on HN